目录
- REA 到底是什么
- 它到底能分析什么
- 安装(重点)
- 使用(重点)
- Windows 上要分析 exe,怎么配 Ghidra
- 常用命令速查
- 容易踩的坑
- 给你的上手建议
首先,这不是一个"反编译软件",它的定位挺特别——REA 是把一堆逆向分析工具打包成一个统一接口,专门喂给 AI Agent 用的。
下面从原理讲到装、到用。
一、REA 到底是什么
全名 Reverse Engineer Anything(作者 morluto),npm 包名 rea-agents,MIT 协议,官网 rea.tools,GitHub 热榜项目,社区走 Discord。
它解决的真实痛点很具体:你看中某个 App 里的一个功能,但拿不到源码。
传统做法是你自己开 IDA / Hopper / Ghidra,一个函数一个函数地啃汇编。REA 的做法是——你直接对 Claude Code / Cursor 说"帮我看懂这个功能,然后给我写一个",Agent 通过 REA 去调这些分析引擎,拿回伪代码、汇编、符号、交叉引用,再解释给你听,甚至帮你照着仿写。
三个关键特性:
- 分析全程在本机跑,你的程序不上传到 REA 服务器(但你的 Agent 模型侧仍有自己的数据政策)
- 每条结论都附「证据」和「局限说明」,不是凭空猜测,你可以自己回溯验证
- 20+ 个客户端一键配置,含 Claude Code、Cursor、Codex、VS Code、Trae、Kimi,也包括 WorkBuddy
它的运行结构是这样的:
你(用大白话描述目标)
│
▼
你的 AI Agent(Claude Code · Cursor · Codex · WorkBuddy …)
│ ▲
│ │ 证据 · 伪代码 · 交叉引用
▼ │
REA · 本机 MCP 服务(统一接口,不用背命令)
│
▼
Hopper · Ghidra · IDA + 内置静态解析(JS / .NET / Go / Rust / APK …)
│
▼
回到 Agent:证据 + 解释 + 可复用实现
二、它到底能分析什么
覆盖面比想象中广,关键在于「不是所有目标都需要装反汇编引擎」:
| 目标 | 返回什么 | Windows 上要额外装什么 |
|---|---|---|
| JavaScript / Electron | 模块、import、sourcemap、路由、IPC、原生插件关系 | |
| .NET 程序集 | 元数据、CIL 指令、原生依赖、版本比对 | |
| Go 二进制 | 编译器版本、模块列表、构建参数 | |
| Rust 二进制 | cargo-auditable 的 crate 名/版本/依赖图 | |
| SQLite 数据库 | 表、字段、索引、视图、触发器、抽样数据 | |
| WASM / APK / Flutter 包 | 校验、导入导出、Manifest、类与方法 | |
| 原生二进制(exe/dll) | 伪代码、汇编、字符串、符号、调用与引用 | |
| 网站 / 抓包(HAR/SAZ) | 页面结构、脚本、请求响应、截图 | Chrome 系浏览器 |
| Android 设备 / 固件 / 抓包 / 逻辑信号 | 设备信息、分区、协议、解码 | Linux 环境更顺(Windows 受限) |
所以路线其实是这样分的:
你要分析什么?
├─ 原生二进制、固件(exe · dll · so · Mach-O)
│ └─► 先装一个反汇编引擎:Ghidra / Hopper / IDA
│
└─ 应用与数据(JS · .NET · Go · Rust · APK …)
└─► 什么都不用装,装完 Node.js 就能跑
三、安装(重点)
前置条件就一个
Node.js,且必须是 22.x(≥22.19)、24.x(≥24.11)或 26+。
Node 23 和 25 直接不支持。
你本机有 24.14.0 和 22.22.2,都在合规区间内,可以直接用。
三步装好
第 1 步:跑这一条命令
npx rea-agents setup
第 2 步:跟着向导走,它会先给你看清单再动手
- 先弹出多选框,列出检测到的所有 Agent(Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、VS Code、Trae、Windsurf、Kimi、Qwen Code、WorkBuddy 等 20+ 个)。已装过 REA 的默认勾选,新检测到的不默认勾选——检测到 ≠ 允许它改
- 然后它给出完整计划:每个要改的配置文件路径、要装的技能目录、要装的外部软件、网络来源、完整性校验值,全部摊开给你看
- 你确认后它才写文件;改配置前自动备份成
.rea.backup,且用原子替换、保留你原有的其他条目和注释 - 任何一步按 Ctrl-C 取消 = 什么都没发生
第 3 步:重启 Agent
完成消息里点名的客户端必须重启,否则会话里刷不出 REA 的工具。
三种替代装法
A. 想要一个常驻的 rea 命令:
npm install --global rea-agents
rea --help
B. 手动注册 MCP(写进客户端的 MCP 配置里):
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "rea-agents@latest", "mcp"]
}
}
}
Windows 必读:stdio 类型的客户端启动不了
npx的 shim,Windows 上要包一层cmd.exe。手动注册时写成:claude mcp add --scope local rea -- cmd.exe /d /c npx -y rea-agents@latest mcp官方建议持久注册写死具体版本号(如
rea-agents@6.5.0)而不是@latest——setup 也是这么做的,这样以后rea update能精确换版本。
C. 只要技能说明,不要 MCP 服务:
npx skills add morluto/rea --skill reverse-engineer-anything
四、使用(重点)
用法一:对你的 Agent 直接说人话 —— 这才是它的主场
装完重启后,你不需要记任何命令,直接开口:
分析一下 D:\apps\example 这个应用里「搜索」是怎么实现的,
把证据给我看,然后照着重写一份到我的项目里。
D:\tools\foo.exe 里那段授权校验逻辑在哪?反编译出来看看。
Agent 内部做的事:通过 MCP 让 REA 打开目标 → REA 调 Ghidra/Hopper 做静态分析 → 返回伪代码、汇编、符号、交叉引用 → Agent 拿这些证据继续追问、解释、写实现。
用法二:命令行(适合写脚本、批处理、或不想开 Agent)
不需要任何反汇编引擎的(Windows 上最省事):
# JS / Electron 应用(传解包后的目录,或 .asar 文件)
npx -y rea-agents@latest analyze-javascript-application "D:/apps/example" --json
# .NET 程序集(静态读元数据和 CIL,不加载不执行)
rea inspect-managed-artifact "D:/x/Assembly.dll" --json
rea inspect-managed-members "D:/x/Assembly.dll" --type Example.Parser --json
# Go / Rust 二进制(不需要装 Go、Rust)
rea inspect-go-binary "D:/x/program.exe" --json
rea inspect-rust-binary "D:/x/program.exe" --json
# SQLite 数据库
rea inspect-sqlite-database "D:/x/app.db" --json --table users --row-limit 20
分析原生 exe/dll(必须先配好引擎):
rea analyze "D:/x/program.exe" --provider ghidra --json # 总览
rea search "D:/x/program.exe" "license" --provider ghidra --json
rea function "D:/x/program.exe" main --provider ghidra --json
rea decompile "D:/x/program.exe" 0x1000 --provider ghidra --json
rea xrefs "D:/x/program.exe" 0x1000 --provider ghidra --json
rea trace "D:/x/program.exe" "license" --provider ghidra --json
五、Windows 上要分析 exe,怎么配 Ghidra
先明确一件事:Windows 上 Hopper 装不了(安装器只支持 macOS 和 Linux),IDA 要你自己买许可。所以 Windows 走 Ghidra 这条路:
- 自己下载 Ghidra 12.1.x,解压到比如
C:\tools\ghidra_12.1.4_PUBLIC - 装一个64 位完整 JDK 21+(Ghidra 12.1 的硬要求)
- 打开 PowerShell:
$env:GHIDRA_INSTALL_DIR = "C:\tools\ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"
rea doctor --json # 先体检,看缺什么
rea providers --json # 看引擎认没认出来
rea setup # 写进 Agent 配置
三条硬约束(别踩):
- setup 永远不会帮你装 Ghidra、Java、Python,全部要你自己装好再指路径给它
- Windows 上的 Ghidra 支持是实验性 P0:只读、只支持 x86 / x86-64 的 PE 程序和 DLL、目标必须在本地固定的 NTFS 卷上
- 内存不够时设
GHIDRA_HEADLESS_MAXMEM=512M(默认 2G)
补充:Windows 边界细节(来自官方 windows-ghidra-p0.md)
上面那句"实验性 P0"背后有更具体的规定,实际动手前值得先看一眼:
| 约束项 | 具体要求 |
|---|---|
| 操作系统 | Windows 10+ x64 |
| 只读 | 仅开放 26 个只读操作(inventory / memory / function analysis)。没有写操作——改名、加注释在 Windows 上不可用 |
| Ghidra 版本 | 必须是 12.1.x(12.1.4 已验证) |
| JDK | 64 位完整 JDK 21 或更高(Ghidra 12.1 的硬要求,无上限) |
| 目标架构 | 已发布的 npm 包只接受 x86-64 PE。32 位 x86 PE 支持目前只在仓库 main 分支上,npm 到 5.0.0 为止都不含 |
| 目标类型 | 必须是原生、非托管的 PE 应用程序或 DLL(托管 .NET 镜像会被拒绝,走另一条静态通道) |
| 文件系统 | 目标必须位于本地固定 NTFS 卷上。UNC 路径、reparse point、alternate stream、SUBST 别名、非 NTFS 文件系统一律拒绝 |
另外两条容易忽略的:
- 冷启动导入 Ghidra 可能超过客户端的默认请求超时,官方给的服务启动期限是 330 秒
- 用 MCP 方式连接时,env 里要带上同样三个变量:
{
"mcpServers": {
"rea": {
"command": "C:\\tools\\node\\node.exe",
"args": ["C:\\tools\\rea\\scripts\\rea.mjs", "mcp"],
"env": {
"REA_ANALYSIS_PROVIDER": "ghidra",
"GHIDRA_INSTALL_DIR": "C:\\tools\\ghidra_12.1.4_PUBLIC",
"JAVA_HOME": "C:\\tools\\jdk-21"
}
}
}
}
六、常用命令速查
| 我想… | 命令 |
|---|---|
| 全面体检 | rea doctor --json |
| 只查某个引擎 | rea doctor --provider ghidra --json |
| 只查某个 Agent 的注册 | rea doctor --client workbuddy --json |
| 列出可用引擎 | rea providers --json |
| 更新到新版 | rea update |
| 卸载(保留数据) | rea uninstall |
| 卸载并清缓存 | rea uninstall --purge-data |
两把提效利器:
# 1. 快照:目标字节、操作、参数、引擎都一致时,直接复用上次结果,不用重新启动引擎
rea analyze prog.exe --provider ghidra --snapshot D:/rea/prog.json
# 2. 证据包:校验 / 导出规范形式 / 对比两个版本
rea evidence-import D:/rea/bundle.json
rea evidence-export D:/rea/bundle.json D:/rea/canonical.json
rea compare D:/rea/left.json D:/rea/right.json
七、容易踩的坑
-
Node 版本卡死:23、25 用不了,必须 22.19+ / 24.11+ / 26+。
-
JS 分析的证据文件巨大。真实应用能到几百 MB(文档里提到 Obsidian 有 334 MB)。别直接塞给模型,先落盘再投影摘要:
rea analyze-javascript-application D:/apps/example --json > app-evidence.json jq -c '{source:{kind:"inline",evidence:.},view:{kind:"summary"}}' app-evidence.json > app-view.json rea inspect-analysis-view app-view.json # 334MB → 约 10KB 摘要 -
没配引擎就调原生分析 → 报
provider_unavailable。先rea doctor --provider ghidra --json看缺什么,别瞎猜。 -
历史源码导入在 Windows 不支持(
import-reference-source返回unsupported_host),要用 WSL。 -
商业工具许可自己搞定。REA 本体是 MIT,但它不提供 IDA / Hopper / JEB 的授权,也不支持破解版和共享密钥。
-
合法边界:官方定位是分析你自己拥有或有权限分析的软件(互操作性、软件保存、教学研究)。
-
遇到 bug 先
rea update,这个项目迭代很快,很多问题新版已修。
八、给你的上手建议
别一上来就装 Ghidra。 推荐顺序:
- 先
npx rea-agents setup配好 WorkBuddy 或 Claude Code,重启 - 拿一个 Electron 应用或解包后的 JS 目录用 CLI 跑一遍(零额外依赖,立刻出结果),感受一下 REA 返回的"证据"到底长什么样
- 确认这工具对你真有用、且确实需要看 exe/dll 了,再去装 JDK + Ghidra
这样试错成本最低——最坏情况你只花了几分钟。