REA 逆向工程工具完整指南:让 AI Agent 读懂二进制,并拿得出证据
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
如果你在找一款能接入 AI Agent 的逆向分析工具,REA(Reverse Engineer Anything)值得放进工具清单。它把二进制反汇编、JavaScript 应用分析、.NET 程序集检查等逆向能力封装成一个本地 MCP 服务器和 CLI,让 Claude Code、Cursor 等 Agent 可以直接调用真实分析工具,而不是凭训练数据"猜"代码。所有分析在你的机器上完成,每条结论都附带可追溯的证据。
上图是 REA 的典型工作画面:Agent 通过认证桥接驱动 Hopper 反汇编一个 Mach-O 可执行文件,左侧是逐段反汇编结果,右侧面板显示文件加载器、地址段归属和分析进度。这类"Agent 操作专业反汇编器"的链路,正是该项目区别于普通提示词方案的地方。
🎬 从一个真实需求说起:看到功能,想搞清楚它怎么做的
假设你在某个 App 里看到一个不错的交互细节,想在自己的产品里实现类似效果。传统做法是自己打开反汇编器,从符号和字符串找线索,再逐层追交叉引用,耗时且依赖经验。
REA 的做法是把这条链路交给 Agent:你只需描述目标,例如"帮我理解这个应用里搜索功能是怎么工作的,展示证据,然后为我的项目实现类似功能"。Agent 会依次完成打开目标、检索线索、追踪引用、反编译关键函数这些步骤,并在最后给出解释和可运行的实现参考。
官方把整个过程概括为三条主线:先反编译(恢复可读的字符串、符号、伪代码),再理解(追踪代码路径直到能解释行为),最后重建(把结论落到你自己的代码里)。CLI 命令和 MCP 工具走的是同一套工作流,所以你既可以让 Agent 全程代劳,也可以在终端里单独复现某一步。
🔍 拆解核心设计:本地引擎 + 统一工具契约
REA 的架构可以用三句话概括:引擎可插拔、契约统一、通信走本地。
引擎可插拔。原生二进制的深度分析复用你已有的 Hopper、Ghidra 或 IDA 安装,setup 流程在获得批准后还可以安装 Hopper。而静态 JavaScript 和 .NET 分析完全不需要逆向引擎——直接读取你提供的文件即可。这意味着工具成本取决于你的目标类型,而不是被迫绑定某一家反汇编器。
契约统一。REA 把 120 多个 MCP 工具按"分析师任务"而不是"引擎 API"来设计。工具命名对应动作和对象(检查、搜索、追踪、对比、采集),而不是暴露某个引擎的内部接口。设计原则写得很直白:把观测事实与推导结论分开,为关键关系保留证据引用,未解决的边就保留为未解决(详见 工具设计文档)。对 Agent 来说,这意味着它在 Ghidra 和 Hopper 之间切换时,面对的是同一套语义。
通信走本地私有通道。REA 没有托管分析服务,官方安全模型的表述是:当前各 provider 都在本地完成工件分析和行为捕获。它与 Hopper、Ghidra 之间通过本地私有 socket 通信,不向网络端口暴露服务。如果你的环境配置有问题,用一条命令体检:
npx -y rea-agents@latest doctordoctor会检查宿主环境、依赖、分析引擎和 Agent 注册状态,但不会修改任何配置。
📌 证据链:为什么每个结论都能被追问
普通"让 AI 读代码"的方案,输出是一个自洽的答案;REA 的输出是一份证据记录。每条 Evidence 至少包含四层信息:
- 观测事实:实际看到了什么——反汇编指令、字符串、元数据、文件偏移;
- 工件与提供者身份:分析的是哪个文件的哪个版本,用的是哪个引擎的哪个版本;
- 置信度与限制:结论的可信程度和适用边界;
- 未知项(Unknowns):明确列出没查到的部分。
其中最关键的一条原则是:缺失的证据算"未知",不算"空",也不算"否定"。重建校验只会报告通过、失败或未知三种状态,"没验证到"永远不会被记成"验证通过"。这些契约在 MCP 契约文档 中有完整定义,所有产出证据的工具都遵循同一结构,因此不同版本、不同函数的证据记录可以直接交给对比工具做差异分析。
落到使用体验上就是:当 Agent 给出一个逆向结论时,你可以追问"证据在哪",而它真的能指给你看。
🧩 能分析什么:一套契约覆盖的目标类型
同一套工具契约下,不同目标类型的分析深度和依赖如下:
- 原生二进制(Mach-O / ELF / PE):伪代码、汇编、字符串、符号、调用与引用关系;需要 Hopper、Ghidra 或 IDA 之一。
- JavaScript / Electron 应用:模块结构、导入关系、Source Map、IPC 通道和原生插件边界的静态映射,不需要运行目标应用,也不需要逆向引擎。
- .NET 程序集:元数据、CIL 指令、声明的原生依赖,以及构建版本对比;纯静态,不加载不执行。
- Android APK:清单声明、类检索、方法反编译,基于无头 JADX,无模拟器。
- 网站:页面结构、脚本证据、网络元数据和按需截图,属于被动观察。
- 固件:Linux 固件的区域检查与显式提取,依赖 Binwalk / Unblob。
所有能力同时通过 CLI 和 MCP 两种形态暴露:终端里单独跑一步,或让 Agent 编排完整链路,用的是同一套结果契约。各目标的具体前置条件可以查 安装文档 和 CLI 指南。
🚀 快速上手:三步接入你的 Agent
注册。安装 Node.js 和 npm 后运行:
npx rea-agents setup交互选择要接入的 Agent(Claude Code、Codex、Cursor、Gemini CLI 等),流程会先展示完整变更计划,批准后才写入,并备份现有配置。完成后重启 Agent。
提问。直接描述目标,例如"研究这个 App 的搜索是怎么实现的,展示证据,并在我的项目里实现一个类似功能"。Agent 会自动串起完整调查链路。
终端验证(可选)。静态 JavaScript / Electron 分析零逆向依赖,一条命令出结果:
npx -y rea-agents@latest analyze-javascript-application /绝对路径/到/app --json返回内联证据、恢复的模块图和明确标注的限制,不需要 MCP 配置。需要长期使用也可以全局安装rea-agents获得rea命令,完整命令集见 CLI 与证据指南。
⚖️ 边界与选型:REA 明确不做的事
选型之前,建议先看清几个边界声明:
- 不承诺恢复原始源码。REA 展示的是"结论如何得出"的过程,返回伪代码、汇编和模块关系;把它当成"自动还原源码"的工具会失望。
- 数据主权在你,但模型侧另有政策。分析全程本地,目标文件不上传任何云端;不过 Agent 收到的工具结果会进入你使用的模型服务商,其数据政策需要单独评估。
- 运行时能力有真实副作用。静态分析只读文件;但浏览器观察、进程捕获这类运行时功能会以你的用户权限运行或交互目标,使用前的各篇运行时指南描述了具体影响范围。
- 失败不会被静默掩盖。引擎不可用会显式报错(可用
rea doctor诊断),而不是悄悄换到另一个引擎给你一份"看起来能用"的结果。
如果你要评估的是一次性、隐私敏感的目标(未发布产品、内部工具、安全研究),且手边已有 Hopper / Ghidra / IDA 之一,REA 的本地化模型基本是为这类场景设计的。更多工作流细节可以看 文档总览 与 README。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考