LoginSignup
67
70

More than 5 years have passed since last update.

Androidアプリを逆コンパイル

Last updated at Posted at 2014-09-12

逆コンパイルしての解析が仕事です。
セキュリティ関連ではなく、悪の領域です。
Androidのapkを逆コンパイルする手順を超軽く紹介します。

1.apkをPCにコピー

マニフェストにてバックアップ可なら普通にバックアップできますが、
そうではないならルート化が必要です。

2.apkをzipにして展開

おなじみ、apkの正体はzipファイルです。
拡張子を変更して展開して下さい。

この段階でアセットなどは普通に覗くことができます。
画像データ等は普通に存在しますが、res.values.stringsなどは普通には覗けません。

3.プログラムデータをJavaプログラムデータに変換

apkではJavaプログラム本体であるjarは classes.dex です。
これをjarに変換するには dex2jar を使用します。
dex2jar.sh ./classes.dex

4.jarを逆コンパイル

ソースコードの解析最終段階逆コンパイルです。

Java Decompiler

一番楽なのはGUIの Java Decompiler を使用することです。
これはjarをドロップするだけで、簡単に逆コンパイル結果を見れ、非常に可視的に変換してくれます。
ただ、全く逆コンパイルできない部分が存在することも多々あり、
更に厄介なのはちゃんと逆コンパイルできていないのにエラーも出さずに、
変なコードになってしまうことも多々あります。

jad

そういった時に役に立つのが jad です。
これはコンソールで動作します。
逆コンパイルされたソースは非可視的です。
が、Java Decompilerで逆コンパイルを断念された部分も出来る限りの力で出来るだけ逆コンパイルしてくれます。
はじめにjarを展開しておいて、以下のコマンドです。
生成されるファイルの拡張子は jad ですが、javaファイルなのでこれを java に変えてください。(そういったオプションもあるかもしれませんが)
jad -r **/*.class

5.リソースを覗く

例えば、 res.values.strings 等のリソースは resources.arsc に格納されています。
これの解析には aapt を使用します。
aapt はSDKに付属されています。
aapt dump --values resources android.apk resource.arsc > v.txt

67
70
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
67
70