GitHub 地址:https://github.com/skylot/jadx
JADX 支持将 APK, dex, aar, zip 中的 dalvik 字节码反编译为 Java 代码,也支持反编译 AndroidManifest.xml 和 resources.arsc 资源。
首先安装 JDK1.8 或以上版本,Git,以及 Android 开发环境。
创建要下载的 JADX 存储文件路径,然后在命令行切换到该目录,执行以下命令:
git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist 这个操作可能需要一段时间
如果 执行 ./gradlew dist 遇到错误:
- PKIX path building failed...省略
- 注意查看是连接哪个网址发生错误。
-
这里从连接哪个网址发现是 gradle 的错误,解决办法:
1.在 chrome 中输入 gradle 网址:https://gradle.org/
2.点击网址输入栏的锁标识
3. 点击证书查看详情
4. 然后将证书拖到要存储的目录
5.查看 cacerts 列表,切换到 JAVA 的 security 路径(本机路径是:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/security/ ),命令行执行:keytool -list -keystore cacerts 路径,本机是:
- keytool -list -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/security/cacerts
-
默认密码为 changeit。
6.导入证书,命令执行命令(还是在路径:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/security/):
- keytool -importcert -file 第4步存储的证书路径地址
-
默认密码为 changeit。
如果这里遇到没有权限,在 Mac 系统下,这里需要:sudo keytool -importcert -file 第4步存储的证书路径地址。
7.再切换到 JADX 存储文件路径,命令行执行:
cd jadx
./gradlew dist 这个操作可能需要一段时间
进入 JADX 存储文件路径,进入 jadx/build/jadx/bin 目录,命令行执行:
- cd jadx/build/jadx/bin
-
双击 gadx-gui,如下图:
然后点击 左上角菜单 文件,选择要打开的文件: APK 或 dex 或 arr 或 zip。
这里在网上下载了喜马拉雅的 Android APK,导入后如下图:
到这里, JADX 工具的简单介绍就完了。可以说这个工具:易用,简洁,强大,非常适合用来反编译。
平时,反编译 APK 作用:
反编译 Android APK 至少需要了解 APK 目录结构含义和 APK 打包流程,这里简单介绍下。
这里还是以 喜马拉雅的 Android APK 为例子,直接将 APK 拖入 AndroidStudio :
zipalign 工具对签名后的 .apk 文件进行对齐处理的原因:目的是确保所有未压缩数据以相对于文件开头的特定对齐开始。具体来说,它会导致APK中的所有未压缩数据(如图像或原始文件)在4字节边界上对齐。对齐以后,系统就能更加快速的调用APP内的资源。