22

重複の可能性:
Android: APK ファイルからソース コードを取得する

誰かが私の Android APK ファイルを逆コンパイルして、私のパッケージで宣言されたパブリック変数または定数を確認することは可能ですか?

public static 定数として定義した共有キーが公開されます...

4

4 に答える 4

11

はい、 apk を逆コンパイルすることは可能です。

難読化のレベルによっては、時間がかかる場合がありますが、熱心な/曲がった人が最終的に逆コンパイルします。

次のようなツールを試すことができます

ソース: http://geeknizer.com/decompile-reverse-engineer-android-apk/

更新 1

さらに 2 つのオプションがあります。

@ AndrewRukinが提案

更新 2

別のツール: jadx

于 2012-09-04T08:30:20.247 に答える
10

コードの難読化を解除すると (難読化されたコードの読み方についての洞察が得られるビデオ チュートリアルがあります)、次のようなすべてのハードコードされた値を確認できます。

private String key = "Au8aujEWS(jol#9jSd9";

ただし、変数名は表示されません。

private String a = "Au8aujEWS(jol#9jSd9";

サニーが言及したようなツールを使用することで、すべてのコードを元の状態に近づけることができます。

例を挙げましょう。次の元のコードがあるとします。

public class MainActivity extends Activity { 
    private String key = "Au8aujEWS(jol#9jSd9";

    public void onCreate(Bundle savedInstance) {
        //Some code here
    }
}

public class OtherActivity extends Activity { ... }

コンパイルし、逆コンパイルして Java コードに戻すと、次のようになります。

public class A extends B {
    private String a = "Au8aujEWS(jol#9jSd9";

    public void a (C b) {
        //Some code here
    }
}
public class D extends B { ... }

また、十分な知識とリファクタリング ツールを使用することで、コードの難読化を解除することができます。そのため、十分な献身と勤勉さがあれば、人々はすべてのコードを見ることができます。


クライアント アプリケーションにコード化されているものに完全に依存するセキュリティを作成しないことを強くお勧めします。もちろん、保護しようとしている情報にハッカーがアクセスする可能性を与えないことが、状況にとってどれほど重要かによって異なります。

于 2012-09-04T08:40:59.293 に答える
0

はい、Android APK は簡単に逆コンパイルできます。コードが難読化されていても、パブリック変数、定数、およびそれらの値は、逆コンパイルすると表示されます。

コードを難読化すると、変数名が変更されます。変数の値は変わりません。難読化は暗号化とは異なります。そのため、コードを難読化してもコードは暗号化されません。

通常のコードの例:

String str = "This is a string.";

難読化されたコードの例:

String a = "This is a string.";

上記のように、変数名は「str」から「a」に変更されましたが、その値は同じままです。難読化は、変数名を短い非論理名に変更してファイル サイズを小さくし、コードを理解しにくくすることで機能します。

私がしていることは、コード全体を難読化し、キーを暗号化し、プログラムのどこかで復号化することです。断固たる忍耐強いハッカーが私の鍵をクラックできることは理解していますが、それは彼にとってより困難になるでしょう。

于 2012-09-04T08:56:06.593 に答える
0

はい、可能ですが、それほど単純ではありません。誰かがそれを行うには、本当に強い理由が必要です。

必要なセキュリティの程度に応じて、最終的な文字列に保存する代わりに実行時にキーを作成するか、インターネットからダウンロードします (ただし、この方法はより安全にする必要があり、価値がない場合があります)。他の外部サーバーがアプリの代わりに作業を行います-特に支払いについて話し、公開鍵を保存する場合-その場合、鍵はアプリに埋め込まれません.

また、前述の ProGuard などの難読化ツールを使用して、ハッカーの生活を困難にすることを忘れないでください: http://developer.android.com/tools/help/proguard.html

于 2012-09-04T09:05:12.917 に答える