<< Android-Note
APKのリバースエンジニアリング
自分で作ったアンドロイドアプリのAPKがリバースエンジニアリング(解析)されたときにどのように見えるのかを検証する方法について紹介します。
APKファイルの構造
APKファイルはzipファイルと同じ構造を持っているので拡張子を.zipに変えればすぐに解凍できて中身が見れてしまいます。そして解凍したフォルダには次のフォルダやファイルが含まれています。
- META-INF(フォルダ)
- res(フォルダ)
レイアウトファイルなどのxmlファイルや画像や音声などのリソースが格納されています。
- AndroidManifest.xml(ファイル)
アプリの設定が書かれたファイルです。
- classes.dex(ファイル)
このファイルの中にjavaのソースコードが機械語に変換されたものが入っています。
- resources.arsc(ファイル)
リバースエンジニアリングをする際はclasses.dexに書かれた内容を元のソースコードに変換してそこからどのような処理をしているのか読み取ります。
ソースコードの解析
まず必要なツールをインストールします。次の2つです。
- dex2jar
dexファイルをjarファイルに変換するツールでhttp://code.google.com/p/dex2jar/からダウンロードできます。
- java Decompiler
jarファイル中のclassファイルから元のソースコードを読めるようにするツールでhttp://jd.benow.ca/からダウンロードできます。
この2つをインストールして利用できるようにしたら解凍したclasses.dexを次のようなコマンドでjarファイルに変換します。
C:\Users\xxx\apk_dex\test>dex2jar.bat classes.dex
完了するとclasses_dex2jar.jarというファイルが出来上がるのでそれをJavaDecompilerで開くかドロップすると次のようにクラスごとのソースファイルを見ることが可能です。
コメントなどは見ることができませんが、変数名やメソッド名やどのような処理が行われているかなどはだいたい知ることができます。
© Kaz