覚書です.
一応はじめに.
ここに書かれていることを自分が作ったアプリケーション以外で行う場合は、利用許諾に違反すると思われますのでやらないようにお願いします。
デコンパイルすることによって、自分のアプリケーションがどうユーザに提供されているか確認し、それによってクラッキングを防いだりすることによってアプリケーションの品質を向上していく、といった使い方が望ましいと思います。
利用するツール群
今回の手順は Windows10 前提です.
-
apktool
- apktool_2.2.1.jar をダウンロード.
- 適当な場所に置いておく.
-
dex2jar
- dex2jar-2.0 をダウンロード.
- 解凍して適当な場所に置いておく.
-
JavaDecompiler
- jd-gui-windows-1.4.0 をダウンロード.
- 解凍して適当な場所に置いておく.
事前準備
- 上記ツール群を、すべて C:\hoge 直下に置きます. (説明簡略化のため)
- Android 端末から APK ファイルを抜き出します. (仮に hoge.apk とする)
- root 化でもいいし、アプリを使って apk のバックアップ取るでも良いですが、 全ては自己責任で.
やり方1 (apktool によるリバースエンジニアリング)
> mkdir hoge
> cd C:\hoge
> java -jar apktool_2.2.1.jar d hoge.apk
これで C:\hoge\hoge
というフォルダに色々入りました.
.java の代わりに、smali という名前のフォルダが作られており、ここには各クラスに応じて .smali というファイルが作られています.
中身はテキストベースのファイルとなっており、これだけでもある程度解析は可能になっていますが、やっぱり .java で見たほうが見やすい!という方のために、やり方2 を準備しました.
やり方2 (unzip, dex2jar, JavaDecompiler)
unzip がない場合は GNUWIN32 からダウンロードして PATH を通しておく.
> cd C:\hoge
> unzip -d hoge hoge.apk
> dex2jar-2.0\d2j-dex2jar.bat hoge\classes.dex
> C:\hoge\jd-gui-windows-1.4.0\jd-gui.exe C:\hoge\classes-dex2jar.jar
これで、JD によって Java のソースコードにデコンパイルされたものが見られるようになります.
最後に
やり方 1 と やり方 2 を紹介したわけですが、.smali ファイルがソースコードと同じぐらい読める人なら、やり方 1 だけで十分です.
実際にデコンパイルしたソースコードをに変更を加えて再度コンパイルしようとした場合、.java のほうは融通が利かないことがあります. (コンパイルに失敗したり)
その点、.smali のデコンパイル、コンパイルはすんなりと通り、実機でも正常な動作を実現できます.
それでは良きエンジニアライフを(^w^)ノシ