Help us understand the problem. What is going on with this article?

Androidアプリを逆コンパイル

More than 5 years have passed since last update.

逆コンパイルしての解析が仕事です。
セキュリティ関連ではなく、悪の領域です。
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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした