进阶 📋 6 个步骤 第 515 / 517 篇

用 REA 把编码智能体接上 Ghidra:无源码逆向分析二进制、APK 与 Electron 应用实操

REA 以 MCP Server 形态给 Claude Code、Codex 等 12 种编码智能体挂上二进制分析工具与调查工作流:npx 一条命令接入、Hopper/Ghidra 引擎选型、Electron 与 APK 目标实操、CLI 脚本化与法律边界,全流程本地分析。

2026.10.09· 26 分钟阅读· 约 2731 字· 🔍 REA / 🧩 MCP Server

看到某个软件里有一个你想要的功能,想让智能体「去搞清楚它是怎么做的」,在过去几乎不可行:智能体读不到没有源码的程序。想分析一个编译好的二进制、一个别人家的 Electron 应用,或者一个 Android 安装包,传统路径是你自己开 Ghidra 或 Hopper,手动导出反编译的伪代码,再整段贴进对话窗口——每多问一个追问,就要重复一遍导出贴送的循环,二进制分析被做成了搬运工的活。10 月 7 日开源的 REA(Reverse Engineer Anything)把这条链路搬进了智能体:它以 MCP Server 的形态给 Claude Code、Codex、Cursor、Gemini CLI 等编码智能体挂上几十个原生二进制分析工具和十余条引导式调查工作流,智能体直接调用、直接拿到带证据的结构化结果,整个分析在你本机完成。项目上线当天冲上 GitHub trending 榜首、一天收获近三千星,目前总星数已过两万,MIT 协议。本篇按官方 README 路径,从一条安装命令到让智能体真正逆向一个功能,完整走一遍。

🎯 适合人群:做安全研究、恶意软件分析、兼容性调查,或者单纯想知道竞品某个功能怎么实现的开发者。前置要求:Node.js 22.19+ / 24.11+ / 26+ 与 npm;原生深度分析另需 Hopper、Ghidra 或 IDA 三选一(纯 JavaScript 与 .NET 静态检查不需要任何引擎)。

先理解:REA 在链路里扮演什么角色

REA 本身不做反编译。它是调度层和证据层:智能体通过 MCP 调用 REA,REA 把任务派发给本机的分析引擎——原生二进制走 Hopper、Ghidra 或 IDA(还有一个只读的 IDA 适配器),JavaScript 与 Electron 应用走自带的静态分析,Android APK 走无头 JADX,固件走 Binwalk 与 Unblob——然后把伪代码、汇编、符号、调用关系等结果连同证据与局限说明一起返回给智能体。智能体拿到这些再决定下一步:追问、解释行为,或者照着写一个实现并测试。这个「结论必带证据」的设计是它与传统「把 Ghidra 输出贴给模型」的本质区别:每条结论都能回溯到具体的反编译片段,模型编不了一场。全部分析在本地跑,REA 不上传你的应用;但要注意,智能体收到的分析结果会进入模型上下文,模型提供商有自己的数据政策。

法律边界自己守。官方免责声明原文写得很直白:REA 提供的工具用于合法的逆向工程研究、分析与重建,你需要自行取得所需的授权并遵守适用法律,项目不为非法或未经授权的使用背书。分析商业软件前,先确认你所在司法辖区的许可协议与反编译条款;把逆向产物直接搬进自己的产品有侵权风险。

Step 1:一条命令接入你的编码智能体

1 npx rea-agents setup 交互式注册
# 前置:Node.js 22.19+(或 24.11+ / 26+)与 npm
npx rea-agents setup

这是官方主推的接入方式。命令会交互式地列出它探测到的智能体(支持 Claude Code、Codex、Cursor、Gemini CLI 等),你勾选要接入的、复核它提出的配置改动并批准。Setup 会做三件事:写入 REA 的 MCP Server 配置、安装配套的工作流指令(让智能体知道怎么组织一次逆向调查)、并对已有配置做备份。完成后重启你的智能体。

💡 不想用交互式安装,也可以在智能体的 MCP 配置文件里手动添加(版本号建议跟官方仓库保持一致):
{
  "mcpServers": {
    "rea": {
      "command": "npx",
      "args": ["-y", "rea-agents@latest", "mcp"]
    }
  }
}

Step 2:看懂目标矩阵,确认你的分析对象要什么引擎

2 对着官方矩阵选引擎,避免装错方向

REA 能分析的对象远不止原生二进制。动手前先对一遍官方目标矩阵,确认你的场景需要哪个引擎、哪个平台:

# 官方目标矩阵(节选,详见 README「What you can analyze」表)
# 原生二进制(Mach-O/ELF/PE) : 伪代码/汇编/符号/调用关系  -> 需 Hopper 或 Ghidra 或 IDA
# JavaScript / Electron 应用   : 模块/导入/source map/路由/IPC -> 仅需 Node.js 与 npm(免引擎)
# .NET 程序集                  : 元数据/CIL 指令/原生依赖    -> 静态检查,免引擎
# Android APK                  : Manifest/类/反编译方法      -> 无头 JADX + 完整 JDK(Linux/macOS)
# 固件                         : 分区/提取结果               -> Binwalk / Unblob(Linux)
# 网站                         : 页面结构/脚本/网络观察       -> Chrome 系浏览器
# 离线 ELF 布局/录制的崩溃      : 段/符号/寄存器              -> 调用方自备 pwntools

两条高频结论提前说:如果你只是想拆 Electron 应用的前端逻辑(模块图、路由、IPC 通道、构建间差异),什么都不用装,Node 环境就够;如果你想拆原生二进制,才需要装分析引擎。

平台差异显著。APK 分析目前要求 Linux 或 macOS 上的无头 JADX 与完整 JDK;固件解包的 Binwalk/Unblob 只支持 Linux;Windows 上 Ghidra 路线是实验性的,仅支持 x86-64 PE 二进制的只读分析。Windows 用户想跑深度原生分析,建议在 WSL2 或虚拟机里走 Linux 路线。

Step 3:装原生分析引擎(按需跳过)

3 Hopper 可由 setup 代装,Ghidra 与 IDA 用现成的
# Ghidra 路线(免费开源):先装 JDK 21+,再装 Ghidra
# 以 Linux 为例(macOS/Windows 从官网下载发行包解压即可)
sudo apt install openjdk-21-jdk
# 然后从 ghidra-sre.org 下载发行包解压到任意目录,
# REA 通过环境变量或配置定位你的 Ghidra 安装

# Hopper 路线:运行 setup 时按提示批准,REA 可代为安装
npx rea-agents setup

三个引擎怎么选:Ghidra 免费开源、覆盖格式最全,是大多数人的默认选择;Hopper 是付费的 macOS/Linux 工具,在大体积二进制上明显更快,setup 可以在你批准后代为安装;IDA Pro 有现成安装的可以用 REA 的只读适配器接入。Hopper 由 REA 拉起时,macOS 上头一回运行可能弹出选择演示模式或激活许可的对话框,按提示处理一次即可。

💡 只拆 Electron/.NET 目标的话,这一步整个跳过——静态分析不依赖任何原生引擎,装完 REA 直接进下一步。

Step 4:让智能体跑一个完整的逆向任务

4 用「目标 + 功能 + 证据 + 复刻」公式下指令

重启智能体后,用官方 README 给的指令公式描述任务——说清目标应用、想理解的功能、要证据、以及是否要复刻:

Understand how search works in the Notes app, show me the evidence,
and build a similar feature for my project.

# 把 Notes 换成你的目标应用,把 search 换成你想理解的功能

智能体会自动组织调查:调用 REA 工具检查目标、顺着相关代码追(原生目标追伪代码与汇编,Electron 目标追模块与 IPC 边界),每一步都带回证据。官方展示了三个完整案例可以对照学习:DX-Ball 案例 reconstruct 出声音声像计算,重建代码通过了 3205 个原始 x86 用例并逐字节复现了 63 个编译后函数;Notion 案例从渲染进程的剪贴板 API 一路追过 preload 与 IPC 到主进程;TH04 案例从 16 位指令里恢复了 DOS 游戏的子弹环计算。

💡 任务指令越具体,调查越高效。「分析这个应用」不如「搞清楚这个应用的离线搜索是怎么在本地建索引的,给我看关键函数的伪代码」。找到的功能点如果太粗,让智能体「继续深入到函数级别」即可。

Step 5:不用智能体,直接在终端用 CLI 分析

5 CLI 与 MCP 走同一套工作流,脚本化必备
# 全局安装 rea 命令,日常使用更顺手
npm install --global rea-agents
rea --help

# 例:静态分析一个解包后的 Electron 应用目录或 ASAR,输出 JSON
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

# Windows 路径写法(官方示例)
npx -y rea-agents@latest analyze-javascript-application "D:/apps/example" --json

CLI 命令与 MCP 工具调用的是同一套工作流,返回结构一致:模块、导入、Electron 边界与各自的证据。把命令塞进脚本或 CI 里做版本间 diff(比如对比两个构建的模块与路由变化)是常见用法。原生分析的命令、引擎选择、快照与导入导出,见官方「CLI and Evidence」指南。

Step 6:更新与日常维护

6 REA 迭代很快,定期刷新两层安装
# npm 全局安装的 CLI 更新
rea update

# 用 npx 的:刷新智能体注册与技能
npx rea-agents@latest setup

# 一次性命令直接带版本号
npx rea-agents@latest <command>

更新 CLI 之后,要按 update 命令输出的提示重新跑一遍 setup 刷新智能体注册与工作流指令,然后重启智能体。遇到 bug 的官方建议顺序也是:先更新、重试、再开 issue(附 REA 版本、目标类型、复现步骤与错误输出)。项目处于发版冲刺期,两天内连出 4.0.0、4.0.1、4.1.0 多个版本,动手前对一眼 npm 上的当前版本号。

遇到问题先更新再排查。官方 FAQ 明确写了许多问题在最近的版本里已修复。同时提醒:setup 修改你的智能体配置文件前会备份,但如果你有多套自定义 MCP 配置,批准改动前逐条确认变更清单仍是好习惯。

常见问题 FAQ

Q:REA 会把我的应用上传到云端吗?不会。分析全部在本地执行,REA 不上传目标程序;但智能体收到的工具结果会进入模型上下文,模型提供商按它自己的数据政策处理这些内容——分析敏感目标时优先考虑本地或私有化部署的模型。

Q:一定要装 Hopper、Ghidra 或 IDA 吗?只有原生二进制的深度分析需要。JavaScript/Electron 与 .NET 的静态检查免引擎,网站行为观察只需要一个 Chrome 系浏览器。

Q:从 skills.sh 装技能是干什么的?那是给智能体的调查指令集(怎么组织一次逆向调查)。用 rea setup 注册 MCP Server 时会一并装上;也可以只装技能不装 MCP。

Q:和直接把 Ghidra 输出贴给模型比,优势在哪?两点:一是闭环——智能体自己调工具、自己追问,不用你手动导出粘贴;二是证据链——每条结论带反编译片段佐证和局限说明,能显著压低模型幻觉。

← 返回教程中心