世界最快APK反编译器Garlic:12秒搞定19万类微信,它凭什么碾压JADX

原创2026-10-24 16:09:581,999 阅读
文章标签:逆向工程开发工具静态分析

世界最快APK反编译器Garlic:12秒搞定19万类微信,它凭什么碾压JADX

Garlic 是号称"世界最快"的 APK (Android)/Java 开源反编译器,用 C 语言实现,能把 apk、dex、jar、class、war 文件还原成 Java 源码。实测反编译 200M+、19 万多个类的微信 APK 只需 12 秒(默认 4 线程),而传统工具往往要跑几分钟甚至更久。对逆向分析、安全研究和二次开发来说,Garlic 是 Java 反编译领域一次真正的性能革命。

Garlic APK反编译器终端运行界面,显示反编译微信19万个类的进度

速度测试:微信APK 12秒出结果

先看官方实测数据(来自 README.CN.md 的速度章节):

反编译最新(2025-06-16)的微信,200M+ 大小,19 万+ 个类,需要 12 秒左右,默认 4 线程

garlic ~/wechat/wechat.apk
[Garlic] APK file analysis
File     : ~/wechat/wechat.apk
Save to  : ~/wechat/wechat_apk
Thread   : 4
Progress : 192538 (192538)
[Done]

作为对比,JADX 反编译同一个微信通常以分钟计,且内存占用高、容易 OOM。Garlic 直接把量级差拉开了。

它凭什么这么快?

Garlic 快的核心原因有三个:

  1. 纯 C 实现:没有 JVM 启动开销和垃圾回收(GC)停顿,内存分配直接走池化方案(src/libs/memory/mem_pool.c),解析字节码时几乎零额外开销。
  2. 多线程反编译:默认启动 4 个线程并行处理类,线程池实现在 src/libs/threadpool/threadpool.c。类与类之间天然独立,非常适合并行。线程数可用 -t 调整,上限 16(见 src/garlic.c 中的参数校验逻辑)。
  3. 流水线式架构:Dex 解析(src/dalvik/)→ 预优化(src/dalvik/dex_pre_optimizer.c)→ 类型分析 → SSA 转换(src/decompiler/ssa.c)→ 表达式树构建,每个环节都按性能优先设计,中间结构紧凑、缓存友好。

JVM 系反编译器(JADX、CFR、Procyon)受限于解释执行和对象分配,很难做到这种并行效率。

快速上手:一键安装与使用

1. 克隆仓库并编译(要求 cmake ≥ 3.26,无其他依赖)

git clone https://gitcode.com/gh_mirrors/garlic1/garlic
cd garlic
cmake -B build
cmake --build build
./build/garlic

也支持用 Zig 编译并交叉编译到任意平台(Linux/Windows/macOS/Android 全覆盖),见 CMakeLists.txt 与 toolchains/ 目录下的各平台工具链文件。Windows 环境有专门的性能与注意事项文档:docs/garlic-on-windows.md。

2. 常用命令一览

garlic app.apk                  # 反编译 APK,输出到 app_apk 目录
garlic app.apk -o /path/to/save # 指定输出目录
garlic app.apk -t 8              # 指定线程数为 8
garlic classes.dex               # 反编译 dex
garlic lib.jar                   # 反编译 jar/war
garlic Foo.class                 # 反编译单个 class(输出到 stdout)
garlic Foo.class -p              # 类似 javap,更快
garlic app.apk -f "windowInfo"   # 按字符串/正则搜索
garlic app.apk -s                # 转成 smali
garlic app.apk -g                # 生成调用图

参数定义与解析逻辑可参考 src/garlic.c 中的 opt_usage 函数。

不止反编译:ELF 分析与 AI MCP 能力

Garlic 还能分析 aarch64 的 ELF 原生库(-n 选项),输出控制流、IR、导入导出、字符串和函数调用图。配合 Rosemary 反汇编器,形成"Dex + 原生代码"的完整分析流水线:

Garlic APK反编译器配合Rosemary的Android原生库控制流分析界面

此外,Garlic 支持通过 garlic -m 启动 MCP 服务器(Model Context Protocol),把反编译、类结构查看、调用图和 DuckDB SQL 查询能力暴露给 Claude Desktop、Cline 等 AI 客户端——让 AI 直接帮你"读"APK 源码。详细配置见 MCP-SERVER.CN.md 与 src/ai/jd_mcp_server.c。

总结:Garlic 适合谁?

使用场景 推荐程度
大型 APK(微信、抖音级别)快速逆向 ⭐⭐⭐⭐⭐
Java 字节码性能敏感的场景(批量处理) ⭐⭐⭐⭐⭐
需要 AI 辅助阅读反编译代码 ⭐⭐⭐⭐⭐
只需简单查看单个 class 文件 ⭐⭐⭐(JADX GUI 更直观)

核心结论:Garlic 用 C 语言 + 多线程把 APK 反编译做成了"秒级"体验,是目前追求速度首选的 Java 反编译工具;若你还需要原生代码联合分析,它内置的 ELF 分析与 MCP 能力同样值得体验。

Garlic 采用 Apache 2.0 开源协议,可自由用于学习与商业用途。

登录后查看全文
garlic