コード内のリテラルの値を隠して、hexdumper や decompiler だけで簡単に追跡できないようにするための主な既存のアプローチは何ですか?
たとえば、これをコーディングする代わりに:
static final int MY_VALUE = 100;
次のようにすることができます。
static final int MY_VALUE = myFunction1();
private int myFunction1(){
int i = 23;
i += 8 << 4;
for(int j = 0; j < 3; j++){
i-= (j<<1);
}
return myFunction2(i);
}
private int myFunction2(int i){
return i + 19;
}
これは、私たちがやろうとしていることのほんの一例です。(はい、知っています。コンパイラはそれを最適化し、定数を事前に計算する場合があります)。
免責事項: これにより追加のセキュリティがまったく提供されないことはわかっていますが、コードがリバース エンジニアリングに対してより不明瞭 (または興味深い) になります。これの目的は、攻撃者にプログラムをデバッグさせ、時間を無駄にすることです。楽しみのためにやっているということを覚えておいてください。