关于 REA
REA 是面向开发者和 Agent 的命令行工具及 MCP 服务,可在没有源代码的情况下调查软件。它分析二进制文件、应用、网站和运行时行为,并提供发现依据及结论限制。
主要功能
- 01分析原生二进制文件及应用格式
- 02检查 JavaScript、Electron、.NET 和网站
- 03捕获运行时行为与网络数据
- 04提供证据和分析限制
适用场景
- 01追踪应用功能的实现方式
- 02检查二进制文件或打包应用
- 03比较多次进程运行的行为
MCP 相关
REA 向 MCP 客户端提供逆向分析工具,用于检查目标并追踪相关代码。其命令行工具使用相同工作流。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
170收录的工具列表 · 更新于 3 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | any | 否 | 此操作使用的精确名称。 |
| comment | any | 否 | 常规条目注释;留空可清除。 |
| procedure | any | 是 | |
| inline_comment | any | 否 | 内联条目注释;留空可清除。 |
详细介绍
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά · മലയാളം · Roman Urdu · Română
REA:逆向工程,万物皆可
看到喜欢的功能?深入了解它的工作原理,直至二进制层面。
快速开始 · REA 的工作原理 · 可分析内容 · 案例展示 · 构建 RL 环境 · 常见问题 · 文档
npx rea-agents setup
重要
请从 morluto/rea、 rea.tools 或 rea-agents npm 包获取 REA。 请通过这些官方来源中的链接访问安装与发布页面。仓库名称相似或 README 被复制,并不能证明下载内容是官方版本。
在应用中看到想加入自己产品的功能?让你的 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 要求使用 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 BEAM | IFF 块、原子、导出、导入、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:还原声音声像计算
跟踪一次声音调用,找到其位置到声像的辅助函数,检查指令,并将不完整的伪代码转化为 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 框架定义任务目标、添加奖励检查并运行训练。
常见问题
哪些 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 版本、目标类型、复现步骤和错误输出。
请先阅读网站上的实践指南。 有关具体选项、前置条件和结果约定,请参阅:
- 安装和设置:Agent 注册、提供方配置、更新和卸载。
- 就绪状态和故障排除:诊断单个 Agent 或分析引擎。
- CLI 和 Evidence:命令、提供方选择、快照、导入/导出和退出状态。
- MCP 约定和 Agent 提示词:工具结果、会话和引导式调查。
- 工具目录:自动生成的工具、提供方和 CLI 命令清单。
- 路线图:计划中的工作和能力跟踪。
请通过 SECURITY.md 报告漏洞。
星标历史
🎉 GitHub 星标数达 300,000——感谢大家!
感谢所有使用 REA、报告错误、提出功能需求、测试构建版本并贡献修复的朋友。
免责声明
请参阅 DISCLAIMER.md 了解负责任使用指南。
项目关于非法或未经授权使用的立场适用于所有 REA 版本、 分发渠道和平台;每个副本均保留其适用的许可证。
REA 适用于合法研究、教育、互操作性、软件保存,以及对您拥有或获准检查的软件进行分析。
贡献
欢迎为 REA 提供帮助!您可以提交问题, 报告错误或提出功能建议;也可以提交拉取请求 来改进代码或文档。
开发环境设置和检查请参阅 CONTRIBUTING.md,验证流程请参阅 测试文档,选定层级和依赖路径请参阅 架构图。
许可证
REA 编写的代码采用 MIT 许可证。第三方材料保留其自身的 许可证和版权声明;依赖项清单、保留的许可证文本和外部工具条款请参阅 第三方声明。
您必须依法取得商业工具并获得使用授权,包括 IDA Pro / Hex-Rays 反编译器、Hopper 和 JEB,并遵守其适用的 许可证。REA 不授予任何工具许可证、密钥或激活权益。试用版和 演示版仍受供应商条款约束,包括关于用户、功能、自动化和 输出共享的限制。未经授权的破解副本、盗用的密钥、未经授权的密钥 共享以及规避许可证限制均不被允许。本指南不修改 MIT 或第三方许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。