Android文字列は、進行中の難読化後に乱数に変わります
質問
Eclipseの新しいProguardツールを使用して、アプリケーションを難読化しました。私はそれを使用してそれを逆コンパイルしました dex2jar と jd-gui 何が起こったのかを調べる。
Rクラスのすべてが、次のような乱数に変換されていることに気付きました。
new SimpleCursorAdapter(localActivity, 2130903058, localCursor, arrayOfString, arrayOfInt);
2130903058はレイアウトファイルでした。文字列アレイは同じ治療を受けます。
分解されたコードにRクラスはありませんが、どこに行ったのですか?元の文字列への参照はどこにありますか?
解決
すべての参照は整数です。あなたが見たら R.string
, 、すべてのメンバーがいることに気付くでしょう int
s。これは彼らがそうだからです ポインター 実際の文字列に。例えば、 android.R.string.cancel
いつも 17039360
, 、文字列を指します Cancel
. 。 Proguardが行うことは、これらの参照をそれらが表す実際の数値に置き換えることです。 android.R.string.cancel
, 、それを置き換えます 17039360
.
編集: もう必要ないため、Rクラスはありません(すべての参照が置き換えられました)。
所属していません StackOverflow