昨天(10 月 7 日)刷 GitHub Trending,第一名是一个叫 REA 的项目,24 小时涨了约 3000 星。我顺手查了它的 API 数据:截至当天下午四点,morluto/rea 已经 10,746 星、1,187 fork,MIT 协议,仓库今年 4 月创建,最近一次推送就在几分钟前。更值得玩味的是版本节奏:10 月 5 日连发 4.0.0 和 4.0.1,10 月 6 日跳到 4.1.0——典型的发布冲刺。
REA(Reverse Engineer Anything)解决的问题是:让 AI 编程工具读懂没有源码的应用。上一期我写 Agent Reach 实测时说它是给 Agent 装上「联网的眼睛」,REA 则更进一层——装的是一把「看穿二进制的手术刀」。你看到别人应用里有个好功能,让 Claude Code、Cursor 或 Codex 直接去调查它是怎么实现的,拿出证据,然后照着自己的技术栈复刻一个。
它到底是个什么东西
REA 本身不做反编译。它是一个 TypeScript 写的桥接层,以 CLI 和 MCP server 两种形态存在,把真正的逆向工具——Ghidra、Hopper、IDA Pro——的调用过程结构化之后交给 Agent。官方 README 里 仓库地址在这里,调查模型分三段:Decompile(恢复可读的代码、字符串、符号)、Understand(顺着调用链把一个功能的实现讲清楚)、Recreate(把理解变成你自己项目里的代码)。
我跑了它的 doctor 体检命令,从源码目录生成的 catalog 数字是:80 个 CLI 命令、125 个 MCP 工具、6 个引导式调查 prompt。工具族覆盖原生二进制(Mach-O/ELF/PE)、JavaScript 与 Electron 应用、.NET 程序集、Android APK、固件和网站被动观察。其中原生二进制的深度分析需要你自己装 Ghidra 12.1.4 加 JDK 21,或者 Hopper——这两样我都没装,相关能力未实测,下文只讲免引擎路径的真实表现。
安装:第一脚就踩进国内镜像的坑
官方推荐 npx rea-agents setup 一条命令完成,但我一跑就报 ETARGET: No matching version found for rea-agents@4.1.0。查了 npm registry 才发现原因:官方源上 4.1.0 已经存在(10 月 6 日 17:57 UTC 发布),而我本机 npm 配置的是 npmmirror 镜像,它还没同步到当天的版本。国内开发者对这个场景应该不陌生——新版工具发布的头 24 小时里,镜像滞后是常态。绕过方法是指定官方源:
# 本机 Node 22.22.2,macOS 26.5.2,2026-10-07 实测
npx -y --registry=https://registry.npmjs.org rea-agents@4.1.0 --version
# 输出:4.1.0
# 体检(只读,不改任何配置)
npx -y --registry=https://registry.npmjs.org rea-agents@4.1.0 doctor --jsondoctor 的输出很能说明这个项目的设计取向:它检测出我的 Node 22.22.2 和系统版本都健康,同时明确列出 Hopper 和 Ghidra 两项 missing_analysis_engine,并各自给出处方——「运行 setup 安装 Hopper,或设置 HOPPER_LAUNCHER_PATH」「把 GHIDRA_INSTALL_DIR 指向解压后的 Ghidra 12.1.4 目录」。缺什么说什么,不装引擎也不影响你用免引擎的那部分功能。
免引擎实测:一个成功,四个全灭
我原本的主打测试是 analyze-javascript-application——静态分析 Electron 应用,不用跑目标程序,也不需要任何反编译引擎。结果这一路让我结结实实踩了四个坑,四台真实应用全军覆没。
先说成功的那个。对 Obsidian 的主程序跑 inspect-macho(免引擎的 Mach-O 元数据检查):
npx -y --registry=https://registry.npmjs.org rea-agents@4.1.0 \
inspect-macho /Applications/Obsidian.app/Contents/MacOS/Obsidian --json返回的结构里,normalized_result.architectures 明确列出这是一个 universal binary:x86_64 切片 32624 字节(文件偏移 16384),arm64 切片 53248 字节(偏移 49152),exhaustive: true 表示遍历完整。更有价值的是 provenance 字段——它逐条记录了每一步用了哪个系统工具(/usr/bin/file、lipo -detailed_info)、退出码多少,甚至连 /usr/bin/file 自身的可执行文件 SHA256 都记了下来。limitations 里也不含糊:「stripped 或工具链隐藏的符号可能缺失」。逆向工具最怕的是结论不可信,把证据链做到这个粒度,是我给这个项目加一分的主要原因。
然后是翻车现场。我挑了四台本机 Electron 应用跑静态分析,全部失败:
{
"error": "JavaScript application analysis failed",
"code": "artifact_integrity_mismatch",
"details": {
"logical_path": "app.asar/node_modules/@lydell/node-pty-darwin-arm64/prebuilds/darwin-arm64/pty.node",
"declared_sha256": "30ac3664...",
"calculated_sha256": "12285d1d...",
"unpacked": true
}
}Obsidian、OpenCode、Local 三台都是同一个死法:asar 清单里声明的原生 .node 模块哈希,和磁盘上 app.asar.unpacked 目录里的实际文件对不上,REA 直接拒绝继续。Discord 的报错不一样,unreadable_output,我按提示重试了一次,然后把 asar 解包成目录再分析(README 明确支持这个路径),这次的错误细节里露出了真凶:Result schema rejected 1 issue at /label (too_small)——是 REA 自己的输出 schema 校验拒收了内部产出的空 label,跟目标应用没关系。我到 issue 区一查,#861 已经有人在一个 Vite 应用上复现了同一个错误,10 月 7 日提交,另外还有一条 10 月 6 日的同症状报告。顺带一提,对 Info.plist 跑 inspect-plist 也失败,而且这次连 details.reason 都没给,只有 provider 和操作名——错误信息的粒度不一致,也是发布冲刺期的真实状态。
这四个坑放在一起看,结论其实很清晰:免引擎的 Electron 静态分析在 4.1.0 上还撑不起日常使用,asar 完整性校验对「带 unpacked 原生模块的常规打包」太敏感,schema bug 则是自家回归。反过来,免引擎的原生二进制元数据检查(native-macos provider 那一族)是能用的。
现在值得上手吗
我的建议分三种情况。做安全审计或 CTF、本来就装着 Ghidra 的,值得马上把 REA 接上试一轮——它的核心价值在深度分析那一层,而那层依赖的是你已有的引擎;用 Electron 应用开发、想研究别人产品结构的,等 4.1.x 把 asar 和 schema 这两个问题修掉再回来,装个issue 列表的 watch 就行;单纯想跟风体验的,免引擎那几个命令跑一遍 inspect-macho、list-architectures 感受下证据链设计就够了,别指望更多。
接入 Claude Code 或 Cursor 的手动配置(persistent 注册建议固定版本号):
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "rea-agents@4.1.0", "mcp"]
}
}
}如果你在深度定制 Claude Code,上一期 Claude Code Mods 讲的是改写 Agent 的行为,这次 REA 讲的是给 Agent 发新工具,两者叠起来用不冲突。更完整的安装参数(Hopper 的 macOS 安装路径、Ghidra 的环境变量)直接看官方安装文档,Hopper 是独立收费软件(demo 模式有功能限制),Ghidra 则是 NSA 开源的免费选项。
最后说下合规这条线,两句话就够:互操作性目的的逆向在美国判例里长期受 fair use 保护,但商业软件的 EULA 普遍禁止逆向,DMCA 1201 又单独禁止绕过技术保护措施——REA 不绕 DRM、不上传目标程序、分析全在本地,工具本身是干净的,用它做什么仍然是你自己的责任。EFF 的 Coders’ Rights 页面把这条边界写得最清楚,动手前值得读一遍。
从 Agent Reach 的联网抓取,到 Chrome DevTools MCP 的浏览器调试,再到今天的二进制逆向,「给 Agent 装能力」这条线上的工具正在快速变厚。REA 的证据链设计让我愿意继续盯着它——等 asar 那两个 bug 修掉,我会把 Electron 静态分析的实测补上。