2014年1月15日水曜日

apkを解凍してjavaコードまで持ってく

apk => jar => java

Androidアプリのリバースエンジニアリングの手法としては、apktookでsmaliを作るのが良く知られてるが、よりソースに近い状態にするのが以下の方法。

ルート化端末などを用いて、apkファイルを引っこ抜ける状態なのが前提。

d2j-dex2jar、jadというツールを使って、apkからjava(っぽい)ファイルを取り出す。
$ unzip hoge.apk
で解凍。classes.dexを得る。

$ d2j-dex2jar classes.dex
classes_dex2jar.jarができる。
$ unzip classes_dex2jar.jar
で、.classファイルがソースツリー状に大量にできる。
src/ディレクトリ用意して、以下コマンドでjavaファイルにできる。
$ jad -d src/ -s java -r **/*.class
これで、難読化してないと普通に読めちゃう。