68
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

68
71
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
68
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?