AI 反编译工具 REA 到底是什么?如何安装使用?

目录

  1. REA 到底是什么
  2. 它到底能分析什么
  3. 安装(重点)
  4. 使用(重点)
  5. Windows 上要分析 exe,怎么配 Ghidra
  6. 常用命令速查
  7. 容易踩的坑
  8. 给你的上手建议

首先,这不是一个"反编译软件",它的定位挺特别——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、原生插件关系 :white_check_mark: 什么都不用装
.NET 程序集 元数据、CIL 指令、原生依赖、版本比对 :white_check_mark: 什么都不用装(纯静态,不执行)
Go 二进制 编译器版本、模块列表、构建参数 :white_check_mark: 不用装 Go
Rust 二进制 cargo-auditable 的 crate 名/版本/依赖图 :white_check_mark: 不用装 Rust
SQLite 数据库 表、字段、索引、视图、触发器、抽样数据 :white_check_mark: 不用装
WASM / APK / Flutter 包 校验、导入导出、Manifest、类与方法 :white_check_mark: 基本不用装
原生二进制(exe/dll) 伪代码、汇编、字符串、符号、调用与引用 :warning: 必须先装 Ghidra
网站 / 抓包(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+。:warning: 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"]
    }
  }
}

:warning: 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 这条路:

  1. 自己下载 Ghidra 12.1.x,解压到比如 C:\tools\ghidra_12.1.4_PUBLIC
  2. 装一个64 位完整 JDK 21+(Ghidra 12.1 的硬要求)
  3. 打开 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

七、容易踩的坑

  1. Node 版本卡死:23、25 用不了,必须 22.19+ / 24.11+ / 26+。

  2. 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 摘要
    
  3. 没配引擎就调原生分析 → 报 provider_unavailable。先 rea doctor --provider ghidra --json 看缺什么,别瞎猜。

  4. 历史源码导入在 Windows 不支持(import-reference-source 返回 unsupported_host),要用 WSL。

  5. 商业工具许可自己搞定。REA 本体是 MIT,但它不提供 IDA / Hopper / JEB 的授权,也不支持破解版和共享密钥。

  6. 合法边界:官方定位是分析你自己拥有或有权限分析的软件(互操作性、软件保存、教学研究)。

  7. 遇到 bug 先 rea update,这个项目迭代很快,很多问题新版已修。


八、给你的上手建议

别一上来就装 Ghidra。 推荐顺序:

  1. 先 npx rea-agents setup 配好 WorkBuddy 或 Claude Code,重启
  2. 拿一个 Electron 应用或解包后的 JS 目录用 CLI 跑一遍(零额外依赖,立刻出结果),感受一下 REA 返回的"证据"到底长什么样
  3. 确认这工具对你真有用、且确实需要看 exe/dll 了,再去装 JDK + Ghidra

这样试错成本最低——最坏情况你只花了几分钟。