工具

ddc Android DEX 反编译器

用 Rust 编写的反编译器,可将 APK、多 DEX 应用以及 XAPK/APKS/APKM 容器中 035 至 041 版本的 Android DEX 字节码转换为 Java,把 lambda 和字符串拼接还原为 Java 语法,并按 jadx 的风格为局部变量命名。默认情况下,每个文件还会经过一道据称保持语义的源码级整理,内联拷贝链、恢复三元表达式和 for-each 循环并删除无用赋值;--fast 可跳过这一步。除完整反编译外,15 个查询子命令可按需返回应用与清单信息、资源、字符串、交叉引用、类层次结构、反汇编以及单个类或方法,同样的查询也可通过 REST 和 MCP 提供。

使用条件与局限

  • 审阅时的最新版本为 v0.1.30,于 2026-10-18 发布,即所审阅的 main 分支提交。仓库创建于 2026 年 9 月,版本更新频繁(v0.1.28 至 v0.1.30 相隔仅八天)。每个版本提供 Linux、Windows 和 macOS 的 x86_64 与 ARM64 原始二进制文件,非 macOS 版本经过 UPX 压缩,可通过 Homebrew、Scoop 和 cargo-binstall 安装;从源码构建使用稳定版 Rust,并依赖作者自己的 jdc-core、cure 和 xyz-rust crate。
  • 输入为取自用户自己应用的 APK、应用容器或 DEX 文件;完整反编译默认在输入文件旁生成 <input>-out 目录。ddc serve 和 ddc http 的默认监听地址为 :8080(未指定主机),Bearer 令牌认证为可选项;ddc mcp stdio 以智能体子进程方式运行。
  • README 称七个基准 APK 生成的全部 909,689 个文件、docs/validation.md 称 39 个应用生成的 408 万个文件都能通过 javac 的解析阶段,但这只是语法检查。已知局限包括泛型类型被擦除、经 d8 脱糖的 lambda 类仍为单独文件、部分超大 R8 方法会超时且输出可能因运行而异,以及模式匹配 switch 以脱糖后的形式呈现;使用完整类路径的 javac 检查在 91 万个文件中仍发现约 7,500 个归因于 ddc 的错误,约为 jadx 在同一组文件上的两倍。
  • CI 在 Linux、macOS 和 Windows 上构建并运行 cargo test。基准 APK 不在仓库中,测试夹具只有少量 DEX 文件和一个二进制 AndroidManifest。采用 MIT 许可。本次未反编译任何应用,也未运行服务器。

关于此条目

类型
工具
类别
Android 工具
关联
基础工具
目标
应用

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · ejfkdev/ddc · 修订 e240550
  2. README.md#L179-L192 GitHub · ejfkdev/ddc · 修订 e240550
  3. docs/cli.md GitHub · ejfkdev/ddc · 修订 e240550
  4. docs/subcommands.md GitHub · ejfkdev/ddc · 修订 e240550
  5. docs/validation.md GitHub · ejfkdev/ddc · 修订 e240550
  6. docs/architecture.md GitHub · ejfkdev/ddc · 修订 e240550
  7. crates/ddc-cli/src/mode_help.rs GitHub · ejfkdev/ddc · 修订 e240550
  8. Cargo.toml GitHub · ejfkdev/ddc · 修订 e240550
  9. .github/workflows/ci.yml GitHub · ejfkdev/ddc · 修订 e240550
  10. LICENSE GitHub · ejfkdev/ddc · 修订 e240550
  11. https://github.com/ejfkdev/ddc/releases/tag/v0.1.30