Jadx 1.5.2 详解:安卓反编译器支持 DEX v41
【免费下载链接】jadxDex to Java decompiler项目地址: https://gitcode.com/gh_mirrors/ja/jadx
Jadx 是一款开源的安卓反编译工具,负责把 APK、DEX 字节码还原成可读的 Java 源码。1.5.2 是面向兼容性和工作流的更新,核心改了三处:首次完整支持 DEX v41 格式,能用 Kotlin SMAP 信息恢复类名,导出 Gradle 项目时自动挑选模板。如果你常反编译较新系统上的应用,这一版值得看一下。
版本改动一览表
| 类型 | 改动内容 | 影响范围 |
|---|---|---|
| 新增 | 完整支持 DEX v41 格式 | 新系统 APK 反编译 |
| 新增 | Kotlin SMAP 类名恢复选项 | 混淆的 Kotlin 应用 |
| 新增 | Gradle 导出模板自动检测 | 工程导出 |
| 新增 | GUI 导出对话框更多选项 | 图形界面导出 |
| 新增 | 插件 API 暴露图标与右键菜单 | 插件开发 |
| 新增 | 资源预览支持 WebP 与十六进制查看 | 资源查看 |
| 优化 | 全新 ZIP 读取模块处理被改 APK | APK 加载稳定性 |
| 优化 | 变量名应用重构为独立处理阶段 | 代码生成质量 |
| 优化 | 生成缺失 throws 声明并校验异常 | 异常相关代码 |
| 优化 | 树状态保存与加载机制重写 | GUI 大工程浏览 |
| 修复 | 树展开、标签页与代码跳转问题 | GUI 日常使用 |
重点功能解读
DEX v41 格式支持
它是什么:DEX v41 是 DEX 字节码的新版本号,由最新 Android 工具链产出。Jadx 通过 dex 输入插件加载 dex 文件,旧版本遇到不识别的头部版本号会直接拒载。
解决什么问题:反编译高版本系统上抓下来的 APK 时,可能因为 dex 版本号过新而打不开。1.5.2 补齐后,这类文件可以正常进入反编译流程。
谁受益:做应用安全分析、跟新机型兼容的开发者。一个细节:dex 输入插件默认开启校验(-Pdex-input.verify-checksum=yes),被二次改动的 dex 若校验失败,可临时关闭校验再加载。
Kotlin SMAP 类名恢复
它是什么:Kotlin 编译器会把 SMAP 映射写入类的SourceDebugExtension属性,记录混淆名与源码名的对应关系。Jadx 新增了 kotlin-smap 插件来解析它。
解决什么问题:Kotlin 应用混淆后,类名只剩a、b这类字符。利用 SMAP 可以把类名还原为编译前的原始名,阅读效率差别很大。
谁受益:分析 Kotlin 写的混淆应用的逆向人员。注意这个选项默认关闭,需显式开启-Pkotlin-smap.class-alias-source-dbg=yes才生效。
Gradle 导出模板自动检测
它是什么:--export-gradle可以把反编译结果存成 Gradle 工程。1.5.2 新增--export-gradle-type auto,在android-app、android-library、simple-java三种模板间自动选择。
解决什么问题:以前导出后要手工指定模板,选错就得重跑。自动检测按输入文件类型(apk 或 aar)推断,省一步配置。
谁受益:想把反编译代码导入工程继续开发或打补丁的人。模板生成逻辑在 jadx-core 的 export 模块,需要定制可以顺着看。
谁应该现在就升级
- 在分析较新 Android 版本应用:DEX v41 是硬门槛,旧版本可能直接打不开,建议直接升 1.5.2。
- 处理混淆 Kotlin 应用:SMAP 类名恢复对阅读收益明显,且选项默认关闭,不影响其他工作流,可以升。
- 只用稳定环境跑存量流程:核心反编译逻辑改动不大,若现有版本结果可复现、无新格式需求,可以等社区反馈再动。
三步快速上手:APK 转 Java
- 下载 release 包解压,进入
bin目录。 - 运行
jadx -d out app.apk开始反编译。 - 用 IDE 打开
out目录检查生成的 Java 代码。
注意事项与已知限制
- 官方说明 Jadx 不能保证 100% 反编译成功,复杂方法仍可能出错,可加
--show-bad-code自行甄别。 - 运行需 Java 11 以上;若要从源码构建,要求 JDK 17 或更高。
- ZIP 安全检查默认开启,单包最多 10 万个条目,超大归档需通过环境变量
JADX_ZIP_MAX_ENTRIES_COUNT放宽。 - SMAP 类名恢复依赖目标 APK 保留了
SourceDebugExtension属性,被完全剥离的包上无效。
1.5.2 的价值集中在兼容新格式与导出工作流,改动克制、风险低,是适合随手升级的一版。需要源码构建时可执行:git clone https://gitcode.com/gh_mirrors/ja/jadx,再运行./gradlew dist。
【免费下载链接】jadxDex to Java decompiler项目地址: https://gitcode.com/gh_mirrors/ja/jadx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考