REA 逆向工程神器:一个 MCP 服务器让 AI 智能体读懂任何程序,无需源码也能复刻功能
在 macOS 上刷到一个顺手的离线搜索、一套流畅的更新机制,第一反应往往是:它是怎么做到的?过去要回答这个问题,得亲手打开反汇编器,在字符串、符号和调用图之间泡上几天。现在,借助 REA(Reverse Engineer Anything) 这样的开源 逆向工程 MCP 服务器,你只需要把应用交给 AI 编程智能体,它就能沿着二进制证据一路追踪,解释某个功能的真实实现方式,甚至直接在你的项目里重建一个适配版本。
REA 把繁琐的逆向工程流程封装成一组 CLI 与 MCP 工具:智能体可以打开编译后的应用、反编译出伪代码与汇编、沿调用关系理解控制流,再把结论转化为代码。整个过程跑在本地,不上传任何二进制文件。下面从产品逻辑到部署命令,完整拆解这个工具。
REA 产品介绍:为智能体而生的逆向工程工具
REA 的核心理念可以用一句话概括:看到喜欢的功能,理解它的原理,按照你的方式实现。它不追求恢复原始源代码——任何反编译器都无法保证这一点——也不做整应用克隆,而是扮演"调查员"的角色:打开目标、寻找线索、建立关系、追踪实现,最终呈报证据、限制与未知项。
它的工作流分三段递进:
- 反编译(Decompile):打开原生应用或可执行文件,恢复过程、伪代码、汇编、字符串、符号、段和元数据;
- 理解(Understand):沿调用者、被调用者、交叉引用和调用图追踪,直到能解释某个功能或算法的实际工作方式;
- 重建(Recreate):把学到的东西变成适合你技术栈、界面和需求的产品功能。
REA 通过 CLI 与 MCP 双接口对外提供同一套能力:在终端里跑完命令即关;接入编程智能体后,则在整个调查会话期间保持目标应用打开,连续追问无需重新分析。它负责工具配置、应用启动、会话维持和资源清理,智能体只需专注提问与写代码。

REA 核心功能:一个提示词跑完完整调查
REA 最吸引人的用法是"一句话调查"。安装完成后,直接向智能体描述需求,比如:
逆向工程"备忘录"应用。解释搜索功能的工作方式,说明你是如何得出结论的,然后为我的项目构建类似功能。
智能体会自己定位应用、把程序文件交给 REA,并按下面的路径推进:
| 步骤 | 智能体的操作 | 用到的 REA 工具 |
|---|---|---|
| 1 | 打开并识别二进制文件 | open_binary、binary_overview |
| 2 | 搜索可能的离线搜索线索 | search_strings、search_procedures、list_names |
| 3 | 将线索连接到可执行代码 | find_xrefs_to_name、xrefs、procedure_callers |
| 4 | 重建相关控制流 | get_call_graph、procedure_callees、procedure_info |
| 5 | 反编译相关程序 | procedure_pseudo_code、procedure_assembly、batch_decompile |
| 6 | 在你的项目中构建该功能 | 适配你技术栈、产品和需求的代码 |
前 5 步的二进制分析全部由 REA 完成,第 6 步由智能体用常规的文件编辑与测试工具落地。调查始终以二进制证据为依据,每一步结论都可回溯。
这套能力背后是超过 110 个分门别类的 MCP 工具:
| 工具类别 | 数量 | 代表能力 |
|---|---|---|
| 二进制检查 | 39 | 过程、伪代码、汇编、字符串、名称、段、调用者、被调用者、交叉引用、注释 |
| 组合分析 | 15 | binary_overview、analyze_function、inspect_native_api、batch_decompile、get_call_graph、Swift 与 ObjC 发现 |
| macOS 原生工具 | 7 | Mach-O 元数据、代码签名、plist、架构与 Swift 符号还原,无需启动 Hopper |
| 制品图谱 | 5 | 目录与软件包内联检查、Interface Builder UI 图解、Apple 资源目录元数据、事务式提取 |
| Managed PE/CLI | 8 | .NET 身份、元数据成员、CIL、P/Invoke 边界验证、反编译重建导入、跨版本比较 |
| 浏览器观察 | 9 | CDP 抓取、bundle/source map 分析、WebMCP 发现、会话时间线、capture diff |
| Electron 分析 | 5 | 被动观察、静态应用映射、静态/运行时对账 |
| JavaScript 运行时 | 2 | Node/Electron Inspector 目标发现、脚本与执行上下文观察 |
| 应用工作流 | 10 | 跨层追踪、跨版本图比较、返回形状比较、重建覆盖闭合 |
| 二进制会话 | 22 | 会话管理、证据包、重放状态机、制品与函数比较、残余未知项注册表 |
REA 技术优势:本地运行,证据优先
和"让大模型猜实现"的做法不同,REA 的设计处处围绕可验证性展开:
- 为智能体设计:直接询问编译后应用的行为,让智能体搜集证据,而不是凭训练记忆猜测;
- CLI 与 MCP 同源:终端和编程智能体用的是同一套分析引擎,结论格式一致;
- 复杂流程自动处理:工具设置、应用打开、调查推进、资源清理全部由 REA 兜底;
- 本地运行:分析在你的 Mac 或 Linux 机器上完成,二进制不会被上传到托管分析服务;
- 保留会话上下文:连续调查多个二进制文件,无需为每个问题重启整个分析过程;
- 人机协作:可以在 Hopper 里留下名称、注释与书签,人的分析与智能体的分析互相增强。
安全模型方面,每个桥接会话使用随机能力令牌和仅限当前用户的 Unix 套接字;协议消息有大小限制,面向调用者的错误不暴露启动器 stderr 或内部异常原因。Ghidra 会话使用隔离的临时项目,不会触碰用户自己的 Ghidra 工程。需要清醒认识的是:REA 不是沙箱,无法防御同用户身份运行的恶意进程,打开不可信二进制文件意味着本地分析引擎将以当前用户权限进行解析。
REA 安装与使用教程
环境要求
开始之前请确认:
- macOS 12 或更高版本;或 Ubuntu 24.04+、Fedora 41+、64 位 Arch Linux
- Node.js 22.19+ 或 24.11+,以及随 Node 安装的 npm
rea setup 会先展示完整变更计划再请求确认,不会替你安装或更新 Homebrew、Node.js、npm。缺少 Hopper 时,Setup 会提议安装官方软件包——Hopper 是需要单独许可证的独立软件。
第一步:安装 REA
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
npx --yes rea-agents@latest setup
如果 macOS 或安装程序弹出确认提示,完成提示后再次运行同一条命令即可。
第二步:重启编程智能体
Setup 会自动检测 Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf 和 Devin,并配置前六种客户端;检测到 Devin 时只会报告而不会修改(目前没有明确的本地 MCP 配置边界)。重启已配置的客户端,让它加载 REA 工具。
也可以手动给任何支持本地 MCP 服务器的智能体添加配置:
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
}
第三步:直接向智能体提问
不必指定路径,直接说出应用名称,智能体会自己找到应用并接管后续分析:
使用 REA 逆向工程"备忘录"应用。解释搜索功能的工作方式,展示证据,然后使用 SQLite 为我的项目构建一个类似功能。
如果遇到问题,运行诊断命令:
npx -y rea-agents@latest doctor
不想用时干净卸载:
rea uninstall
rea uninstall --purge-data
进阶:Ghidra 与 Linux 用户
如果你已在 64 位 Linux 上装好 Ghidra 12.1.4 PUBLIC 和完整的 64 位 JDK 21,Setup 可以在批准后登记 GHIDRA_INSTALL_DIR 和可选的 JAVA_HOME。REA 不会下载、安装或修改 Ghidra 或 Java;Ghidra provider 在隔离的只读 headless 会话中提供清单、反编译、汇编、调用关系、带类型的引用、xref、CFG 与函数 dossier,GUI 状态与修改操作不可用。
Linux 上,REA 会下载 Hopper 官方 DEB、RPM 或 Arch 软件包,校验发布方提供的大小和校验和后,通过 apt-get、dnf 或 pacman 安装依赖;非 root 运行时由 pkexec 弹出系统授权提示,REA 不调用 sudo。默认启动器是 /opt/hopper/bin/Hopper,自定义安装可设 HOPPER_LAUNCHER_PATH。若 Doctor 报告缺少分析引擎,执行:
ldd /opt/hopper/bin/Hopper | grep 'not found'
补齐缺失的系统库后重新运行 rea setup。REA 会在私有 Xvfb 显示器上运行受支持的 Hopper 演示版,无需桌面 DISPLAY 或付费许可证(演示版受厂商限制)。记得确认 ~/.local/bin 已加入 PATH。
终端里直接用
不想走智能体,也能在终端快速查看一个应用:
npx -y rea-agents@latest analyze /Applications/Notes.app
也可以全局安装 rea 命令:
npm install --global rea-agents
rea --help
rea mcp
REA 可以直接打开 Mac 的 .app 文件夹。REA 会在需要时自动启动 Hopper,无需预先运行;由于 Hopper 启动器内部会激活应用,窗口可能短暂出现在前台。关闭 REA 会话会终止桥并删除私有套接字目录,但不会退出你正在使用的 Hopper。
REA 应用场景:从功能复刻到安全审计
- 功能研究与复刻:看到竞品应用里喜欢的功能,调查其原理后为自己的产品构建量身定制版本;
- 黑盒理解:在没有源代码时解释某项功能的实现方式,重建应用的身份验证、存储、更新或网络流程;
- 格式与接口文档化:恢复足够的结构,记录未公开的格式或接口;
- 可疑行为溯源:从字符串或符号追踪到实现可疑行为的代码;
- 版本对比:在一个会话中切换两个应用版本,比较实现路径的差异;
- Apple 生态分析:解析 Swift 和 Objective-C 元数据,免去手动拆解修饰符号的麻烦。
总结与项目地址
REA 把过去只属于专业逆向工程师的工作流,压缩成智能体背后一个统一的 MCP 接口:反编译获取线索、理解还原逻辑、重建交付代码,全程本地运行、证据可查。对开发者而言,它最大的价值不是"破解",而是让"某个功能究竟怎么实现的"变成一个可以用自然语言提问、几小时内拿到答案的工程问题。
- GitHub 仓库:https://github.com/morluto/rea
- 快速开始:
npx rea-agents setup