2014年9月13日土曜日

AndroidのapkファイルをWindowsでリバースエンジニアリングしてみた

Androidのapkファイルをリバースエンジニアリングしたときに手順や利用するツールが
色々とあったので、今回試した内容を残しておこうと思います。

利用したツール

dex2jar
JD-GUI
android-apktool

apkファイルは拡張子はapkですが、実体はzipファイルなので拡張子をzipに変更して解凍できます。
今回知った内容はjarファイルに変換してソースコードを閲覧する方法とresourceフォルダのxmlや
AndroidManifest.xmlを閲覧する方法になります。

jarファイルに変換してソースコードを閲覧する方法

ツールはdex2jarとJD-GUIを利用します。

apkファイルをzipファイルとして解凍するとclasses.dexに閲覧したい.classファイルがあるのですが
このままでは閲覧できないのでdex2jarを利用してjarファイルを生成します。
dex2jarのサイトからdex2jar-0.0.x.x.zipをダウンロードして任意のフォルダに解凍します。

dex2jar Webサイト
dex2jar

解凍したフォルダにあるdex2jar.batをコンソールから実行します。
C:\> C:\dex2jar-0.0.x.x\dex2jar.bat C:\AndroidApp\classes.dex
実行するとclasses.dexファイルがあるフォルダにclasses_dex2jar.jarファイルが作成されます。
このjarファイルをJD-GUIというアプリケーションで閲覧します。
JD-GUIのサイトのDownloadからWindowsのjd-gui-0.x.x.windows.zipをダウンロードして任意の
フォルダに解凍します。

JD-GUI Webサイト
JD-GUI

解凍したフォルダにあるjd-gui.exeを起動し出現するウィンドウにclasses_dex2jar.jarファイルを
ドラッグ&ドロップすることでclasses_dex2jar.jarファイルの中身を閲覧できます。


resourceフォルダのxmlやAndroidManifest.xmlを閲覧する方法

ツールはandroid-apktoolを利用します。

apkファイルをzipファイルとして解凍することでresフォルダやAndroidManifest.xmlファイルが
生成されますが、このままではバイナリ形式で閲覧することは出来ません。
xmlファイルなど本来テキスト形式で閲覧できるようにandroid-apktoolを利用します。

android-apktoolのサイトからapktool-install-windows-r05-ibot.tar.bz2、apktool1.5.2.tar.bz2を
ダウンロードして任意のフォルダに解凍します。

android-apktool Webサイト
android-apktool

インストール方法もありました。
解凍した後は1つのフォルダにaapt.exe、apktool.bat、apktool.jarをまとめます。
apktool.batをコンソールから実行します。
C:\> C:\apktool1.5.2\apktool.bat decode C:\AndroidApp.apk
実行するとapktool.batファイルがあるフォルダにapkファイルをデコードしたフォルダが生成され
xmlファイルなどテキスト形式で閲覧できるようになります。