APKInspectorでAndroidアプリを解析してみた
今回は簡単なアプリを自分で作って、Androidアプリの解析ツールであるAPKInspectorでどんなものが表示されるのかを見てみました。
環境
- Android Reverse Engineering Virtual Machine
- APKInspector
Android Reverse Enginnering Virtual Machineとは?
名前の通り,Androidアプリの解析に必要なツール10種類が入った仮想マシンのイメージです。VirtualBox形式のものが配布されていますので、おれはVMWareだぜっ( ー`дー´)キリッって人はNHCとか使って変換してから使ってください。
それからこのVMはキーボードの設定がデフォルトでフランス語になっているのでUSなりJPなりに変更してから使うことをお勧めします。だいぶキー配列が違うのでびっくりしました。
ちなみに、APKInspectorはPythonで開発されているので、Mac上でも動作させることが可能です。しかし、まだβ版で動作環境を準備するのが非常にめんどくさいので、(自分はPyQT周りでハマって諦めた)上記のVMイメージを使うことを強くおすすめします。
Ubuntuだと何やら楽っぽいけど。。。
APK Inspector の起動方法
APKInspectorのプログラムは、ホームディレクトリのtools/apkinspectorの中にあります。GUIからポチポチっと起動は現状ではできないので,ターミナルから上記のディレクトリに入って以下のコマンドで起動してください。
python startOT.py
すると次のようなWindowが立ち上がってくるはずです。
apk ファイルを解析してみる
立ち上げたAPKInspectorを使ってサンプルアプリを解析してみましょう。よくあるHello Worldですね。
Androidアプリのプロジェクトフォルダから、作成されたAPKファイルをツールの入ったVMに移して、APKInspectorに読み込ませます。
解析が終わると、次の画像の様にAndroidManifestファイルが表示されます。特に難読化とかはかけていないので、元のものがそのまま表示されているかと思います。
マニュフェストファイルの内容以外にも、JavaのソースコードやDalvikのコード、Javaのバイトコード等が表示できます。
難読化とかはかかっていないので、どれも結構綺麗に表示されました。
CFG(制御フロー図)も表示できます。線の色とかは何を表しているのだか全くわかりませんが。
Javaのコードなどは、たまに表示されないことがあります。
何回もファイルビューで.javaのところをクリックするかAPKInspectorを終了してもう一回やり直すと表示されたりします。
おわりに
APKInspectorを使って簡単なAndroidアプリの解析を体験してみました。
ただ、解析対象が簡単すぎるアプリなので、CFGとか簡単過ぎてあまりおもしろくなかったかもしれませんね。もうちょっと大きなアプリを作って試してみたいなと思います。
次はこのVMの中に入っている動的解析ツールのDroidBoxを試してみたいと思います。
参考文献
- http://code.google.com/p/apkinspector/
- http://www.youtube.com/watch?v=X538N-x3UUY
- http://www.glamenv-septzen.net/view/972