工具描述
REA(Reverse Engineer Anything)是一个开源的逆向工程引擎,把"读一个程序到底怎么工作"这件事变成了一次对话。它本体是一个 MCP 服务 + CLI,你装在你的编码 Agent 里;你用大白话提一个问题("为什么恐龙越跑越快""% 按钮在加号之后为什么是这么算的"),它负责把目标程序的指令、引用、反编译结果、运行时观察扒回来给 Agent,Agent 据此把规则讲清楚、并写一个等价的小实现给你看。
用途
它把逆向里最耗时的"开 Ghidra → 跟调用链 → 读汇编"这段,压缩成一次提问。典型用途:
逆向任意目标:原生二进制(PE/ELF/Mach-O)、JS/Electron 应用、网页与浏览器运行时、Android APK、固件、SQLite 库、WASM、抓包记录、.NET 程序集、Go/Rust 二进制等。给它一个目标 + 一个问题,它返回行为解释,你据此重建该功能。
安全侧初筛:恶意样本丢进去,先拿一版行为摘要 + 调用链,省掉从零读汇编的时间;摘要进情报前人工复核。
竞品/协议研究:理解闭源功能的实现逻辑,再写个能跑的小实现验证理解。
技术详解
逆向本质是"看程序本身"。REA 把这条链拆成三步,Agent 管"问",REA 管"看":
架构:编码 Agent 通过 MCP 调 REA,底层真正干反编译的要么是你已装的 Ghidra/Hopper/IDA(原生二进制),要么是 REA 内置的静态解析器(ELF/PE/Mach-O/WASM/SQLite 这些不用外挂)。它没重造逆向引擎,只是加了个"智能层"。
两个影响使用的细节:
Playwright 这类重依赖是惰性加载的,第一次调浏览器目标会卡一下,正常,不是崩。
查的目标类型不同,要额外装的依赖也不同,别一次装全。
部署方案
1. 前置:Node.js(JS/Electron 目标需 Node + npm;SQLite 目标需 Node 24.x≥24.15 或 26+)、一个支持 MCP 的编码 Agent(Claude Code / Codex 等)、按你要查的目标补对应后端(见下)。
2. 安装:
npx rea-agents@latest setup它会让你批准一个安装计划,然后必须重启你的编码 Agent——MCP 服务是重启才注入的,这步漏了后面就看不到 REA。
3. 按目标类型补依赖(不用全装):
4. JEB 用户:单独起一个 JEB 的 MCP 客户端,再导出 REA_JEB_MCP_URL 指过去,漏了就连不上。
5. 验证:拿计算器这类小目标把"问→看→重建"跑通一遍,再上复杂目标。
踩坑记录
Agent 里看不到 REA:九成是没重启。MCP 重启才注入,同时确认
server.json注册进了你的 Agent。
原生目标查不出:Ghidra/Hopper/IDA 至少装一个,一个没有就白搭。用 Kuna 深度分析的先
npm run verify:kuna校验可执行文件。
SQLite 不识别:Node 版本不够,得 24.x≥24.15 或 26+。
网页查失败:得有 Chrome 系浏览器;第一次惰性加载 Playwright 会卡一下,别当崩。浏览器观察还得给本地 debugging 端点。
JEB 连不上:漏了
REA_JEB_MCP_URL,它要求"调用方先起 JEB 的 MCP 客户端"。
结果跟已知行为对不上:REA 输出是"发现 + 局限",部分是推断。关键分支对照目标方公开源码交叉验证,再下结论,别只信 AI。
下载地址
开源项目,直接 clone 或 npx 安装:
仓库 / 安装:
npx rea-agents@latest setup,代码仓库在morluto/rea
文档:
rea.tools(get-started 为安装指引,faq 为常见问题)