REA:把逆向分析交给AI Agent的本地化证据驱动设计全解析
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
REA(Reverse Engineer Anything)能帮你的 AI Agent 完成一件事:在没有源码的情况下,对一个应用做逆向分析——从界面行为一路追到原生二进制的函数级实现,并且每一步结论都附带可回查的证据,分析全程在本地完成。你不用再向模型问"它大概是怎么实现的"然后接受一段脑补。
⚙️ Agent 驱动本地分析的机制拆解
Agent 与 REA 的协作是一条"调用—取证—追问"的链路,大致分五步:
- Agent 通过 MCP 协议调用 REA 打开目标文件,指定分析引擎(provider);
- REA 按分析师任务调用工具:
inspect看事实、search找候选、trace追关系、decompile出伪代码、xrefs找交叉引用; - 每一步的结果内联返回一份 Evidence 记录,而不是一句结论;
- Agent 基于证据继续追问,或据此写实现、做测试;
- 同一套工作流也通过 CLI 暴露,人可以直接在终端执行任意一步。
Evidence 记录包含工件身份(分析的是哪个文件、哪个版本)、源位置、观测事实与推导结论的区分、置信度与限制,以及显式的"未知项"。对 Agent 来说,这意味着它永远可以回答"证据在哪",而不是用流畅的话术掩盖不确定性。官方工具设计文档对证据契约的定义:
Return complete evidence inline, with artifact/provider identity, source locations, Evidence references, and relevant confidence and limitations. Missing coverage is unknown, not absence.
这句话值得反复咀嚼:工具返回的是完整证据内联在结果里,且覆盖不到的地方记为"未知",而不是"不存在"。
🧾 "缺失是未知,不是空"的证据契约
想象你问 Agent:"这个 App 有没有调用境外接口?"它如果只读了本地代码,网络行为根本没有被观测覆盖。按证据契约,正确的回答是"这部分没覆盖到,属未知",而不是"没有"。REA 的 Evidence 记录把"观测事实"和"推导结论"分开存放,未解决的边(unresolved edges)会被保留下来而不是被悄悄抹平,置信度和限制条件跟着每条结论走。重建校验也遵循同一口径:只报告"通过、失败或未知",绝不把没验证到的项目算作验证通过。这样你的 Agent 拿到的不是一串"看起来很有把握"的断言,而是一条可以逐环回查的证据链。
这条契约的边界同样明确:REA 展示结论是如何得出的,但不声称能恢复原始源码,也不会自动克隆应用。它把"未知"当作一类合法结果处理,而不是为了给出答案去编造覆盖率——官方 MCP 契约里甚至写明,未知的统计量直接省略,不虚构百分比。
🏠 数据不出机器的本地分析边界
假设你要分析一个未发布产品的内部构建:放到任何在线分析服务,等于把未公开的实现交出去。REA 的做法是不提供托管分析服务,目标文件留在本地磁盘。原生深度分析复用你机器上已有的 Hopper、Ghidra 或 IDA 安装,setup 在你批准后才可选安装 Hopper;静态 JavaScript 和 .NET 检查甚至不需要任何逆向引擎。它与引擎之间的通信走认证的本地私有 socket,而不是暴露一个网络端口。环境体检也是一键命令:rea doctor检查宿主、依赖、引擎和 Agent 配置,输出报告但不做任何修改——只报告、不动手,和整体基调一致。
注意边界:"本地"指的是 REA 这一侧。分析结果最终会进入 Agent 的上下文并交给模型,而你的模型服务商有自己的数据策略,这部分要自行评估,不属于 REA 承诺的本地范围。
📦 覆盖原生二进制到固件的能力矩阵
| 目标类型 | 分析能力 | 依赖条件 |
|---|---|---|
| 原生二进制(Mach-O / ELF / PE) | 伪代码、汇编、字符串、符号、交叉引用 | Hopper、Ghidra 或 IDA 之一 |
| JavaScript / Electron | 模块图、导入、Source Map、IPC 通道静态映射 | 仅 Node.js,无需逆向引擎 |
| .NET 程序集 | 元数据、CIL 指令、构建对比 | 无,纯静态不加载执行 |
| Android APK | 清单声明、类搜索、方法反编译 | 无头 JADX 与完整 JDK |
| 网站 | 页面结构、脚本、网络元数据、截图 | Chrome 系浏览器,被动观察 |
| Linux 固件 | 区域检查、显式提取、原生分析交接 | Binwalk / Unblob |
同一套能力通过 MCP 工具(给 Agent)和 CLI 命令(给人)两个入口暴露,二者共享相同的工作流和证据契约。README 明确区分了两种模式:静态检查只读取你提供的文件,不运行应用;运行时观察会以你的用户权限启动或交互目标,每类运行时能力都有单独的文档说明副作用。
🚀 三步接入:从注册到出第一个结果
第一步,注册到 Agent:
npx rea-agents setup交互式选择要接入的 Agent(Claude Code、Codex、Cursor、Gemini CLI 等),批准前先展示完整变更计划并备份现有配置,完成后重启 Agent。
第二步,直接提问。把目标应用和功能换进这句话里:"Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project." Agent 会自动完成"打开二进制 → 搜索线索 → 跟踪交叉引用 → 反编译关键函数"的完整链路。
第三步,终端验证(可选)。静态 JavaScript 分析零依赖、一条命令出结果:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json无需 MCP 配置、无需逆向引擎、不会执行目标应用,返回模块图和明确标注的限制。日常使用可用npm install --global rea-agents装好rea命令,用rea update跟进版本。
一句话立场
REA 的核心立场是:把证据交给 Agent,把判断留给你——它展示结论是如何得出的,但不声称恢复原始源码,也不把缺失的证据当成验证通过。细节可查 MCP 契约 与 CLI 与证据指南。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考