REA 逆向工程 MCP 服务:10 类分析目标一步接入 AI Agent,逆向二进制到应用行为全程留证据
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
想复刻别人 App 里的某个功能,手头却没有源码——这时你可以让 AI Agent 替你把目标拆开看个明白。REA(Reverse Engineer Anything)就是干这件事的:一个本地运行的逆向工程 MCP 服务(npm 包名rea-agents),把 Hopper、Ghidra、IDA 这类二进制分析引擎,以及 JavaScript/Electron、.NET、网站观察等检查能力,统一接到你的 Agent 或终端里。适合两类人:想让 Agent 参与逆向调查的开发者,以及想脚本化批量分析二进制的工程师。
能力全景:11 类目标各自返回什么、依赖什么
先把结论放前面:除深度原生分析需要至少一个逆向引擎外,其余目标要么零依赖,要么只依赖你机器上已有的工具。运行时基线是 Node.js 22.19+/24.11+/26+ 与 npm,23 与 25 不在支持范围:
| 分析目标 | 返回内容 | 前置要求 |
|---|---|---|
| 原生二进制 | 伪代码、汇编、字符串、符号、调用与引用 | Hopper / Ghidra / IDA 任一 |
| Go 二进制 | 编译器版本、模块、replace 与构建配置 | 无,内置静态 ELF/PE/Mach-O 检查 |
| JavaScript / Electron | 模块图、导入、source map、路由、IPC 与原生 add-on 关系 | Node.js 与 npm,无需逆向引擎 |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖、构建比较 | 无,纯静态 |
| 网站 | 页面结构、脚本、网络观察、指定截图 | Chrome 系浏览器 |
| 已保存网络抓包 | 请求、响应、暴露载荷与来源位置 | HAR;Linux 原生抓包需 mitmdump |
| Android APK | Manifest 声明、类、反编译方法与引用 | Linux/macOS 无头 JADX 与完整 JDK |
| 固件 | 区域划分、解包结果、原生分析交接 | Linux 上的 Binwalk / Unblob |
| EVM 字节码 | 分发选择器、字节偏移、推断参数与可变性 | Linux x64 本地 raw/hex 载体 |
| 包与资源 | 文件清单、摘要、plist、Apple bundle 解剖 | 无 |
| 进程行为 | 终端输出、交互、退出状态、文件系统观察与运行对比 | Linux/macOS 且需原生 PTY |
一条必须记住的分界线:静态 JavaScript 与 .NET 检查只读文件、从不运行目标;而浏览器、进程、Electron 这类运行时捕获会以你的用户权限真实运行或操作目标,每条运行时指南都写明其副作用(见 README.md 的 "What you can analyze")。
上手三步:从注册 Agent 到终端分析二进制
1. 注册 Agent(setup 是保守事务)
npx rea-agents setup流程是:多选要配置的 Agent → 逐条审阅拟议的变更 → 批准。Setup 会写入 REA 的 MCP 服务器注册和配套调查指令(skill),并对已有配置先备份、原子替换、写后校验。它支持的客户端包括 Claude Code、Codex、Cursor、Gemini CLI、Devin、OpenCode、GitHub Copilot CLI、VS Code 等 17 个(--client标识清单见 docs/installation.md 的 "Supported agents")。任何一步失败都会报出具体原因,不会留下半截注册;完成后重启 Agent 即可。
2. 下达第一条指令
直接在对话里说,例如:
Check the terminal app on my Mac: explain how its output highlighting works, list the evidence, then implement a similar highlighter for my project.Agent 会经 MCP 调用 REA 检查目标、追踪相关代码,拿到带证据的发现后,再决定是追问、解释行为,还是动手写实现并测试。
3. 终端直接调用
不经过 Agent 也能跑,且静态 JavaScript 分析连逆向引擎都不需要:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json npm install --global rea-agents # 之后可直接用 rea 命令 rea analyze /absolute/path/to/program --provider ghidra --json # 原生二进制,需先配置 provider幕后机制:入口分发、证据契约、快照复用
这三个源码落点解释了为什么"终端拿到的结果"和"MCP 工具返回的结果"是同一份东西。
入口分发:scripts/rea.mjs 是rea/rea-agents两个可执行入口共用的唯一入口,它在导入任何业务代码之前先做路由——参数是mcp/--mcp时加载dist/mcp/main.js,由 MCP 运行时独占 stdio 服务(对应 server.json 声明的 stdio 传输与mcp启动参数);参数是mcp doctor时加载诊断模块;其余走 CLI,且分发前会检查编译产物是否存在,缺失时直接给出构建指引。CLI 侧先做输出参数校验与净化,--json结果走独立的流式 JSON 输出通道。
证据契约:src/domain/evidence.ts 定义了 Evidence 记录模型——每条证据有evidence_id、工件标识(名称 + SHA-256 + 格式,格式枚举覆盖 mach-o、elf、pe、asar、apk 等)、来源位置(地址、地址区间、文件偏移、工件路径五种形态)、观察与推断,以及一个evidenceAuthority字段,明确区分"来自发行工件、受控重放、历史参考、外部服务、分析者推断"五种权威级别。也就是说,"未决发现"和"分析者的猜测"在数据结构上就无法冒充"工件里直接看到的字节"。src/contracts/ 目录集中了工具输入输出契约,错误契约由 docs/error-contract.schema.json 描述。CLI 还提供evidence-import(校验已有 bundle)、evidence-export(导出规范形式)、rea compare(两个 bundle 对比)。
快照复用:当目标字节、操作、参数、provider 与设置完全一致时,REA 直接复用上次结果,且 CLI 缓存命中发生在启动 provider 进程之前——对要拉起 Ghidra/Hopper 的场景,这是实打实的提速。快照文件保存在本地、使用仅限属主的权限;MCP 侧open_binary可带snapshot_path原子导入,close_binary可带snapshot_path+overwrite: true在释放 provider 资源前保存。详见 docs/cli.md 的快照一节。
进阶与边界:引擎怎么选、版本怎么管、哪里是红线
引擎(provider)选择规则:rea providers --json与rea capabilities --json列出可用引擎及能力。自动选择时只用"唯一支持该目标"的可用 provider;多个候选时报ambiguous,从details.candidate_ids里挑一个;引擎本身不可用报provider_unavailable,此时跑rea doctor --provider ID --json定位。环境变量REA_ANALYSIS_PROVIDER是常设偏好,显式--provider优先级更高;MCP 里则给open_binary传provider_id。选中的 provider 绑定会话直到显式切换或关闭。大二进制可用REA_GHIDRA_STARTUP_TIMEOUT_MS/REA_HOPPER_STARTUP_TIMEOUT_MS提高启动截止期;Ghidra 另支持 16 位 DOS 分析(docs/ghidra-dos.md),Windows 上的 Ghidra 目前是实验性支持(docs/windows-ghidra-p0.md)。
版本策略:仓库 main 分支描述的是当前代码,@latest选的是 npm 发布版——二者不等价。截至 2026-10-11,npm 最新发布为 6.4.0,与 package.json 的version一致;查发布版本用npm view rea-agents dist-tags.latest,功能判断请以已连接服务器实际暴露的工具列表与输入 schema 为准。持久 MCP 注册钉在执行 setup 的那个版本上,装新指令不会自动迁移它——需要在新版的 setup 事务中审阅后才迁移。
更新方式:全局安装用rea update(只更新拥有当前 CLI 的 npm/Bun 全局环境,更新后按提示重跑 setup 刷新注册与 skill);npx 用户跑npx rea-agents@latest setup审阅变更再重启 Agent;一次性命令统一npx rea-agents@latest <command>。
安全边界:分析全程本地进行,目标不会被上传(Agent 模型提供商的数据政策另说)。静态检查不运行目标;运行时捕获会以你的用户权限运行或交互选中目标,副作用在各运行时指南中逐条写明。商业引擎(Hopper、IDA/Hex-Rays、JEB)的许可须你自己合法取得,REA 不附带任何工具授权,也认可不了破解或绕过许可的用法(DISCLAIMER.md)。
实战案例:三个端到端逆向调查,结论都有验证数据
这三个案例的共同点:每一步结论都绑着可复验的验证数据,而不是"看起来对了"。
- DX-Ball:重建声音声像计算目标:一个游戏引擎里的"位置→声像"辅助函数。路径:跟随一次声音调用进入该辅助函数,逐条检查指令,把不完整的伪代码补写成 C。验证:重建的 C 实现通过了 3,205 个 original-x86 用例,并复现了全部 63 个编译后的函数字节。
- Notion:追踪 Electron 剪贴板桥目标:渲染进程的剪贴板 API。路径:从渲染进程入口出发,经 preload 与 IPC 一路追进主进程,最后检查富剪贴板格式的具体处理。
- TH04:恢复 DOS 弹幕环计算目标:PC-98 平台 16 位原作的弹幕角度计算。路径:检查 16 位指令,恢复固定角与瞄准角两套计算。验证:重建的 C++ 与历史编译器的输出做了逐字节对比。
以上结论不是只存在于网站故事里:仓库内 scripts/verify-real-hopper.mjs 等脚本可跑真实引擎全链路验证,tests/boundary 下现有 483 个边界测试文件,构成案例可复验的基线。
快问快答
Q:只做静态 JavaScript 检查,也得装 Hopper 吗?不用。静态 JavaScript 与 .NET 检查零逆向引擎依赖,一条analyze-javascript-application就能跑;只有深度原生分析需要 Hopper/Ghidra/IDA 三者之一。
Q:setup 动我的 Agent 配置,翻车了怎么办?事务是"先备份、后校验"的:配置路径不安全(比如符号链接没解析到当前用户拥有的普通文件)、备份失败、写入失败、写后校验失败,都会各自报出原因并停止,不会留半成品;写后校验失败时提示你修复配置或恢复.rea.backup后重跑。
Q:目标文件会被传到哪台服务器吗?不会。分析在本地运行,只有你的 Agent 拿到工具结果,模型侧的数据政策取决于你选的提供商。
Q:同一个二进制反复查,每次都要等引擎启动吗?快照命中时不需要。字节、操作、参数、provider、设置完全一致就复用结果,且 CLI 在读缓存时根本不启动 provider 进程。
Q:Agent 从 REA 手里拿到的是什么形式的"代码"?原生分析返回伪代码加汇编;JavaScript/Electron 分析恢复模块及其关系;.NET 检查给元数据与 CIL。Agent 基于这些发现自己编写并测试实现,REA 不替你生成成品。
Q:Hopper 需要我提前启动吗?不需要,REA 在操作需要时自行拉起。macOS 首跑可能弹演示模式或激活授权的对话框,建议在同一用户会话里先处理完再跑无人值守任务。
Q:更新 REA 之后,Agent 里的注册要手动改吗?要刷新但不手改:重跑npx rea-agents@latest setup(或全局安装后按rea update提示跑 scoped setup),审阅变更、重启 Agent,旧注册会在事务里迁移。
Q:我的 Node 是 23 或 25,能装吗?不能。支持区间是 22.19+、24.11+、26+,23/25 与预发布版本都不在列。
一页索引:文档、源码目录与合规提示
深入文档:安装与注册 docs/installation.md · 命令、provider 选择与快照 docs/cli.md · 工具结果与会话契约 docs/mcp-contracts.md · Agent 引导式调查 docs/mcp-prompts.md · 错误契约 docs/error-contract.schema.json · 路线图 docs/roadmap.md · 测试说明 docs/testing.md · 架构图 docs/architecture.mermaid。
源码目录对照:src/hopper/、src/ghidra/、src/ida/是三个原生引擎适配层;src/browser/是 CDP/Playwright 浏览器观察层;src/javascript/、src/dotnet/、src/android/、src/evm/、src/firmware/、src/process/对应上表各目标类型;src/application/是 CLI 与 MCP 共享的应用服务(setup、快照、诊断);src/contracts/ 定义全部工具输入输出契约;证据模型本体在 src/domain/evidence.ts。
合规提示:REA 面向合法的研究、教育、互操作与软件保存场景,仅适用于你拥有或已获授权检查的软件;获取必要授权并遵守适用法律是你的责任,商业分析引擎的许可需自行合法取得(详见 DISCLAIMER.md),漏洞请按 SECURITY.md 报告。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考