拆解 REA:AI 本地逆向工程工具的覆盖清单、证据契约与官方边界
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
REA(Reverse Engineer Anything)是一个面向 AI agent 的开源逆向工程工具,以本地 MCP 服务器和 CLI 两种形态运行,覆盖 JavaScript/Electron 应用、.NET 程序集、Android APK、Go/Rust 二进制到原生 ELF/Mach-O/PE 二进制。分析全程在本地机器完成,待分析文件不离开机器;每条结论附带可追溯的证据记录。适合研究未发布产品、内部工具或竞品实现的一线工程师。
📋 覆盖清单:能分析什么、需要什么
README 的 "What you can analyze" 表列出了完整的分析目标矩阵,以下摘录核心行:
| 分析目标 | REA 返回 | 额外前置 |
|---|---|---|
| 原生二进制 | Pseudocode、assembly、strings、symbols、calls and references | 已有 Hopper、Ghidra、IDA 或 Kuna 安装 |
| JavaScript / Electron | 模块、导入、source map、路由、IPC 与 native add-on 关系 | 仅 Node.js + npm,无需逆向引擎 |
| .NET 程序集 | 元数据、CIL 指令、声明的 native 依赖、构建对比 | 无(纯静态) |
| Android APK | 清单声明、类、反编译方法、引用 | Headless JADX + 完整 JDK(Linux/macOS/Windows x64) |
| 固件 | 区域检查、显式提取、原生分析交接 | Linux 上的 Binwalk / Unblob |
| Go / Rust 二进制 | 内嵌编译器版本、模块 / cargo-auditable crate 依赖边 | 内置静态检查,无需安装对应工具链 |
(来源:README.md "What you can analyze")
⚙️ 最小跑通路径
前置条件一条:Node.js 22.x(>=22.23.4)、24.x(>=24.22.1)或 26.12.1+,外加 npm(来源:README.md)。无需任何逆向引擎,把路径换成解包后的应用目录或 ASAR 文件:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json官方对输出的定义:"The result includes modules, imports, Electron boundaries and their evidence."(来源:README.md)
拿到 JSON 后,建议人工核验三类字段:模块与导入图是否与目标文件实际分布吻合;Electron 边界声明的 preload / 主进程划分是否成立;每条结论附带的 evidence 记录中的工件身份(artifact identity)与来源位置是否指向真实文件。
注意 docs/cli.md 的提醒——完整应用 Evidence 对真实应用可达数百 MB,官方示例中 334 MB 的 Obsidian 应用 Evidence 投影出约 10 KB 的摘要视图。建议先落盘再用rea inspect-analysis-view做摘要投影,而非直接扫完原始输出(来源:docs/cli.md)。
🧭 证据契约:结论怎么钉在工件上
每次工具调用返回的不只是结论。契约原文:"Evidence records retain artifact identity, source locations, observations, inferences and unresolved findings."(来源:docs/cli.md)
| 调用方式 | 返回内容 | 可核验字段 |
|---|---|---|
解包目录 / ASAR +--json | 模块图、导入、Electron 边界 + 完整 Evidence | 工件身份、来源位置逐条对照目标文件 |
二进制路径 +--provider指定引擎 | 伪代码、函数卷宗、交叉引用 | 引擎具体版本绑定写入会话;失败按原始原因返回 |
两份 Evidence bundle(rea compare) | 规范化差异 | 先经rea evidence-import验证再比较 |
rea doctor --json | 结构化环境诊断 | 严格只读,不修改任何配置 |
两条关键设计原则值得单独说:
observed / derived / inferred 分库存放。官方设计要求 "Keep observed, derived, and inferred relationships distinct."(来源:docs/tool-design.md)——观察到的事实、推导出的结论、模型推测的关系不允许混写。这保证读者能区分"引擎实际看到了什么"和"agent 推断了什么"。
查不到记"未知"而非记"没有"。"Missing coverage is unknown, not absence."(来源:docs/tool-design.md)一个具体例子:Rust 二进制的.dep-v0段缺失时,官方定义为 null 元数据,而非"无依赖"的证明——"A missing.dep-v0section is null metadata, not proof that the binary has no dependencies."(来源:docs/cli.md)
🛑 官方边界:不自动做什么
官方把边界写进了契约,以下三条是最常被误读的:
- 引擎故障不自动换人:"A selected provider is never replaced automatically after a runtime failure."(来源:docs/mcp-contracts.md)选定的 provider 在运行时失败后不会静默切换,失败按原始原因返回。
- 伪代码不当源码:"pseudocode is never treated as original source or Hopper-equivalent text."(来源:docs/installation.md)引擎输出的伪代码是近似还原,不是原始源码的等价替换。
- 静态分析不碰目标进程:"Static JavaScript and .NET inspection read the supplied files without running the application."(来源:README.md)静态路径只读文件,不启动、不交互目标应用。
📎 数据去向与引擎复用
官方 FAQ 回答直接:"REA analyzes targets locally."(来源:README.md)待分析文件不离开机器,不存在上传环节。但同一节明确提醒 "its model provider has its own data policy"(来源:README.md)——agent 会收到工具结果,模型服务商的数据策略需要自行评估。
引擎侧的原则是复用而非捆绑:"Native analysis can use an existing Hopper, Ghidra, IDA or Kuna installation"(来源:README.md)。静态 JavaScript 分析则一个引擎都不用装。
与 Ghidra 的进程通信不开公网端口,docs/installation.md 说明桥接使用 "a current-user-only local bridge socket and descriptor",即仅限当前用户的本地 socket 与描述符(来源:docs/installation.md)。rea doctor --json被定义为严格只读("strictly read-only"),不修改任何配置(来源:docs/installation.md)。
这张图证明原生分析结果来自对已安装 Hopper 的实时驱动——右侧面板可见文件路径、Mach-O Loader 与具体地址定位,而非模型事后生成的叙述。可核验细节:面板中加载的文件路径与当前分析会话的 target 一致,反汇编地址与analysis_provider_binding中绑定的 provider 版本对应。
深入文档
- docs/installation.md:安装、引擎配置、
rea doctor诊断与支持的 agent 列表 - docs/cli.md:全量 CLI 命令、provider 选择、快照与退出码
- docs/mcp-contracts.md:MCP 工具输出契约、provider 绑定与 session 生命周期
- docs/tool-design.md:工具设计原则、证据分库与恢复策略
- docs/rust-binaries.md:Rust
.dep-v0解析细节与"未知"语义的具体实现
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考