需要用到的工具
查看 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 文件头中的 magic 字段是一个 8 个字节的固定字符数组,表示 dex 文件的类型和版本。以下是不同版本的 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 代码