Androidアプリのapkを解析してソースコードを見れるの?

apk_android
Androidアプリを解析する方法が気になって調べてみると、とても簡単に解析できてしまうことに驚きます。
もちろん難読化といった処置をしてあるアプリも多数ありますが、ソースコードは読めてしまいます。
パズドラのソースコード解析やモンストのソースコード解析を行っているサイトもあったりと、Androidのapkの逆コンパイルの簡単さが際立つ印象ですね。
今回はサクっとapk解析のやり方を見ていきますが、Android SDKのインストールは終わらせておきましょう。

SPONSORED LINK

apkファイルの入手

もしまだAndroid SDKをインストールしていない場合には「Flashtoolの使い方は簡単!Xperia Tablet Z SO-03EをAndroid 5.0 Lollipopにアップデート!」にある「Android SDKをインストールする」の項目をご覧下さい。

さて、端末にインストールしてあるapkをパソコンに転送しなくてはいけません。
Androidの設定を「開発者向けオプション」から「USBデバッグ」を有効にしてUSBケーブルで接続します。

そしてAndroid SDKのadbを利用してインストール済みのアプリ一覧を取得します。
PCにコピーするコマンドは以下です。

$ adb pull /data/app/jp.hogehoge.apk

apkのソースコードを解析する

拡張子apkをそのままzipに変更し7-zip対応の解凍ソフトで展開します。
「[Application].dex」というファイルがあることを確認します。

このdexファイルがアプリの本体ファイルです。
本来はDalvikVMで動作するファイルですが、jarファイルに変換することでソースコードを表示できます。

dex2jarでdexファイルを変換する

dexファイルをjarファイルに変換する為のツールを用意します。
pxb1988/dex2jar · GitHub

dex2jarの使い方となる変換コマンドです。

$ dex2jar jp.hogehoge/[Application].dex

[Application]_dex2jar.jarが作成されます。

Java Decompiler/jd-guiで逆コンパイルする

javaファイルへのデコンパイルするツールを利用して、逆コンパイルします。
Java Decompiler

jd-gui
jd-guiを開いてjarファイルを開くだけで逆コンパイルした状態でソースコードを見ることができます。

難読化している場合にはクラス名は簡略化されますがソースコードは表示できてしまいます。

まとめ

このようにAndroidアプリの解析は本当に簡単にできてしまいます。
もしも今後Androidアプリの公開を検討しているならば難読化などのセキュリティ対策は必須と言えますね。
自分の公開しているアプリの解析をしてみて背筋が凍りついた!なんて思いはしたくはありませんね。

今日も知識欲は止まらない。

SPONSORED LINK
トップへ戻る