私は DexGuard と Proguard を初めて使用します。私は彼らのドキュメントとサンプル例を調べていました。それらには、アプリケーションが改ざんされているかどうかを検出するのに役立つ dexguard_util があり、実行されるはずの環境で実行されているかどうかを検出するのにも役立ちます。このドキュメントでは、この改ざんと環境の検出を、次のコード dexgaurd-project.txt を使用して暗号化することを提案しています。
-encryptclasses A$D
-encryptstrings A$D
以下は活動です
public class A extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
new D().c();
}
private class D
{
public void c()
{
//some code to which detects the tampering and environment and takes action accordingly
}
}
}
ハッカーがこのコード行を挿入したらどうなるでしょうか。
public class A extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//code commented by hacker
//new D().c();
}
private class D
{
public void c()
{
//some code to which detects the tampering and environment and takes action accordingly
}
}
}
その後、私のアプリケーションは、大きな問題だと思われるテストを実行せずに実行されます。リバースエンジニアリングがどのように機能するかについての私の理解は間違っていますか、これを行うためのより良い方法があります. 存在する場合は、これを行うより良い方法を共有してください。前もって感謝します。パブリック クラス A はエントリ ポイントであり、progaurd-project.txt でこのコマンドを使用して保持されるため、暗号化できないことに注意してください。
-keep class somepackage.A