他人様の Android アプリを覗いてみよう
いつの頃からか知らないけど、Android SDK に dexdump.exe が付いてることに気付いた。
昔は、Device 側にしか無かったので、disassemble しようと思うと、Windows 上で classes.dex を抽出して、Device 側に push して、dexdump して、Windows 側に pull する、という面倒なことが必要だった。
(たぶん、Device 側にあったというのも DevPhone だったからだと思う。市販 Device の ROM には入ってないと思われる。(少なくとも Desire HD には入っていない。))
でも、Windows 側にあるならメチャ簡単じゃん、ということで、Windows 上で disassemble する方法のメモ。
■他人様の Android アプリを取り出す
/data/app/* か /data/app-private/* にアプリの apk が入っているので、それを
adb pull /data/app/hoge.hige.hage.apk .
として取り出す。
rooted じゃないと取り出せないはず。
/data/app/* の方は、ファイル名(たぶん、パッケージ名-1.apk)が分かれば取り出せる気もする。
■classes.dex を取り出す
取り出した hoge.hige.hage.apk を hoge.hige.hage.zip に名前を変えて、解凍して、classes.dex を取り出す
device 側の /data/dalvik-cache/* にも *.dex があるから、これを取り出した方が早いかも?
■dexdump.exe にかける
<SDK_DIR>\platforms\android-8\tools\dexdump –d –f –h classes.dex > undex.txt
とするだけ。
<SDK_DIR> は、c:\android-sdk とかインストールしたところ。
オプションは適当に。
<SDK_DIR>\platform-tools に path を通してると思うけど、ここにある dexdump.exe はちゃんと逆汗してくれない気がする。ので、フルパスで書いて platforms 以下のを使った方がいい。
最近は、ProGurard かけられてるのが多いから、簡単には理解できないけど、まぁ、勉強にはなると思う。
とりあえず、invoke- (invoke-virtual, invoke-static, invoke-super, invoke-direct とかがある)で検索すれば、処理の流れはわかるよ。
#hoge, piyo, fuga, hogera とするのが一般的だよな。
#hoge, hige, hgae は変だと思う。結構使うけどw 見分け難いし使うべきじゃないよね。
#やっぱ、foo, bar, baz, qux だよなとは思ふ。
| 固定リンク
| コメント (1)
| トラックバック (1)
最近のコメント