skylot/jadx
把 Android APK 和 Dalvik 字节码还原成可读 Java,服务于逆向与安全分析人员。
解决什么问题
拿到一个 APK、AAB 或一堆 .dex 文件,你真正想要的是能读的 Java 源码。但要走到这一步,得先解包、解二进制 AndroidManifest、翻译 Dalvik 字节码、处理资源表,还要应付混淆后的名字——每一步都是一个独立工具。jadx 把整条链路收进一个命令行或一个窗口:反编译、解资源、输出接近可读的源码,一次完成。
有什么不同
传统 Android 逆向是一条流水线:apktool 解包和资源,dex2jar 把字节码转成 JAR,再用 CFR、Procyon 之类的 Java 反编译器出源码。jadx 跳过中间的 JAR,直接反编译 Dalvik,好处是上下文能保留得更多——资源解码、资源名解析、内置的反混淆都落在同一份输出里,而不是靠手工拼起来。GUI 的跳转声明、查找引用、全文搜索让它可以当浏览环境用,而不只是一次性转换器;smali 调试器也超出了普通反编译器的范围。代价是反编译器共有的:README 明确写了无法 100% 反编译,遇到非常规字节码就要预期碎片化或 fallback 输出。
适合谁
安全研究员、恶意软件分析师,以及审计第三方 SDK、或手头已经没有源码却要还原逻辑的 Android 开发者。需要批量或脚本化分析的人用 CLI 更顺手,输出目录、线程数、反编译模式都能配;交互式浏览交给 jadx-gui,也方便把结果直接递给同事看。它不是用来重建一个能完整编译的 Android 工程的——Gradle 导出确实存在,但只是起点而非保证;如果你主要想改资源再重打包,apktool 那套流程仍然更合适。
上手成本
需要 64 位 Java 11 以上运行时,或者直接用带 JRE 的 with-jre 发行包;Arch、Homebrew、Flathub 都有包,Maven Central 上也有构件,方便把反编译器嵌进自己的工具。对一个这么老的项目来说,README 意外地完整:选项、安装方式、排错 wiki 都在。Apache-2.0 许可让商用和内部使用没有额外顾虑。主要成本其实是预期管理:混淆过的代码只能部分还原,这一点作者自己在 README 里就说了。
点评
在 Android 工具里,这几乎是最稳的那一类:2013 年创建,至今仍在发版,本月在 Java 月榜上以 +720 排到第 15。它的年头体现在选项数量和 wiki 的厚度上,而不是停滞;说到「把这个 APK 反编译一下」,大多数人第一个想到的就是 jadx。只要你会做 Android 逆向,问题就不是要不要用,而是针对目标该选哪种模式和参数。把这个 GUI 当成够用而非精致即可,凡是需要重复执行的活儿,走 CLI。
Hacker News 讨论
本文由 AI 根据项目 README 生成,更新于 2026年10月24日,以项目官方文档为准。