REA(逆向工程任何东西)是一种 MCP 服务器,可让您实时对软件应用程序、二进制文件和行为进行逆向工程。该工具涵盖了从应用程序行为到机器代码的路径,并且可以方便地使用OpenCode作为管理它的代理。
OpenCode 是一个位于终端中的开放编程代理。它读取项目文件、编辑代码、运行命令和测试,最重要的是,它开箱即用地支持 MCP,因此 REA 可以直接连接到它。
REA 的独特之处
REA 在逆向工程领域脱颖而出,全面支持多种平台和分析类型:
- 本机二进制文件:用于反汇编和反编译的 Hopper、Ghidra、IDA 或 Kuna
- JavaScript 应用程序和 Electron:Electron 模块、导入和边界的静态分析
- 托管代码:分析 .NET 程序集
- 实时分析:监控进程行为
- 网络流量:捕获和分析 HTTP/S 请求和响应
- 移动应用程序:分析 Android 和 iOS 的 APK 和 IPA 文件
- 嵌入式软件:嵌入式系统和物联网设备分析
- 模型文件:提取 GGUF 和安全张量元数据
- GPU 代码对象:CUDA 和 HIP 内核分析
- 保存游戏:恢复游戏逻辑和可执行文件
基本架构和哲学
REA 遵循三步研究流程,使开发人员能够进行逆向工程:
- 检查:REA 连接到分析工具并检查目标(二进制文件、应用程序、网站)
- 分析:跟踪代码,确定规则和行为
- 恢复:代理使用结果来解释行为并构建或测试实现
这个过程允许AI代理回答复杂的问题,例如:“了解Notes应用程序中的搜索如何工作,向我展示证据,并为我的项目创建类似的功能。”
实际使用示例
1。移动应用分析
REA 可以分析 Android APK 文件进行恢复:
- 清单中的声明和权限;
- 类方法和依赖项;
- 指向本机库的链接;
- 网络端点和数据流。
例如,对 Aegis Authenticator 的分析显示了六位授权代码如何每 30 秒更改一次:它检查了基于时间的代码生成 (TOTP) 的工作原理。
2。桌面应用功能提取
对 Windows 计算器中 % 按钮的分析展示了 REA 的功能:
- 根据上下文定义不同的行为(+ 或 × 之后);
- 解析汇编指令以理解逻辑;
- 提取并解释数学运算;
- 恢复规则:“+之后:第一个数字的10%”和“×之后:将10%转换为0.1。”
3。恢复Web应用程序API
REA 可以记录浏览器会话并将其重建为 RL 环境,其中 AI 代理执行诸如处理文件夹之类的任务,而无需运行原始应用程序。
4。恢复游戏逻辑
DX-Ball 案例展示了 REA 如何通过逆向工程 C 代码来恢复 1996 年 Windows 游戏的声景计算,该代码运行了 3,205 个测试用例并与原始编译代码相匹配。
技术能力
本机分析
- 与 Hopper、Ghidra、IDA 或 Kuna 配合使用,进行深度二进制文件分析
- 支持 ELF、PE、Mach-O 等可执行文件格式
- 提取伪代码、汇编程序、符号和调用
- 无需启动原始工具即可执行离线分析
JavaScript 分析
- 分析 Node.js 和 Electron 应用程序
- 跟踪模块导入和依赖项
- 通过浏览器连接实时捕获行为
- Извлекает source maps и минифицированный код
安全
- PE 证书的静态分析(Authenticode)
- 防御机制分析(PIE、NX、RELRO、CFG)
- 映射导入和 DLL
- 崩溃报告分析 (Apple IPS)
REA 返回什么
REA不会无缘无故地给代理人现成的结论。每个查询的结果都是调查结果及其所依据的证据。根据目的,响应包括:
- 代码链接 – 实现所研究功能的特定文件和行。
- 伪代码和汇编器 – 用于本机二进制文件:反编译函数、指令和调用之间的连接。
- 应用程序结构 – 适用于 JavaScript 和 Electron:模块、导入、路由、IPC 以及与本机插件的连接。
- 元数据和事实 – 清单、证书、签名、格式标头和其他静态数据。
- 限制 – 无法解决的地方,并附有关于到底什么仍然未知的注释。
代理使用这些数据来解释行为、回答澄清问题或组装和测试其实现。正是证据的存在和明确的限制将 REA 结果与模型的简单猜测区分开来。
开始之前
假设已经安装了 OpenCode 并且模型已连接到它。 REA 本身需要 Node.js 22.23.4+、24.22.1+ 或 26.12.1+,因此请检查版本:
node -v
第 1 步:将 REA 连接到 OpenCode
REA 在 OpenCode 中注册为 MCP 服务器。在终端中运行:
npx rea-agents@latest setup
要直接指定 OpenCode,请使用其标识符 opencode:
npx rea-agents@latest setup --client opencode
设置的作用:
- 将 REA 注册为 MCP 服务器;
- 添加工作流程说明;
- 制作现有配置的备份副本;
- 在应用更改之前要求确认。
重点:
对于第一个实验,您可以跳过可选的 Hopper 安装。设置完成后,重新启动 OpenCode:退出会话并再次运行 opencode。
检查连接:
npx -y rea-agents@latest doctor --client opencode --json
成功结果:"healthy": true。
然后询问代理:
“检查 REA 是否已连接,并告诉我您可以使用哪些 REA 工具。”
第 2 步:首次调查
REA 可以在不启动应用程序的情况下分析它们。
- 下载示例:
Download https://rea.tools/examples/notes-example.zip将存档解压到
notes-example. - 为代理分配任务:
“使用 REA 检查
/absolute/path/to/notes-example处的应用程序。了解当我单击“导出笔记”时会发生什么。显示notes.csv 的写入位置、包含哪些字段以及相关文件和行。”
文件夹中
预期响应:
“按钮发送
notes:export消息。主进程将注释格式化为 CSV 并将notes.csv写入用户的下载文件夹中。列是id和title。”
第3步:Ghidra安装和原生分析
为了分析本机二进制文件(可执行文件和库),REA 使用分析提供程序。最实惠的免费选项是 NSA 的 Ghidra。该工具在运行 REA 的计算机上安装一次。
你需要什么
- 64 位 JDK 21 或更高版本,包括 Java 编译器 (
javac)。 - 发布页面上的 Ghidra 存档。
安装
- 安装 64 位 JDK 21 或更高版本。选择适合您的计算机架构的软件包。
- 从发布页面的资产列表中下载 Ghidra 并解压缩
ghidra_…_PUBLIC_….zip存档。获取发布存档,而不是“源代码”。 - 找到包含
ghidraRun或ghidraRun.bat的解压文件夹。GHIDRA_INSTALL_DIR变量需要此路径。
看看Java。第一个命令打印 java.home – JAVA_HOME 需要此路径。第二个确认编译器已安装:
java -XshowSettings:properties -version
javac -version
Ghidra 连接
Windows(PowerShell):
$env:GHIDRA_INSTALL_DIR = "C:/tools/ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:/tools/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
macOS / Linux:
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
将路径替换为您自己的路径。将命令保留在一个终端会话中:设置环境变量后,重新运行安装程序,确认配置更新并重新启动 OpenCode。
提供商检查应返回成功的报告:
npx -y rea-agents@latest doctor --provider ghidra --json
原生分析示例
为代理提供可执行文件的完整路径并指定提供程序:
“使用 REA 和已配置的提供程序来探索
/absolute/path/to/program。列出函数和行,然后解释处理用户输入的部分,并参考代码。”
或者直接从终端运行命令:
npx -y rea-agents@latest function "/absolute/path/to/program" main --provider ghidra --json
将 main 替换为目标程序函数列表中的函数名称或地址。结果包含伪代码、汇编程序和调用之间的引用。
另一类软件分析
选择目标软件类别:
- JavaScript / Electron – 需要 Node.js 和 npm。 指南。
- 网站 – 需要 Chrome、Chromium 或 Edge 浏览器。 指南。
- Android APK – 需要 JADX 和 JDK 17+。 手册。
- 本机可执行文件 – 需要 Hopper、Ghidra 或 IDA。 指南。
- .NET 程序集 – 需要 Node.js 和 npm。 手册。
从终端使用 REA
JavaScript/Electron 应用程序的静态分析
npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/app" --json
将路径替换为包含应用程序或 .asar 文件的文件夹。
在哪里可以找到 Electron 应用程序 .asar 文件:
- Windows:
C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar - macOS:
/Applications/<App>.app/Contents/Resources/app.asar - Linux:
/opt/<App>/resources/app.asar
全局安装rea命令
npm install --global rea-agents
此后,rea –help 命令可用。
通过curl安装(macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
安装后,按照说明配置代理。如果未出现设置菜单,请运行rea setup。
更新和删除
REA 更新
npx rea-agents@latest setup
对于全局安装:rea update
删除 REA
npx rea-agents@latest uninstall
获取帮助
- 常见问题解答:rea.tools/faq/ – 有关更新、代理和分析的快速解答
- 指南:rea.tools/guides/ – 二进制、Electron 和浏览器分析示例
- GitHub 问题:github.com/morluto/rea/issues – 报告问题
- Discord:discord.gg/GkcryMnJDM – 问题、调查和正在进行的工作
典型问题
OpenCode 没有看到 REA
设置后重新启动 OpenCode。使用doctor命令测试连接:
npx -y rea-agents@latest doctor --client opencode --json
提供商需要配置
对于 Ghidra 运行:
npx -y rea-agents@latest doctor --provider ghidra --json
该报告将显示失败的测试和建议的下一步。
Windows、WSL 和带空格的路径
- 对 Windows 客户端使用 PowerShell
- 如果代理在 WSL 内运行,请在该 Linux 系统内安装 Node.js 和 REA 并使用 Linux 路径
- 在终端中,将带有空格的路径用引号引起来
在 macOS 上设置 Hopper
如果 macOS 要求您允许自动化,请在系统偏好设置中允许运行 REA 的应用程序:系统偏好设置 → 隐私和安全 → 自动化,然后重试。
链接
https://github.com/morluto/rea
https://rea.tools/
https://rea.tools/get-started/
https://rea.tools/guides/
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/mcp-servers/
Leave a Reply