今回は、いくつかのツールを利用することでAndroidManifest.xmlに限らず、各種のバイナリ形式となっているXMLファイルを復元したり、dex形式になっているJavaのバイナリコードをJavaソースコードへ復元する方法をまとめる。
まずは解凍
対象のAPKファイルをzipファイルとして解凍し、下記のファイルおよびディレクトリを得る。
- META-INF
- res
- AndroidManifest.xml
- classes.dex
- resources.arsc
バイナリXMLをテキストXMLへコンバート
AndroidManifest.xmlや、res/layout/*.xmlなどは、AXMLPrinter2.jar(Google Code : android4me)というツールを使用することで元の人間に読むことのできるテキスト形式のXMLへ変換することができる。
このツールはJavaで作成されているため、Java実行環境が必要。コマンドラインより、下記のようにして使用する。java -jar AXMLPrinter2.jar AndroidManifest.xml各種のリソースを表現するXMLであっても同様。
java -jar AXMLPrinter2.jar res/layout/main.xml
バイナリコード(dex)をバイナリコード(class)へコンバート
Javaのバイナリコードをソースコードへ変換するには、2つのステップが必要。1つ目はdexファイルをclassファイルへ変換(ツールの出力はjarファイル)であり、dex2jar(Google Code : dex2jar)というツールを使用。
dexからclassへの変換は、windows用およびlinux用の実行ファイル(dex2jar.bat / dex2jar.sh)が用意されているので、これを使う。出力ファイルはclasses.dex.dex2jar.jar。dex2jar.bat classes.dex2つ目のclassからjavaへの変換は、JD(Java Decompiler)のGUIを使うのが便利。windows版であればjd-gui.exeを起動し、メニューから上記で出力されたclasses.dex.dex2jar.jarを指定する。
すると、下図のようにJavaソースコードとしてclassファイルの中身を閲覧することができるようになる。
参考
0 件のコメント:
コメントを投稿