1. apkファイルを解凍
逆コンパイルしたい apkファイルを用意したら、まずは解凍します。
対象のAPKファイルをzipファイルとして解凍し、下記のファイルおよびディレクトリを得る。
META-INF
res
AndroidManifest.xml
classes.dex
resources.arsc
2. jarファイルを取得
jarファイルの取得方法が Windows でのやり方しか見つからなかったので、
とりあえずWin環境でやりました。
apkファイルを解凍したら classes.dex というファイルが見つかるので、こいつを dex2jar というツールで jarファイルを取得します。
まずは、dex2jar を入手します。
dex2jar:http://code.google.com/p/dex2jar/downloads/list
dex2jar を入手し解凍したら、dex2jar.bat を環境変数でパスを通します。
その後、コマンドプロンプトで以下のコマンドを実行します。
> dex2jar classes.dex
これを実行すると classes.dex.dex2jar.jar というファイルが取得できます。
3. classファイルを取得
classes.dex.dex2jar.jar を解凍ソフトでを解凍して、classファイルを取得します。
4. jadをインストール
jad というソフトを使うと classファイルから javaファイルを取得することができます。
MacでもできたのでMac環境での手順で記載します。
まずは、jad を入手します。
jad:http://www.varaneckas.com/jad
jad をダウンロードした場所に移動して、ターミナルで以下のコマンドを実行してインストールします。
$ sudo mv ./jad /usr/bin/ Password: $ sudo chmod 755 /usr/bin/jad $ jad
5. classファイルの逆コンパイル
ターミナルで以下のコマンドを実行して、classファイルを逆コンパイルして javaファイルを取得します。
$ jad -8 -d src -s .java -r ~ **/*.class
6.バイナリ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
0 件のコメント:
コメントを投稿