让 Agent 逆向任何东西:REA 把二进制分析变成 MCP 调用

你看到一个 App 里有这样的功能:鼠标悬停在某个按钮上,整个界面会平滑地缩放,但只缩放可视区域,不影响侧边栏。你想在自己的产品里复刻这个效果,但没有源码,没有文档,开发者也不回邮件。

目录
  1. 让 Agent 逆向任何东西:REA 把二进制分析变成 MCP 调用
  2. 一个不可能的请求
  3. REA 是什么
  4. 为什么 agent 适合做逆向
  5. 调查模型:不是工具堆叠,是方法论
  6. MCP 作为逆向工程的统一接口
  7. 静态 JavaScript 分析:零依赖的切入点
  8. 证据和局限性:信任的基石
  9. 这意味着什么

让 Agent 逆向任何东西:REA 把二进制分析变成 MCP 调用

项目:morluto/rea · 2963 stars/day · TypeScript

一个不可能的请求

你看到一个 App 里有这样的功能:鼠标悬停在某个按钮上,整个界面会平滑地缩放,但只缩放可视区域,不影响侧边栏。你想在自己的产品里复刻这个效果,但没有源码,没有文档,开发者也不回邮件。

传统做法:找一个逆向工程师,用 Hopper 或 Ghidra 打开二进制文件,花三天找到相关函数,再花三天理解调用链,最后写一份报告告诉你"它在 offset 0x4a3c 处调用了某个 Core Animation 的私有 API"。

REA 给出的路径不一样。你打开 Claude Code,说一句"investigate this app's hover zoom feature"。你的 agent 连接到 REA 的 MCP 工具,自己决定先静态分析 JavaScript 入口、再动态检查 native 调用链、最后交叉验证证据。几分钟后,你拿到一份包含证据链和局限性说明的报告。

2963 颗星,一天。 这个数字说明一件事:把逆向工程从专家手里拿走,塞进 agent 的工具箱,是一个被压抑了太久的需求。

REA 是什么

全称 Reverse Engineer Anything。一个 MCP 服务器,把逆向工程工具暴露成 agent 可调用的接口。

它覆盖四个层面:

层面工具能做什么
Native 二进制Hopper / Ghidra / IDA反汇编、函数识别、调用图恢复
JavaScript / Electron内置静态分析从 ASAR 包恢复源码、追踪模块依赖
.NET 程序集内置反编译 IL 代码、提取类型信息
网站内置DOM 结构分析、网络请求追踪
关键设计:所有分析在本地运行,不发送任何数据到云端。 结果包含两部分——结论和证据。每条结论都附带"我是怎么知道的"(哪个函数、哪个 offset、什么调用链),以及"我不知道什么"(局限性说明)。

为什么 agent 适合做逆向

逆向工程的核心难点不是工具不够多——Hopper 和 Ghidra 已经很强大了。难点是决策疲劳。

一个典型的二进制分析流程:

1. 打开文件,看到 10 万个函数 2. 搜索关键词,找到 200 个候选 3. 逐个检查调用图,排除 180 个 4. 对剩下的 20 个做动态分析 5. 交叉验证结果,排除矛盾 6. 写报告

每一步都需要判断:"这个函数值得深入吗?""这条调用链是关键路径吗?""这个字符串引用是线索还是噪音?"人类逆向工程师靠经验做这些判断,而经验本质上是模式匹配——这恰好是 LLM 最擅长的事。

REA 的做法不是让 agent 替代 Hopper,而是让 agent 驱动 Hopper。agent 决定分析策略(先看 JavaScript 入口还是先看 native 调用链),调用 Hopper 的 API 执行具体分析,然后解读结果、调整策略、继续深入。这和 agent 驱动浏览器(browser-use)、agent 驱动终端(Claude Code)是同一个模式——agent 作为编排层,专业工具作为执行层。

调查模型:不是工具堆叠,是方法论

REA 最有意思的设计不是工具集合,而是它的 investigation model。安装时,REA 会给 agent 注入一套工作流指令(skill),定义了逆向分析的标准化流程:

  • 假设驱动:先提出假设("这个功能可能用了某个私有 API"),再找证据验证
  • 证据链:每条结论必须附带证据来源(函数地址、调用链、字符串引用)
  • 局限性标注:明确标注"我不知道什么"——哪些函数没分析、哪些路径没覆盖
  • 交叉验证:多个工具的结果互相印证,矛盾时标注而非忽略
这不是工具堆叠,是方法论注入。REA 给 agent 的不只是"能做什么",还有"该怎么想"。

这让我想到一个更大的模式:skill 作为方法论的载体。传统的工具调用是"agent 决定做什么",而 skill 注入是"agent 学会怎么思考"。REA 的 investigation model 是一个具体例子——它把逆向工程师的思维模式编码成了一套可执行的指令。

MCP 作为逆向工程的统一接口

REA 是一个 MCP 服务器。这意味着任何支持 MCP 的 agent 都能用它——Claude Code、Codex、Cursor、Gemini CLI、Windsurf、Devin、OpenCode、Antigravity、GitHub Copilot CLI、VS Code。

这看起来只是兼容性列表,但实际意义更大。MCP 正在成为 agent 生态的"通用插头"。每个专业领域(逆向工程、数据库查询、文件系统操作、API 调用)都实现一个 MCP 服务器,任何 agent 都能即插即用。

类比一下:USB 之前,每个外设都有自己的接口——串口、并口、PS/2、SCSI。USB 之后,所有外设统一成一个接口。MCP 之于 agent,就像 USB 之于硬件——标准化接口的价值不在于接口本身,而在于它释放的组合可能性。

REA 证明了这一点:一个逆向工程工具,因为走了 MCP 协议,立刻被十几个 agent 生态接入。如果没有 MCP,作者需要为每个 agent 写专门的集成——这个工作量足以让大多数跨领域工具放弃兼容。

静态 JavaScript 分析:零依赖的切入点

REA 有一个设计选择值得注意:静态 JavaScript 分析不需要任何引擎(不需要 Hopper、Ghidra 或 IDA)。

为什么?因为 JavaScript / Electron 应用的源码本质上就是文本。ASAR 包只是把文件打包在一起,没有编译成二进制。REA 可以直接解包、解析 AST、追踪模块依赖、恢复函数调用图——全部用 Node.js 做完。

这不是技术细节,是策略选择。REA 把逆向工程的门槛分成了两层:

  • 第一层(JavaScript / Electron / 网站):零依赖,装上就能用。覆盖了大量现代桌面应用(VS Code、Slack、Discord 都是 Electron)和所有网站。
  • 第二层(Native 二进制):需要 Hopper 或 Ghidra。覆盖了需要深度分析的场景。
第一层是"80% 的需求用 20% 的工具满足"的经典策略。大多数开发者想了解一个 App 怎么实现某个功能,不需要反汇编 native 代码——看看 JavaScript 层的调用链就够了。REA 把这个最常见的场景做成了零门槛入口,然后让需要更深分析的用户自己接入 Hopper。

证据和局限性:信任的基石

REA 的每个分析结果都包含两部分:Evidence(证据)和 Limitations(局限性)。

  • 证据:函数地址、调用链、字符串引用、控制流图
  • 局限性:哪些函数没分析、哪些路径没覆盖、哪些结论是推断而非确证
这不是锦上添花,是信任的基石。agent 给出的结论如果只是一个断言——"这个功能用了 Core Animation 的私有 API"——你只能选择信或不信。但如果它附带了证据链——"在 offset 0x4a3c 处调用了 _CAViewSetScale,该函数在 Core Animation 私有头文件中存在,调用链经过 -[AppWindow mouseMoved:] → -[AppWindow handleHover:] → _CAViewSetScale"——你可以自己验证。

局限性标注更重要。agent 主动告诉你"我没分析到这个函数的返回值"或"这个调用链基于字符串匹配,可能有误报",这比假装全知全能要可信得多。承认无知是信任的前提——这个道理对人类成立,对 agent 也成立。

这意味着什么

REA 代表的趋势不只是"逆向工程自动化"。更深层的变化是:专业工具正在从"专家直接操作"变成"agent 编排调用"。

Hopper 和 Ghidra 不会消失——它们仍然是最好的二进制分析引擎。但操作它们的"人"变了。以前是逆向工程师手动操作,现在是 agent 自动编排,人类审查结论和证据。

这个转变和之前发生的事很像:数据库不会消失,但操作数据库的从 DBA 变成了 agent 调用 SQL;浏览器不会消失,但操作浏览器的从人类变成了 browser-use。工具不变,操作者变了——这是 agent 时代的一个核心模式。

REA 把这个模式带到了逆向工程领域。2963 颗星说明这个需求一直存在,只是之前没有合适的接口让 agent 介入。MCP 提供了接口,REA 填充了内容。

下一步值得关注的不是 REA 本身能做多少事,而是当 agent 能自主逆向分析时,软件保护的博弈会怎么变化。如果任何 agent 都能拆解你的二进制、理解你的实现、复刻你的功能,"通过闭源保护知识产权"这个策略还剩多少价值?这个问题,REA 没有回答,但它让这个问题变得紧迫了。

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens