项目快照:morluto/rea,约 66,925 个 Star,14,087 个 Fork;最新推送时间 2026-10-10T17:45:08Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/morluto/rea · https://rea.tools

项目速览(TL;DR)
rea 是一个面向逆向工程任务的开源工具,核心形态包括命令行界面(Command-Line Interface,CLI)与模型上下文协议(Model Context Protocol,MCP)服务器。它将智能体(agent)连接到原生二进制、JavaScript、Electron、.NET 程序及网站的分析工具,并强调在本地执行分析、保留证据和说明结论限制。
- 仓库:
morluto/rea,默认分支为main。 - npm 包名:
rea-agents,资料中的版本为6.3.0。 - 主要语言:TypeScript;
package.json声明为 ECMAScript 模块。 - 运行时要求:Node.js
^22.19.0 || ^24.11.0 || >=26.0.0。 - 许可证:MIT,可用于商业项目,但须保留许可证要求的版权与许可声明。
- 仓库资料给出的统计值为 66,925 Star、14,087 Fork;这些数值只代表资料快照,不构成稳定性或维护承诺。
“REA connects your agent to tools for inspecting native binaries, JavaScript and Electron apps, .NET assemblies, and websites. You can also use the same tools from your terminal. Analysis runs locally, and results include the evidence and limitations behind each conclusion.”
定位与目标用户
REA 的定位不是单独的反编译器,而是连接智能体、终端工作流和多种分析后端的统一入口。其目标是让分析过程不仅给出结论,还能附带支持该结论的证据与限制条件。
根据 README,典型任务是研究一个没有源代码的应用功能,解释其行为和实现方式,并为自己的项目构建对应实现。该描述不等于允许复制受版权、专利、商业秘密或合同约束的实现,实际使用仍需先确认授权范围。
它主要面向需要跨应用行为、运行时现象和二进制实现层进行调查的开发者、安全研究人员及兼容性工程人员。根据本文作者的经验判断,REA 的价值更偏向“编排和统一分析入口”,而不是替代每一种底层分析引擎。
核心功能
项目公开资料明确覆盖五类对象:原生二进制(native binary)、JavaScript 应用、Electron 应用、.NET 程序集和网站。不同对象依赖的分析链路并不相同,因此使用前应先判断目标类型和本机已有工具。
通过 MCP 接入智能体
REA 提供一个 MCP 服务器,并在设置阶段将其注册到用户选择的智能体中。触发条件是本机已安装满足要求的 Node.js 与 npm,并由用户运行交互式设置命令、选择智能体、审阅拟议改动后批准。
输入是待分析目标和通过智能体提出的调查任务,输出侧强调结论、证据及限制。README 摘要未公开完整的 MCP 工具调用签名、请求字段和响应模式,具体工具目录应以仓库中的 docs/mcp-contracts.md 及最新版文档为准。
从终端使用统一入口
package.json 将 rea 和 rea-agents 两个命令都映射到 scripts/rea.mjs。这表明 npm 包通过同一个脚本提供两个可执行入口,但资料没有完整列出除 setup 之外的子命令及参数。
终端模式适合不希望依赖特定智能体界面的场景。命令的输入输出格式、退出码定义及批处理约束未包含在现有资料中,不能据此假设其可直接用于无人值守生产流水线。
原生程序分析桥接
README 明确说明,原生分析可以使用现有的 Hopper、Ghidra 或 IDA 安装;设置程序也可以在获得用户批准后选择安装 Hopper。其工作方式是由 REA 将上层调查任务连接到本机分析引擎,而不是在所有情况下自行完成反汇编和反编译。
发布文件列表中包含 Hopper、Ghidra、LLDB、pwndbg 和 pwntools 相关桥接文件,这能证明仓库打包了相应集成组件。仅凭文件名无法确定所有平台、版本兼容范围和完整能力,支持矩阵应以最新 README 与官方指南为准。
JavaScript 与 Electron 分析
README 指出,静态 JavaScript 分析不需要原生分析引擎。这意味着处理 JavaScript 输入时,可以不依赖 Hopper、Ghidra 或 IDA,但仍需满足 REA 自身的 Node.js 运行环境要求。
对于 Electron,资料明确将其列为可检查对象,发布文件中还包含 electron-active-hook.cjs 和 electron-active-hook-boundaries.cjs。现有摘要没有公开钩子的具体触发方式、兼容的 Electron 版本或运行时权限要求,因此不能扩展为未经证实的兼容性承诺。
.NET 程序集与网站检查
README 将 .NET 程序集和网站列入可分析范围,说明统一入口并不限于原生可执行文件。使用时仍应将网站内容、网络数据和账户信息视为受授权边界约束的数据输入。
资料没有给出 .NET 运行时版本、网站抓取协议、浏览器依赖、认证方法或网络捕获配置。涉及这些对象时,应先查阅当前官方指南,不能依据项目简介推定具体实现。
能力与依赖矩阵
各类输入的依赖条件存在明显差异,其中只有 JavaScript 静态分析被明确说明不需要原生分析引擎。其他项目若无官方说明,应按“未提供”处理,而不是从仓库文件名推导完整支持能力。
| 分析对象 | 资料确认的入口 | 资料确认的依赖 | 输出特征 |
|---|---|---|---|
| 原生二进制 | 智能体或终端 | 可使用现有 Hopper、Ghidra 或 IDA | 分析结论、证据与限制 |
| JavaScript | 智能体或终端 | 静态分析不需要原生分析引擎 | 具体格式未提供 |
| Electron 应用 | 智能体或终端 | 具体版本要求未提供 | 具体格式未提供 |
| .NET 程序集 | 智能体或终端 | .NET 版本要求未提供 | 具体格式未提供 |
| 网站 | 智能体或终端 | 浏览器及网络配置未提供 | 具体格式未提供 |
系统架构与关键模块
根据 README、package.json 和发布文件列表,可以确认 REA 由 CLI/MCP 入口、工作流说明、分析桥接组件及底层工具集成组成。以下结构只描述资料中能够验证的职责,不代表完整内部调用图。
- 入口层:
scripts/rea.mjs同时承载rea与rea-agents两个命令入口。 - 智能体集成层:设置程序注册 MCP 服务器,并安装与之匹配的工作流说明;对应包标识为
io.github.morluto/rea。 - 分析桥接层:发布内容包含 Hopper、Ghidra、Android/Jadx、mitmproxy、LLDB、pwndbg、pwntools 等目录或脚本。
- 原生辅助层:包中包含 Swift 文件、Python 脚本、Java 桥接文件,以及 Windows x64 的原生 Node 模块。
- 构建与校验层:项目使用 npm 脚本和 Turbo 任务执行类型检查、代码检查、格式检查、测试、元数据生成及架构守卫。
上述文件只能证明对应组件被打包或参与项目构建,不能单独证明它们在所有系统上都处于稳定可用状态。例如,native/windows/build/rea-windows-x64.node 明确指向 Windows x64 构件,但资料没有提供其他 Windows 架构的对应声明。
依赖与运行环境
REA 对 Node.js 版本有精确限制,低于声明范围的运行时不应视为受支持环境。包管理器元数据指定为 npm@11.16.0,但 README 的快速开始仅要求安装 Node.js 和 npm。
- Node.js:
^22.19.0 || ^24.11.0 || >=26.0.0。 - 包管理器元数据:
npm@11.16.0。 - 模块类型:
module,即 ECMAScript 模块。 - 主要实现语言:GitHub 元信息标注为 TypeScript。
- 原生分析后端:可连接已有 Hopper、Ghidra 或 IDA。
官方仓库资料未提供完整操作系统支持表、最低内存、磁盘空间、CPU 架构范围、容器镜像或 GPU 要求,建议以最新 README 为准。也没有资料证明项目提供 Docker、Kubernetes 或浏览器托管版本。
快速开始:安装、运行与验证
最小流程是先确认 Node.js 与 npm 可用,再执行 README 给出的交互式设置命令。设置过程需要选择目标智能体、审阅拟议变更并主动批准,因此不应把它当作无需确认的静默安装程序。
第一步:检查运行时
node --version
npm --version将 node --version 的结果与 ^22.19.0 || ^24.11.0 || >=26.0.0 对照。资料没有给出操作系统级的 Node.js 安装命令,因此应通过 Node.js 官方渠道或团队既有的软件分发方式准备运行时。
第二步:运行设置程序
npx rea-agents setup该命令来自 README,并会启动设置流程。按照 README 描述,应在交互界面中选择要接入的智能体,检查程序提出的配置变更,然后决定是否批准。
第三步:验证注册结果
验证目标是确认所选智能体已经出现 REA 的 MCP 服务器配置及对应工作流说明,并且配置内容与设置阶段展示的拟议改动一致。官方资料未提供统一的验证子命令、固定配置路径或预期终端输出,因此不能给出未经证实的自动化断言命令。
这构成“安装运行时依赖、运行设置程序、核对注册结果”的最小闭环,但尚不等于完成某个二进制样本的分析。具体分析提示词、目标文件参数和结果导出命令,官方仓库未在所给资料中提供,建议以最新指南为准。
配置说明
现有资料没有提供 .env.example 或独立运行时配置样例,因此无法列出端口、环境变量和认证参数。下表改为整理 package.json 中可核查的包级配置字段,不能将其误解为全部用户配置项。
| 字段名 | 类型 | 默认值或声明值 | 作用 |
|---|---|---|---|
name |
字符串 | rea-agents |
npm 包名,也是 README 快速开始命令使用的名称。 |
mcpName |
字符串 | io.github.morluto/rea |
标识该项目的 MCP 名称。 |
version |
字符串 | 6.3.0 |
资料快照中的 npm 包版本。 |
type |
字符串 | module |
声明 Node.js 包采用 ECMAScript 模块语义。 |
engines.node |
字符串 | ^22.19.0 || ^24.11.0 || >=26.0.0 |
限制受声明支持的 Node.js 版本范围。 |
packageManager |
字符串 | npm@11.16.0 |
记录项目使用的 npm 版本。 |
publishConfig.access |
字符串 | public |
声明 npm 发布访问级别为公开。 |
bin.rea |
字符串 | scripts/rea.mjs |
定义 rea 命令的执行脚本。 |
bin.rea-agents |
字符串 | scripts/rea.mjs |
定义 rea-agents 命令的执行脚本。 |
监听地址、网络端口、日志等级、缓存目录、代理参数、遥测开关和 API 密钥字段均未出现在所给资料中。若最新版项目增加这些设置,应以仓库文档和设置程序实际展示的变更为准。
进阶用法
进阶使用的重点是依据目标类型选择分析链路,并在已有工具环境中复用合适的后端。资料没有给出完整分析命令,因此本节只讨论可验证的工作流边界和项目维护命令。
按目标类型选择分析链路
- 分析 JavaScript 静态内容时,可使用不依赖原生分析引擎的路径。
- 分析原生二进制时,可连接本机已有的 Hopper、Ghidra 或 IDA;三者的具体版本兼容性未提供。
- 分析 Electron 应用时,应关注静态 JavaScript 与运行时行为之间的边界,但官方资料未公开具体钩子参数。
- 处理网站和网络数据时,应先确认测试授权、数据范围与认证信息的保存方式。
贡献者侧的校验任务
package.json 提供了多级校验脚本,可以对类型、代码风格、格式、未使用代码、元数据和测试进行检查。以下命令适用于已经按项目要求准备好依赖的本地仓库,不是最终用户执行逆向分析的命令。
npm run check:fast
npm run metadata:check
npm run mcp-registry:check
npm run check:testcheck:fast 运行类型检查与代码检查;metadata:check 校验生成的包元数据;mcp-registry:check 校验 MCP 注册表元数据;check:test 还包括格式、未使用代码检查和测试。是否需要先执行额外安装或生成步骤,官方仓库摘要未完整说明,应查看贡献文档和当前脚本定义。
可观测性与运维
REA 在分析结果层面的可观测性重点是证据与限制说明,而不是资料中心化监控平台。README 明确称分析在本地运行,但没有提供指标、追踪、日志格式或服务等级协议(SLA)。
- 分析可追溯性:结果应包含支持结论的证据,以及结论成立范围的限制。
- 持续集成:README 展示了针对
main分支的 CI 状态入口,工作流文件名为ci.yml。 - 代码质量:项目脚本包含
typecheck、lint、format:check、knip、测试和架构守卫。 - 元数据一致性:项目提供生成与校验包元数据、MCP 工具目录及注册表元数据的任务。
官方仓库未提供 Prometheus 指标、OpenTelemetry 追踪、健康检查端点、日志保留周期、告警规则或备份恢复流程。若团队计划长期运行 MCP 服务,应自行定义进程监督、日志权限、资源限制和升级回滚制度,但这些属于部署方治理,不是资料确认的内置能力。
安全与合规边界
逆向工程、运行时检查和网络捕获都可能接触受保护代码、账户信息、个人数据或第三方系统,因此只能用于已获授权的目标。REA 的开源许可证不授予目标软件的逆向许可,也不替代当地法律、合同条款和组织安全政策。
- 授权边界:仅分析自有程序、明确授权的测试样本、合法取得的研究对象或许可范围内的开源软件。
- 隐私边界:网站、Electron 应用和运行时流量可能包含令牌、Cookie、个人信息及业务数据,应在输入前完成最小化、脱敏和访问控制。
- 隔离边界:未知二进制不应直接进入承载生产凭据、企业证书或敏感源码的环境。根据本文作者的经验判断,应在独立测试账户和受控本地环境中处理不可信样本。
- 输出边界:证据、反编译结果和运行时记录可能重新暴露敏感信息,应限制存储位置、共享范围和保留期限。
- 网络边界:不得将网站分析能力用于未授权扫描、认证绕过、账号接管或规避目标方检测。
README 提到本地分析,这有助于减少将样本主动发送到远端服务的需求,但“本地运行”不等同于自动满足隐私法规。资料未说明遥测行为、数据删除机制、加密存储、审计日志或合规认证,涉及受监管数据时必须自行核验当前实现。
许可证与商用条款
仓库采用 MIT License,允许获得软件副本的人使用、复制、修改、合并、发布、分发、再许可及销售软件副本。由此可以确认 REA 本身可以用于商业项目,但仍须满足许可证中的保留义务。
- 在软件的全部副本或实质性部分中保留版权声明与许可声明。
- 许可证不提供明示或默示担保,包括适销性、特定用途适用性和不侵权担保。
- 作者或版权持有人不对因软件或其使用产生的索赔、损害或其他责任负责。
- 资料中的版权声明为
Copyright (c) 2026 morluto。
MIT 许可证只约束 REA 软件本身,不自动覆盖被分析程序、第三方反编译器、网络内容或分析结果中的第三方知识产权。Hopper、Ghidra、IDA、mitmproxy、pwntools、pwndbg 等组件各自的许可与使用条件需要分别核查,不确定部分以仓库 LICENSE 和对应第三方许可证为准。
局限性与已知限制
现有资料足以确认项目定位和基本设置方式,但不足以建立完整的平台兼容、性能和生产部署结论。以下缺口应在技术选型阶段明确记录,避免把未公开信息当成默认能力。
- 未提供各操作系统及 CPU 架构的完整支持矩阵。
- 未提供 Hopper、Ghidra、IDA、Electron 和 .NET 的受支持版本范围。
- 未提供完整 CLI 子命令、参数、退出码和机器可读输出规范。
- 未提供 MCP 请求与响应接口签名;工具目录需查看仓库当前文档。
- 未提供吞吐量、并发级别、最大样本大小、分析耗时或 Benchmark。
- 未提供生产部署拓扑、端口、环境变量、持久化方式和高可用方案。
- 未提供 SLA、长期支持周期、兼容性承诺或商业支持条款。
- 未说明所有分析类型是否都能在完全离线的环境中运行。
此外,分析结果包含证据和限制并不意味着结论必然正确。逆向结果仍应由具备相关平台知识的人员复核,并通过授权测试验证关键推断。
适合谁
REA 更适合已经明确分析目标、授权范围和底层工具条件的团队。以下信号可以用于判断它是否与现有工作流匹配。
- 需要在同一调查中覆盖 JavaScript、Electron、.NET、网站或原生二进制中的两类及以上对象。
- 已经使用支持 MCP 的智能体,并愿意审阅设置程序对智能体配置提出的改动。
- 已有 Hopper、Ghidra 或 IDA 环境,希望通过统一入口连接原生分析流程。
- 要求分析结论同时给出证据和限制,而不是只接收无法追溯的摘要。
- 能够在本地建立隔离分析环境,并安排人员复核逆向结论与许可证边界。
不适合谁
如果项目要求完整托管服务、固定性能承诺或开箱即用的生产运维规范,当前资料不足以证明 REA 能直接满足要求。以下任一条件成立时,应先完成额外验证,再决定是否采用。
- 运行环境无法使用符合要求的 Node.js,且组织不允许安装 npm 包或运行
npx。 - 必须获得明确的吞吐量、并发、延迟、可用性或恢复时间承诺。
- 需要官方提供完整 Docker、Kubernetes、高可用、监控和备份方案。
- 目标受合同、法律或组织政策限制,无法取得逆向、运行时检查或网络观察授权。
- 要求工具自动保证分析结论正确,且团队没有能力进行人工证据复核。
常见问题与排查(FAQ / Troubleshooting)
排查应优先从 Node.js 版本、设置审批、目标类型和底层分析引擎四个方面入手。由于资料没有提供固定日志路径和错误码,以下建议仅使用能够从 README 与 package.json 验证的信息。
npx rea-agents setup 无法启动怎么办
先执行 node --version 和 npm --version,确认命令存在,并检查 Node.js 是否满足声明范围。若运行时符合要求但仍失败,官方仓库未提供统一错误码对照表,应查看终端原始错误,并在项目 Issues 中检索相同信息。
设置程序为什么要求确认改动
README 明确要求用户选择智能体、审阅拟议改动并批准。该过程用于注册 MCP 服务器和安装匹配的工作流说明,拒绝变更后不能假设注册已经完成。
分析 JavaScript 是否必须安装 Hopper
不必须。README 明确说明静态 JavaScript 分析不需要原生分析引擎,而 Hopper、Ghidra 和 IDA 面向原生分析链路。
必须使用 Hopper 吗
不是。原生分析可以使用已有的 Hopper、Ghidra 或 IDA;设置程序还可以在获得批准后选择安装 Hopper。资料没有说明三者之间的功能差异和版本兼容关系,因此应按现有许可证、平台和团队经验选择。
是否可以完全离线使用
README 只确认分析在本地运行,没有明确承诺安装、智能体模型调用、依赖获取及所有分析步骤均可离线完成。对隔离网络有强制要求的组织,应在测试环境中逐项验证外部连接。
REA 会监听哪个端口
官方仓库所给资料未提供端口信息,也没有给出端口环境变量或网络绑定配置。建议以最新 README、MCP 合同文档和设置程序生成的配置为准。
如何确认当前包版本
本文资料中的 package.json 版本为 6.3.0,但这只是给定仓库快照。实际安装版本应以 npm 安装结果和当前仓库发布信息为准。
是否支持生产级集中部署
资料没有提供集中部署架构、身份认证、租户隔离、容量规划和 SLA,因此无法确认。若要将其纳入生产体系,应先完成安全评审、依赖许可核查、故障演练和资源测试。
采用前检查清单
正式引入前应把运行条件、授权文件和结果复核责任落实到具体人员。该清单用于降低配置和合规遗漏,不代替组织内部的安全审批。
- 确认 Node.js 版本满足
package.json的engines.node声明。 - 确认目标程序、网站、账户与网络环境均已取得书面授权。
- 按目标类型确认是否需要 Hopper、Ghidra 或 IDA,并核查其许可证。
- 在设置阶段记录并审阅对智能体配置的全部改动。
- 使用无生产凭据的隔离环境处理未知样本。
- 规定分析证据、运行时记录和反编译内容的访问与保留期限。
- 由具备对应平台知识的人员复核重要分析结论。
- 升级前查看仓库文档、发布信息和许可证是否发生变化。
项目地址与资源
项目代码、使用指南和案例由仓库及官方网站提供。版本、兼容性和命令变化应优先以这些一手资料为准。



