morluto/rea
GitHub: morluto/rea
REA 是一个为编程代理设计的逆向工程 CLI 和 MCP 服务器,让 AI 在无源代码条件下分析应用二进制、理解功能原理并辅助构建类似实现。
Stars: 93 | Forks: 15
**English** · [简体中文](README_zh.md) · [日本語](README_ja.md) · [한국어](README_ko.md) · [العربية](README_ar.md)
# REA: 逆向工程 Anything
### 一个供编程代理对任何事物进行逆向工程的 CLI 和 MCP 服务器
**发现你想要的功能。理解它的工作原理。用你自己的方式构建它。**
[](https://www.npmjs.com/package/@morluto/rea)
[](https://github.com/morluto/rea/actions/workflows/ci.yml)
[](#42-工具工作台)
[](https://nodejs.org/)
[](LICENSE)
[快速开始](#quick-start) · [查看工作流](#one-prompt-a-full-investigation) · [从二进制到行为](#from-binary-to-behavior) · [42 个工具](#the-42-tool-workbench) · [工作原理](#how-it-works) · [常见问题](#faq)
在某个应用中看到了你想加入自己产品的功能?把这个应用交给你的编程代理吧——即使没有它的源代码也可以。借助 REA,代理可以调查该功能,理解其工作原理,并构建一个适应你的技术栈、设计和需求的版本。
REA 通过一个 CLI 和 MCP 服务器使之成为可能。你的代理可以恢复伪代码、跨函数追踪行为、检查字符串和类型,并将这些证据直接带入其正常的编程工作流中。REA 在一个接口之后处理逆向工程工具链、分析会话和目标生命周期。
## 从二进制到行为
npx -y @morluto/rea setup --yes
|
反编译 打开原生应用或可执行文件,并恢复过程、伪代码、汇编、字符串、符号、段和元数据。 |
理解 追踪调用者、被调用者、交叉引用和调用图,直到代理能够解释某个功能或算法的实际工作方式。 |
重现 将代理所学到的内容转化为你自家产品的功能,并适应你的技术栈、界面和需求。 |
42 tools"] REA --> Session["Binary session
open · switch · close"] Session -->|authenticated Unix socket| Bridge["REA Python bridge
inside Hopper"] Bridge --> API["Hopper public
Python API"] ``` CLI 和 MCP 适配器直接调用相同的二进制会话和分析运行时;两者互不调用。单次命令会为每次操作获取并关闭其资源。MCP 模式会在调用和目标切换期间保持一个会话处于活动状态。 ## CLI 无需全局安装即可使用该包: ``` npx -y @morluto/rea --help npx -y @morluto/rea doctor --target /path/to/binary npx -y @morluto/rea analyze /path/to/binary npx -y @morluto/rea decompile /path/to/binary 0x100003f20 ``` 或者全局安装 `rea` 命令: ``` npm install --global @morluto/rea rea --help rea mcp ``` ## 配置 | 变量 | 用途 | | ------------------------- | ------------------------------------------------------------------------------------ | | `HOPPER_TARGET_PATH` | 可选的初始二进制文件或 `.hop` 目标。无目标的 MCP 会话使用 `open_binary`。 | | `HOPPER_LAUNCHER_PATH` | 覆盖 Hopper 启动器路径。 | | `HOPPER_TARGET_KIND` | 为初始目标选择 `executable` 或 `database`。 | | `HOPPER_LOADER_ARGS_JSON` | 使用 JSON 字符串数组覆盖 REA 推导出的 Hopper 加载器参数。 | ## Hopper 应用行为 REA 在需要时启动 Hopper;无需事先运行 Hopper。Hopper 的启动器会在内部激活应用,因此打开目标可能会将 Hopper 置于最前端。REA 会要求 macOS 尽可能在隐藏和后台状态下启动 Hopper,但不能保证它会一直停留在当前应用的后面。 REA 会推导出明确的格式和架构参数,以防止出现常见的 FAT 和 ARM 选择对话框。其他 Hopper 或 macOS 对话框可能仍需要人工干预。REA 会通过 CLI 或 MCP 结果报告超时和补救措施,而不是尝试自动响应 UI 提示。 关闭 REA 会话会关闭其 bridge 并移除其专用的 socket 目录。它不会退出用户可能正在使用的 Hopper 应用程序。 ## 安全模型 每个 bridge 会话都有一个随机的能力 token 和一个仅限于当前用户的 Unix socket。协议消息是有界限的,且对调用者可见的错误会省略启动器的 stderr 和内部异常原因。 该边界会拒绝未经身份验证的连接和其他本地用户帐户,但它不是一个沙盒,也无法防御已经以同一用户身份运行的恶意进程。打开不受信任的二进制文件会将解析和分析工作委托给 Hopper,并使用当前 macOS 用户的权限执行。请通过 [SECURITY.md](SECURITY.md) 中的私密流程报告漏洞。 ## 常见问题
在启动 REA 之前需要先运行 Hopper 吗?
不需要。REA 会在操作需要时启动 Hopper。也支持已经运行的 Hopper 应用。为什么 Hopper 出现在了我的其他窗口前面?
Hopper 的启动器在内部激活了该应用。REA 请求后台启动,但 macOS 和 Hopper 可能仍会将窗口或对话框置于最前面。请参阅 [Hopper 应用行为](#hopper-application-behavior)。REA 包含 Hopper 吗?
不包含。Hopper 是单独安装和授权的软件。REA 提供了 CLI、MCP 服务器、会话管理、分析工作流和已认证的 bridge,使代理能够使用 Hopper。REA 会上传我的二进制文件吗?
REA 没有托管的分析服务。它通过当前用户的 Unix socket 将本地操作传递给 Hopper。你的编程代理或模型提供商可能有自己的数据策略,请另行查看。REA 能恢复原始源代码吗?
没有任何反编译器可以保证恢复原始源代码。REA 为代理提供伪代码、汇编、符号、字符串、元数据和关系,使其能够解释或兼容地重建观察到的行为。哪些代理可以使用 REA?
任何能够启动 stdio MCP 服务器的客户端都可以使用手动配置。目前,设置过程可以自动检测并配置 Claude Desktop 和 Cursor。标签:AI编程助手, MCP, MITM代理, URL提取, 云资产清单, 代码分析, 凭证管理, 反编译, 自动化攻击, 逆向工具, 逆向工程