« 2011年1月 | トップページ | 2011年4月 »

2011年2月の2件の記事

2011.02.19

他人様の 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)

2011.02.02

Android Emulator から PC 側の localhost へ

Android Emulator から、Google App Engine のローカルサーバ (localhost) にアクセスしたくて、悩んだのでメモ。
#30分以上悩んだよ^^; 呑んでるとダメだわ^^;

Android アプリ上で、new HttpPost(“http://localhost:8080/”) とやっても、Android Emulator の中の 127.0.0.1 に行ってしまう。

Google App Engine の設定で --address=0.0.0.0 として GAE アプリを起動して、Android アプリ側で new HttpPost(“http://0.0.0.0:8080/”) とやっても、host は見つからず。

かといって、--address=192.168.0.1 とかでは、GAE アプリが起動できず。

結局、android developers なサイトを彷徨って、ここのとおり、10.0.2.2 が special alias to your host loopback interface で、PC 側の localhost (127.0.0.1) に繋がることがわかったのでした。

おやすみん。

| | コメント (0) | トラックバック (0)

« 2011年1月 | トップページ | 2011年4月 »