需要用到的工具
查看 apktool 版本
❯ apktool --version
Mac 安装 dex2jar
❯ brew install dex2jar
第一步 Apktool 反编译 APK 文件
❯ apktool d xxx.apk
apktool からは、いくつかのソースコードファイルを apk で見ることができます。この方法で逆コンパイルすると、smali ソースコードのみを表示できます。
第二步 dex2jar 将 dex 反编译为 jar
apk ファイルの拡張子を zip の拡張子に変更します。
zip ファイルを解凍して、dex の拡張子のファイルを取得し、dex2jar を使用して dex ファイルを jar ファイルに変換します。
❯ d2j-dex2jar classes.dex
または、dex2jarを直接ダウンロードして、次のコマンドを実行します。
sh d2j-dex2jar.sh classes.dex
コンパイルに失敗し、バージョンの問題が表示される場合は、dex ファイルのヘッダーのバージョンを変更する必要があります。
dex ファイルのヘッダーには、dex ファイルのタイプとバージョンを示す 8 バイトの固定文字配列である magic フィールドがあります。以下は、異なるバージョンの dex ファイルのヘッダーの magic フィールドの内容です:
・Android 1.0 および 1.1 のバージョン:dex 035
・Android 1.5 のバージョン:dex 035
・Android 1.6 のバージョン:dex 036
・Android 2.0 から 2.3.7 のバージョン:dex 035
・Android 3.0 から 3.2.6 のバージョン:dex 036
・Android 4.0 から 4.0.4 のバージョン:dex 035
・Android 4.1 から 4.4.4 のバージョン:dex 036
・Android 5.0 から 6.0.1 のバージョン:dex 037
・Android 7.0 から 7.1.2 のバージョン:dex 038
・Android 8.0 以上のバージョン:dex 039
jar ファイルを取得したら、jd-gui を使用して jar コードを表示できます。
第三步 JD-GUI で jar コードを表示