tool

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が立ち上がってくるはずです。

f:id:kawa_xxx:20121124231124p:image:w360

apk ファイルを解析してみる

立ち上げたAPKInspectorを使ってサンプルアプリを解析してみましょう。よくあるHello Worldですね。

f:id:kawa_xxx:20121124231125p:image:w360

Androidアプリのプロジェクトフォルダから、作成されたAPKファイルをツールの入ったVMに移して、APKInspectorに読み込ませます。

解析が終わると、次の画像の様にAndroidManifestファイルが表示されます。特に難読化とかはかけていないので、元のものがそのまま表示されているかと思います。

f:id:kawa_xxx:20121124231126p:image:w360

マニュフェストファイルの内容以外にも、JavaのソースコードやDalvikのコード、Javaのバイトコード等が表示できます。

難読化とかはかかっていないので、どれも結構綺麗に表示されました。

f:id:kawa_xxx:20121124231127p:image:w360

CFG(制御フロー図)も表示できます。線の色とかは何を表しているのだか全くわかりませんが。

f:id:kawa_xxx:20121124231128p:image:w360

Javaのコードなどは、たまに表示されないことがあります。

何回もファイルビューで.javaのところをクリックするかAPKInspectorを終了してもう一回やり直すと表示されたりします。

おわりに

APKInspectorを使って簡単なAndroidアプリの解析を体験してみました。

ただ、解析対象が簡単すぎるアプリなので、CFGとか簡単過ぎてあまりおもしろくなかったかもしれませんね。もうちょっと大きなアプリを作って試してみたいなと思います。

次はこのVMの中に入っている動的解析ツールのDroidBoxを試してみたいと思います。

参考文献

 

COMMENT

メールアドレスが公開されることはありません。