mcpField
R
REA

REA

本地服务
github.com开发工具397.1k1 天前更新

关于 REA

REA 是面向开发者和 Agent 的命令行工具及 MCP 服务,可在没有源代码的情况下调查软件。它分析二进制文件、应用、网站和运行时行为,并提供发现依据及结论限制。

主要功能

  1. 01分析原生二进制文件及应用格式
  2. 02检查 JavaScript、Electron、.NET 和网站
  3. 03捕获运行时行为与网络数据
  4. 04提供证据和分析限制

适用场景

  1. 01追踪应用功能的实现方式
  2. 02检查二进制文件或打包应用
  3. 03比较多次进程运行的行为

MCP 相关

REA 向 MCP 客户端提供逆向分析工具,用于检查目标并追踪相关代码。其命令行工具使用相同工作流。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"morluto-rea": {
"command": "npx",
"args": [
"-y",
"rea-agents"
]
}
}
}
启动命令npx -y rea-agents

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmrea-agents6.8.0

工具

170

收录的工具列表 · 更新于 3 天前

参数类型必填说明
nameany否此操作使用的精确名称。
commentany否常规条目注释;留空可清除。
procedureany是
inline_commentany否内联条目注释;留空可清除。

详细介绍

### 一个 MCP,跨二进制文件、应用和运行时行为进行逆向工程。

看到喜欢的功能?深入了解它的工作原理,直至二进制层面。

npm version MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

网站 · 指南 · 案例展示

快速开始 · REA 的工作原理 · 可分析内容 · 案例展示 · 构建 RL 环境 · 常见问题 · 文档

npx rea-agents setup

重要

请从 morluto/rea、 rea.tools 或 rea-agents npm 包获取 REA。 请通过这些官方来源中的链接访问安装与发布页面。仓库名称相似或 README 被复制,并不能证明下载内容是官方版本。


REA 在 Hopper 中启动分析桥接,同时检查原生二进制文件



Discord
加入逆向工程社区

Discord · 问答 · 分享展示


在应用中看到想加入自己产品的功能?让你的 Agent 使用 REA 调查它。REA 可以在没有源代码的情况下检查应用,说明该功能的工作原理、展示证据,并为你的项目构建一个实现版本。

REA 可将你的 Agent 连接到用于检查原生二进制文件、JavaScript 和 Electron 应用、.NET 程序集以及网站的工具。你也可以在终端中使用同一组工具。分析在本地运行,结果会包含每项结论背后的证据和局限性。

安装会将 REA 注册到你的 Agent,并安装匹配的工作流说明。原生分析可使用现有的 Hopper、Ghidra 或 IDA 安装;也可以在获得许可后通过安装程序安装 Hopper。静态 JavaScript 分析无需原生分析引擎。

访问 REA 网站,获取安装说明、图解指南和真实案例研究。

快速开始

在 Linux 上,Ghidra、JADX、固件工具启动以及静态 JavaScript/Electron 分析需要 REA 的 PATH 中有兼容 procps 的 ps,用于检查进程所有权。 恢复步骤请参阅 docs/installation.md 中的 “Linux owned-process prerequisite”。

设置你的 Agent

安装 Node.js 和 npm 后,运行:

npx rea-agents setup

选择你的 Agent,查看建议的更改并批准。设置过程会添加 REA 的 MCP 服务和匹配的工作流说明,并备份现有配置。之后请重启你的 Agent。

设置支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 和 其他 Agent。有关提供方配置、手动注册 MCP 服务以及安装 Claude Code/Codex 插件,请参阅 安装与设置。

默认情况下,MCP 使用精简的输入架构,以减少上下文开销。如果需要完整的字段说明和嵌套验证详情,请在 MCP 注册配置中设置 REA_MCP_INPUT_SCHEMA_PROFILE=full。两种配置都会保留完整的工具集和标准服务器验证。请参阅 MCP 合约指南中的“精简输入架构配置”。

默认情况下会公布完整的输出架构。如果你的客户端对完整的 tools/list 帧设置了上限,请将 REA_MCP_OUTPUT_SCHEMA_PROFILE=compact 设为每个公布的输出架构设置大小上限,或设为 off 以完全省略输出架构。这两种设置都会保留标准服务器端验证和完整的结构化结果。请参阅 MCP 合约指南中的“输出架构”。

向你的 Agent 提问
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.

将 Notes 替换为目标应用,以及你想了解的功能。

使用终端

检查已解压的 JavaScript/Electron 应用目录或 ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

结果包含模块、导入、Electron 边界及其证据。 将路径替换为你的目标路径,例如 Windows 上的 "D:/apps/example"。

如需安装 rea 命令以便日常使用:

npm install --global rea-agents
rea --help

如需进行原生分析,请先配置提供方。有关原生命令、提供方选择、快照和脚本编写,请参阅 CLI 与证据指南。

更新 REA

REA 更新迅速,新版本会频繁修复错误。请保持安装版本为最新。

对于通过 npm install --global 或 bun add --global 安装的 CLI:

rea update

rea --update 是此验证更新流程的别名,并接受相同的全局输出标志。与其他命令控制选项结合使用时,请运行 rea update。

更新程序命令的标准输出和标准错误总量最多保留 4 MiB。命令退出后,如果元数据回复超出此限制,就会被拒绝;详细安装会继续进行,并提供有界诊断信息。人工可读的进度输出会遵循终端的背压机制,并等待已提交的写入完成。

Bun 全局更新要求使用 Bun 1.2.17 或更高版本。如果使用较旧的 Bun 版本,请先手动升级 Bun,再运行 rea update。

如需刷新 Agent 注册信息和技能,请运行更新时显示的设置命令。

如果你使用 npx,请通过以下命令更新 Agent 设置:

npx rea-agents@latest setup

查看设置更改并重启你的 Agent。对于一次性 CLI 命令,请先运行 npx rea-agents@latest,再运行相应命令。使用 Bun 时,请用 bunx rea-agents@latest 替代 npx rea-agents@latest。

REA 的工作原理

你的 Agent 通过 MCP 调用 REA 来检查目标并追踪相关代码。 REA 会返回带有证据的发现。Agent 会利用这些发现提出后续问题、解释行为,或编写并测试实现。 CLI 命令使用相同的工作流。

REA 调查流程:你的 Agent 针对本地目标提问,REA 使用分析工具进行检查和追踪,随后 Agent 利用返回的代码、引用和未知项进行解释、实现和测试。

打开完整尺寸的图示。

可分析的内容

REA 要求使用 Node.js 22.x (>=22.23.4)、24.x (>=24.22.1) 或 26.12.1+,以及 npm。 其他工具和宿主支持取决于目标:

目标REA 返回的内容要求和指南
桌面安装运行时候选项、支持文件、组件标记和后续探测内置有界目录/标头检查;桌面应用程序
原生二进制文件伪代码、汇编、字符串、符号、调用和引用Hopper、Ghidra 或 IDA;原生分析
离线 ELF 布局节、段、原始符号/重定位和静态缓解措施候选项调用方提供的 Linux x64 上的 pwntools;二进制诊断
Go 二进制文件嵌入的编译器版本、模块、替换项和构建设置内置静态 ELF/PE/thin Mach-O 检查;无需安装 Go
GPU 代码对象CUDA/HIP 目标、选定的内核参数和资源、保留的 PTX 文本内置静态 ELF/PE/fatbin/CUBIN/PTX 检查;GPU 代码对象
模型制品GGUF / safetensors 元数据、张量声明和推导出的总量内置标头检查;可选的全文件哈希;模型文件
IL2CPP 元数据Unity global-metadata.dat 程序集映像、类型和方法名称及索引范围内置对 24、27、29、31 和 39 版的静态解码;无需 Unity
Godot PCK存档清单和提取结果、原始标头/目录信息及选定内容标识内置静态格式 2、3 和 4;无需 Godot
Rust 二进制文件嵌入的 cargo-auditable crate 名称、版本、来源和依赖关系内置静态 ELF/PE/thin Mach-O 检查;Rust 二进制文件
PE 证书Authenticode WIN_CERTIFICATE 条目和 PKCS#7 签名者/X.509 身份字段内置静态 PE 检查;PE 证书
PE 导入导入和延迟加载 DLL 名称、序号、IAT RVA 及 pefile 导入哈希内置静态 PE 检查;PE 导入
ELF 注释PT_NOTE/SHT_NOTE 所有者、类型、GNU build-id 和 ABI-tag 字段内置静态 ELF 检查;ELF 注释
Apple IPS 崩溃.ips 元数据、线程、映像、寄存器和有文档记录的崩溃类别内置静态 JSON 检查;Apple IPS
Linux 内核模块.modinfo 键、__versions CRC、this_module 是否存在以及签名尾部内置静态 ELF 检查;内核模块
Erlang BEAMIFF 块、原子、导出、导入、lambda 和 Code 标头内置静态 BEAM 检查;Erlang BEAM
WASM 制品验证、节、精确的导入/导出 WAT 形式及解码后的 WAT调用方提供的 WABT 1.0.42;inspect_wasm_artifact
EVM 字节码分发选择器、字节偏移、推断参数和可变性Linux x64 上的本地原始/十六进制载体;离线 EVM 指南
SQLite 数据库表、列、索引、视图、触发器和选定的普通表行本地数据库/WAL 快照;Node.js 24.x >=24.15 或 26+,受原生 SQLite 限制
已记录的 Linux 崩溃原始注释、每个已记录线程的寄存器/信号及可选映射候选项调用方提供的 Linux x64 上的 pwntools;可选 GDB/pwndbg;已记录的崩溃
JavaScript / Electron模块、导入、源映射、路由、IPC 和原生附加组件关系Node.js 和 npm;Linux:兼容 procps 的 ps;应用分析
网站页面结构、脚本、网络观察结果和请求的屏幕截图Chrome 系浏览器;浏览器分析
已保存的网络捕获请求、响应、暴露的有效载荷和源位置HAR 或 Fiddler Everywhere SAZ;Linux 上用于原生 mitmproxy 的 mitmdump;捕获指南
.NET 程序集元数据、CIL 指令、声明的原生依赖项和构建比较无(仅静态分析);托管代码指南
Android APK清单声明、类、反编译的方法和引用Linux/macOS/Windows x64 上的无头 JADX 和完整 JDK;Android 指南
APK 签名v1/v2/v3/v3.1 签名者、证书指纹、密钥轮换和摘要自洽性无(仅静态分析);inspect_apk_signature
Android 设备设备、软件包、进程、日志、转储、屏幕截图以及 APK/文件传输调用方提供的 adb(模拟器或硬件);ADB 指南
JEB 项目引擎支持的项目单元、制品摘要和类型/方法伪代码由调用方启动并提供 MCP 的 JEB 客户端,通过 REA_JEB_MCP_URL 选择;JEB 指南
Android 资源解码后的清单、字符串表、区域设置和版本信息调用方提供的 Apktool 启动器;资源指南
Flutter 应用Dart 快照哈希、各 ABI 的库摘要和引擎构建来源无(仅静态 APK 解析);Flutter 指南
固件区域、提取结果和原生分析交接Linux 上的 Binwalk / Unblob;固件指南
已记录的数据包选定字段、重复值、过滤器和 decode-as 规则Linux:TShark 4.x + prlimit;捕获指南
数据包摘要端点、DNS、TLS SNI、协议分布和 HTTP 请求调用方提供的 tshark 和 capinfos(已在 Linux 上验证);pcap 指南
已记录的逻辑信号解码器注释、采样范围和诊断信息Linux:sigrok-cli 0.7.2 + prlimit;信号记录
软件包和资源文件清单、摘要、plist、Apple 捆绑包结构和提取的资源制品和 JavaScript 指南,Apple 应用程序
进程行为终端输出、交互、退出和文件系统观察结果以及运行比较使用原生 PTY 的 Linux/macOS;进程捕获
PyInstaller 可执行文件CArchive 成员、Python 版本、入口脚本和提取的字节码无(仅静态分析);Python 打包应用程序
静态 JavaScript 和 .NET 检查会读取提供的文件,而不会运行应用程序。运行时捕获会使用你的用户权限运行或交互所选目标;每份运行时指南都会说明其影响。

对于离线原生二进制检查,REA 也支持调用方提供的 GNU objdump 和 Rizin。有关提供程序设置、CLI 命令和 Evidence 的限制,请参阅逆向工程工具指南。REA 不会安装或更新这两个提供程序。

原生格式和主机支持因提供程序而异。请参阅 Hopper 和 Ghidra 设置、IDA 指南(包括可选的原生 MCP 桥接)、Kuna 反编译器指南,以及实验性的 Windows Ghidra 支持。 Ghidra 还支持 16 位 DOS 分析。 对于大型二进制文件,请使用 REA_GHIDRA_STARTUP_TIMEOUT_MS 或 REA_HOPPER_STARTUP_TIMEOUT_MS 延长提供程序的启动时限。 有关提供程序选择,请参阅 CLI 指南。 请查看发布版本可用性,了解自最新 npm 发布版本以来新增的功能。

展示案例

DX-Ball 声音声像、Notion 剪贴板桥接和 TH04 子弹环展示案例的插图
DX-Ball:还原声音声像计算

跟踪一次声音调用,找到其位置到声像的辅助函数,检查指令,并将不完整的伪代码转化为 C。还原结果通过了 3,205 个原始 x86 测试用例,并复现了全部 63 个已编译函数字节。

阅读案例研究 · 还原仓库

Notion:追踪 Electron 剪贴板桥接

找到渲染进程的剪贴板 API,沿着调用链经由 preload 和 IPC 追踪到主进程,并检查富文本剪贴板格式。

阅读案例研究

TH04:还原 DOS 子弹环计算

检查原版 PC-98 游戏的 16 位指令,还原固定角度和瞄准角度的计算,并将重建的 C++ 与历史编译器输出进行比较。

阅读案例研究 · 还原仓库

使用 REA 构建 RL 环境

录制 Web 应用会话,将其 API 转化为工具,并导出 AI Agent 可使用的环境。使用 AgentEnv 运行环境,然后添加任务和奖励检查,用于 RL 训练或评估。

阅读指南 · 观看视频

如果你用 REA 探索过有趣的项目,我们很乐意了解。请在 issue 或 pull request 中分享你的案例,并注明目标、你的问题、REA 如何提供帮助,以及你的发现。

构建 RL 环境

为 AI Agent 提供一个本地环境,让它练习查找问题或创建文件夹等任务,而无需运行原始应用。可将其用于强化学习(RL),或测试 Agent 完成任务的能力。

REA 会将录制的 API 请求和响应转换为 Agent 可调用的工具。环境使用录制的数据,只有在录制内容证实变更效果时才支持进行变更。

在 Agent 中配置好 REA 后,将下面示例中的 URL 和文件夹任务替换为你自己的任务:

Use REA to build an RL environment from my test web app at
http://127.0.0.1:3000.
Cover listing, creating, renaming, and deleting folders. You may create and
remove test folders. Leave existing data unchanged.
Save it in a folder named my-env. Check which operations work and tell me
how to run it.
改用命令行

如果你已经有一个文件,其中包含应用录制的浏览器请求和响应,请使用以下命令。运行生成的环境还需要 AgentEnv 和 Docker。

rea environment-build ./session.har ./my-env --name my-env --json
agent-env run ./my-env

REA 会导出一个可运行的环境,并附带一个基本测试,用于检查环境能否启动并响应。使用你的 RL 框架定义任务目标、添加奖励检查并运行训练。

构建环境 · 环境参考 · 在 X 上观看演示

常见问题

哪些 Agent 可以使用 REA?

任何支持本地 MCP 服务的 Agent 都可以使用。安装配置会设置受支持的 Agent;其他客户端可以使用手动注册 MCP。

我需要 Hopper、Ghidra 或 IDA 吗?

深度原生分析需要其中一种工具。静态 JavaScript 和 .NET 检查无需原生分析引擎。安装配置经批准后可以安装 Hopper;Ghidra 和 IDA 则使用你已有的安装。请参阅提供程序配置。

我需要先启动 Hopper 吗?

REA 会在操作需要时启动 Hopper。在 macOS 上,首次运行时可能会弹出对话框,要求你选择演示模式或激活许可证。在首次 CLI/MCP 操作或无人值守任务之前,请在同一用户会话中完成该提示。必要时可手动打开 Hopper。请参阅 Hopper 启动和故障排除。

从 skills.sh 安装技能会有什么作用?

该技能会为 Agent 提供调查说明。使用 npx rea-agents setup 注册 REA 的 MCP 服务并安装相应说明,然后重启 Agent。请参阅仅安装技能。

REA 会返回什么代码?

原生分析会返回伪代码和汇编代码。JavaScript/Electron 分析会还原模块及其关系。你的 Agent 会利用这些发现编写并测试实现;示例中提供了完整示例。

REA 会上传我的应用吗?

REA 会在本地分析目标。你的 Agent 会收到工具结果,而其模型提供商有自己的数据政策。

遇到 bug 时该怎么办?

请先更新;近期版本可能已经修复了问题。

对于通过 npm install --global 或 bun add --global 安装的 CLI:

rea update

对于通过 npx 配置的 Agent:

npx rea-agents@latest setup

如果你正在使用 Agent,请完成刷新配置并重启 Agent。重试相同任务。如果问题仍然存在,请提交 issue,并附上 REA 版本、目标类型、复现步骤和错误输出。

## 文档

请先阅读网站上的实践指南。 有关具体选项、前置条件和结果约定,请参阅:

请通过 SECURITY.md 报告漏洞。

星标历史

🎉 GitHub 星标数达 300,000——感谢大家!

感谢所有使用 REA、报告错误、提出功能需求、测试构建版本并贡献修复的朋友。

REA GitHub 星标历史

免责声明

请参阅 DISCLAIMER.md 了解负责任使用指南。

项目关于非法或未经授权使用的立场适用于所有 REA 版本、 分发渠道和平台;每个副本均保留其适用的许可证。

REA 适用于合法研究、教育、互操作性、软件保存,以及对您拥有或获准检查的软件进行分析。

贡献

欢迎为 REA 提供帮助!您可以提交问题, 报告错误或提出功能建议;也可以提交拉取请求 来改进代码或文档。

开发环境设置和检查请参阅 CONTRIBUTING.md,验证流程请参阅 测试文档,选定层级和依赖路径请参阅 架构图。

许可证

MIT

REA 编写的代码采用 MIT 许可证。第三方材料保留其自身的 许可证和版权声明;依赖项清单、保留的许可证文本和外部工具条款请参阅 第三方声明。

您必须依法取得商业工具并获得使用授权,包括 IDA Pro / Hex-Rays 反编译器、Hopper 和 JEB,并遵守其适用的 许可证。REA 不授予任何工具许可证、密钥或激活权益。试用版和 演示版仍受供应商条款约束,包括关于用户、功能、自动化和 输出共享的限制。未经授权的破解副本、盗用的密钥、未经授权的密钥 共享以及规避许可证限制均不被允许。本指南不修改 MIT 或第三方许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。