知行合一

とか言ってみる

【Android】apkを逆コンパイルしてJavaのソース、XMLを取り出してみる

参考
AndroidのAPKを逆コンパイルする - Qiita
http://sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download
Apk decompile error: d2j-dex2jar command not found - Stack Overflow
Error when brew updating, unable to unlink old README.md? · Issue #2906 · Homebrew/homebrew · GitHub
Jad(Javaの逆コンパイラ)で僕にもソースが見えるの巻 - tanamonの日記
Macでjarの中身を全部デコンパイルする | hacknote
brew tapとは - Qiita
brewのアップデート(brew update)に失敗してしまったので対処する - F13


1つ目の記事にあるように流れは
apkファイルからdexファイルを取り出す
dexファイルをjarファイルに変換する
jarファイルからclassファイルを取り出す
classファイルをjavaファイルに変換する
という流れらしい。

◼︎apkファイルからdexファイルを取り出す

unzip ~~.apk

apkファイルはzipファイルだからunzipすれば簡単にdexファイルを取り出せた。

◼︎dexファイルをjarファイルに変換する

~/tools/dex2jar-2.0/d2j-dex2jar.sh classes.dex

◼︎jarファイルからclassファイルを取り出す

unzip classes-dex2jar.jar 

◼︎classファイルをjavaファイルに変換する

  • 指定のファイルをjavaファイルに変換
jad -s java -d src -r classes.class 
  • 指定のディレクトリ以下の当てはまるファイルを変換する
jad -s java -d src -r classes\**\*.class

classファイルをjavaファイルに変換するのところでハマったのでメモ。
参考記事1つ目の
JAD Java Decompiler Download Mirror
ここからJava Decompilerをインストールして解凍したjadを利用しようとしたが、

jad: command not found 

と何回も出てしまった。これは4つ目のリンクのalexchさんの回答で解決。

homebrewをupdateしてからjadをinstallして実行するとうまくいった。