← 返回学习中心OiOi Academy · REA 动画课件
morluto/rea · ★ 75,897 · MIT · 2026-10-11 仍在更新

REA:给 AI 的
「逆向工程工具箱」

Reverse Engineer Anything —— 一个 MCP,把 Hopper、Ghidra、IDA 这些逆向神器,变成 AI 智能体能直接调用的「手」。看到 App 里喜欢的功能?让 AI 拆开它,一直看到二进制级别,讲清原理、拿出证据,再帮你做一个。

npx rea-agents setup
作者 morluto协议 MIT语言 TypeScript

一句话:REA 是什么

What is REA

REA = Reverse Engineer Anything(逆向拆解一切)。它是一个 MCP 服务器,一头连着你的 AI 智能体(Claude Code、Cursor、Codex……),另一头连着逆向工程工具(Hopper、Ghidra、IDA……)。

延伸解读
打两个比方你就懂了:
1. X 光机。软件是个黑盒子,源代码是钥匙——但大多数软件不给你钥匙。逆向工程就是不用钥匙,靠「X 光」看清里面齿轮怎么转。以前这是人类专家的手艺活;REA 把 X 光机交到了 AI 手里。
2. USB 标准。MCP 就像 AI 世界的 USB 接口标准:以前每个工具都要单独接线,现在按一个标准,「插上就能用」。REA 就是按这个标准做出来的逆向工程接口。

官方原话:「See a feature you like. Understand how it works, down to the binary level.」(看到喜欢的功能?搞懂它怎么工作,一直到二进制级别。)

官方截图:REA 在 Hopper 里启动分析桥,正在检查一个原生二进制文件
官方截图:REA 在 Hopper 里启动分析桥,正在检查一个原生二进制文件
记住:一句话:REA 让 AI 智能体拥有了「逆向工程」的能力——看上哪个功能,就能拆开看到底。
◈

动画:四步工作流

How it works

REA 的工作方式是一个四步循环。看动画走一遍,点击每一步看详解:

1

提问 Ask

你 + 智能体 + 本地目标
App / 二进制 / 网页

2

检查与追踪

REA 出场
CLI / MCP 调用分析工具

3

读证据

代码 / 引用 / 未知项
每个结论都带出处

4

用起来

你的智能体
解释 / 实现 / 测试

↩ 追问:没看懂就再问一轮,回到第 2 步

点击上面的步骤,看每一步在干什么。动画会自动循环播放。

REA investigation flow Ask a question about a local target. REA inspects and traces through local analysis adapters, returns evidence, and supports follow-up questions as your agent explains, implements and tests. REA investigation flow 1. Ask Your agent + local target App / binary / browser 2. Inspect & trace REA CLI / MCP 3. Read the evidence Code / references / unknowns 4. Use what you learn Your agent Explain / implement / test Analysis tools Local analysis adapters Follow-up question
官方原图:REA investigation flow(1 提问 → 2 检查追踪 → 3 读证据 → 4 用起来,支持追问循环)

终端用户也可以不用智能体,直接敲命令——CLI 和 MCP 走的是同一套工作流:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

这行命令的意思:分析一个解包后的 JS/Electron 应用目录,输出 JSON 报告,包含模块、导入关系、Electron 主进程/渲染进程边界,以及每条结论的证据。把路径换成你的目标就行。

记住:工作流:提问 → REA 检查追踪 → 带证据返回 → 智能体解释/实现/测试;全程本地运行,每步可追问。
▦

它能拆什么:万能拆解台

Targets — 点击卡片翻面

REA 不是只能拆一种东西——它像个「万能拆解台」,点击每张卡片看:能拆出什么、需要你装什么:

原生二进制
Native Binary
能拿到:伪代码、汇编、字符串、符号、函数调用与引用
需要:Hopper / Ghidra / IDA(三选一)
最硬核的拆解:没有源代码的 exe、so、dylib,丢进去就能读出伪代码。setup 经你批准还可以顺手装 Hopper。
JS / Electron 应用
JavaScript / Electron
能拿到:模块、导入关系、source map、路由、IPC、原生插件关系
需要:只要 Node.js,不需要原生分析引擎
VS Code、Notion、Discord 这类桌面 App 都是 Electron 做的——本质是打包的网页,REA 直接读代码,连跑都不用跑。
网站
Website
能拿到:页面结构、脚本、网络请求观测、截图
需要:Chrome 系浏览器
想知道某个网站的酷炫动效怎么实现的?REA 用浏览器打开它,看结构、看脚本、看发了哪些网络请求。
.NET 程序集
.NET Assembly
能拿到:元数据、CIL 指令、声明的原生依赖
需要:无(纯静态分析)
C# 写的程序编译成中间语言 CIL,REA 直接读,不用装任何 .NET 工具。
Android APK
Android APK
能拿到:Manifest 声明、类、反编译后的方法与引用
需要:JADX + 完整 JDK
手机 App 的安装包也能拆:看它申请了哪些权限、调用了哪些 API。
Android 设备
Android Device
能拿到:设备、应用包、进程、日志、截图、文件传输
需要:你自己的 adb(模拟器或真机)
连上真机或模拟器,直接看 App 在手机里实时干了什么。
固件
Firmware
能拿到:分区、解包结果,可转交原生分析
需要:Binwalk / Unblob(Linux)
路由器、摄像头固件也能解剖:先解包,再对里面的二进制做原生分析。
EVM 字节码
EVM Bytecode
能拿到:函数选择器、字节偏移、参数推断
需要:Linux x64
智能合约的字节码:没有源码也能看出它有哪些函数、参数是什么。
网络抓包
Network Capture
能拿到:请求、响应、暴露的载荷与源码位置
需要:HAR 文件;mitmdump(Linux)
把浏览器的网络抓包(HAR)喂给 REA:每个请求发了什么、回了什么,一目了然。
进程行为
Process Behavior
能拿到:终端输出、交互、退出码、文件系统观测
需要:Linux / macOS
把可疑程序跑起来,REA 在旁边记录:它输出了什么、改了哪些文件、怎么退出的。
离线 ELF
ELF Layout
能拿到:节、段、符号/重定位表
需要:pwntools(Linux x64)
Linux 可执行文件的骨架:节和段怎么排布的,适不适合动手脚。
崩溃记录
Recorded Crash
能拿到:每个线程的寄存器、信号
需要:pwntools;可选 GDB
程序崩溃时的「黑匣子」:每个线程死在哪一行、寄存器里是什么。
延伸解读
注意这个设计的聪明之处:静态分析(读文件,不运行:JS、.NET)和运行时观测(跑起来看:进程行为、浏览器)是两套手法,REA 全包了。就像医生既有 X 光(静态),也有听诊器(动态)。
记住:REA 能拆 15 种目标:从二进制、App、网站到固件、智能合约字节码;静态读文件和动态跑起来看,全都有。
✦

证据与局限:诚实的 AI

Evidence-first

REA 最不一样的地方,是它的「证据观」。很多 AI 工具给你一个结论就完了;REA 给结论时,必须同时给出证据和局限:

证据 Evidence代码片段、引用位置、截图、字节——每个结论都能追溯到「我在哪看到的」。比如 DX-Ball 案例里,结论精确到「栈输入 ×1.5625、+500 偏移」,每一步都有指令级证据。局限 Limitations哪些还没搞清楚,明确说出来,而不是编一个看似合理的答案。这是 REA 写进设计里的诚实:不知道,就说不知道。本地运行分析在你的机器上跑,目标文件不上传云端。想拆的 App 再敏感,也只在你本地被「解剖」。运行时观测会实际运行目标,用的是你自己的用户权限——每份指南都写清了会产生什么效果。

看一个「追问」的现场模拟——注意 AI 是怎么拿着证据步步深入的:

● REA 追问现场(自动播放)
记住:证据观:每个结论带证据、每份未知都承认、分析全在本地——这是 REA 和「瞎猜型 AI」的分水岭。
★

三个真实案例:从游戏到 Notion

Showcases — 点击展开

官方三案例插画:DX-Ball 声音平移、Notion 剪贴板桥、TH04 弹幕圆环
官方三案例插画:DX-Ball 声音平移、Notion 剪贴板桥、TH04 弹幕圆环

DX-Ball 是 90 年代的经典打砖块游戏。任务:搞清它的「声音平移」(声音随砖块位置左右偏移)是怎么算的。
REA 跟着声音调用,一路追进 position-to-pan helper 函数,看它的每条指令,发现规律:栈输入 ×1.5625,再 +500 偏移、缩放、转整数。
然后把不完整的伪代码手写成 C 语言——验证结果:3,205 个原始 x86 测试用例全过,63 个编译函数字节逐字节复现。等于把 30 年前的算法完美「复活」了。

DX-Ball sound-pan investigation REA provides the instruction, caller and byte-read evidence for one DX-Ball function. A stack input is multiplied by 1.5625, offset by 500, scaled, and converted to an integer. Maintained C is checked in 3,205 original-x86 cases and a separate 63-byte compiler replay. DX-Ball sound-pan investigation DXBALL.EXE 0x00406400 REA Stack input x × 1.5625 − 500.0 × pan_scale Integer return Reconstructed function Maintained C Brick-hit caller 20 + 30 × tile_x Original code comparison 3,205 cases VC4.0 build comparison 63 matching bytes
官方原图:DX-Ball 声音平移调查——栈输入 ×1.5625 → +500 → 缩放 → 转整数

Notion 是 Electron 应用(网页技术打包的桌面软件)。任务:它的剪贴板同步走了哪条路?
REA 找到渲染进程的剪贴板 API,穿过 preload 桥,沿着 IPC(进程间通信)进入主进程,最后看到富文本剪贴板格式的真面目。
一句话:一次「复制」,在三个进程之间旅行了一圈,REA 把全程的「海关记录」都调出来了。

TH04 是 PC-98 时代的东方 Project 游戏(16 位 DOS 程序)。任务:它的环形弹幕是怎么算角度的?
REA 直接读 16 位指令,恢复出两套计算:固定圆环(16 颗子弹从角度 0、16、32……排到 240)和瞄准圆环(第一颗子弹指向玩家方向)。
复现的 C++ 和当年编译器的输出逐字节对比——90 年代的弹幕数学,被完整破译。

TH04: spacing and aiming a ring of bullets A full clockwise turn has 256 angle units. Sixteen bullets start at angles zero, sixteen, thirty-two, through 240. Adding an example player direction of forty turns all sixteen directions together; the first bullet points at the player. Template rotation is zero. Fixed ring First bullet: angle 0 Aimed ring First bullet: player direction Origin Origin Player 0, 16, 32, …, 240 40, 56, 72, …, 24 Same spacing: 256 ÷ 16 = 16 angle units = 22.5°
官方原图:TH04 弹幕圆环——左:固定圆环;右:瞄准圆环(第一颗子弹指向玩家)
延伸解读
三个案例覆盖了 REA 的三板斧:DX-Ball 是「二进制级复活」(连编译器输出都能复现),Notion 是「跨进程追踪」(跟着数据流旅行),TH04 是「考古破译」(30 年前的 16 位代码)。共同点:每一步都有证据,不是猜的。
记住:三案例:DX-Ball(算法复活,3205 用例全过)、Notion(剪贴板跨进程追踪)、TH04(16 位弹幕数学破译)。
▶

三分钟上手

Quick start — 点击展开

三步上车:

装好 Node.js(22 / 24 / 26 版),跑:

npx rea-agents setup
选你的智能体,检查它提议的改动,批准。setup 会注册 REA 的 MCP 服务器,并装上配套的工作流说明(还会备份你原来的配置)。装完重启智能体。

像这样跟智能体说话:

Understand how search works in the Notes app,
show me the evidence,
and build a similar feature for my project.
把 Notes 换成你的目标 App、search 换成你想了解的功能。

不想经过智能体,也可以直接在终端用:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
npm install --global rea-agents
rea --help

支持的智能体:Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等。原生二进制分析需要你本机装了 Hopper、Ghidra 或 IDA(setup 经你批准可代装 Hopper);纯 JS 静态分析什么都不用装。

注意
更新提示:REA 迭代很快,官方建议保持最新——npm 装的跑 rea update,MCP 注册跑 setup 时打印的刷新命令。
记住:上手:npx rea-agents setup 注册 → 直接向智能体提问 → 可选终端直调;多智能体支持,分析全本地。
✦

术语翻卡:十个关键词

Key terms — 点击卡片翻面

点击卡片翻面看解释。

逆向工程
Reverse Engineering
不用源代码,靠分析推导出软件工作原理的手艺;REA 把它交给了 AI。
MCP
Model Context Protocol
AI 世界的「USB 标准」:工具按统一协议接入,智能体插上就能用。
二进制
Binary
CPU 直接执行的 0/1 机器码;没有源代码时,看到的就是它。
反汇编
Disassembly
把二进制翻译成汇编语言(人类可读的 CPU 指令);再往上是伪代码。
伪代码
Pseudocode
反汇编的再翻译:长得像 C 语言,讲的是程序逻辑。
Hopper / Ghidra / IDA
三大逆向神器
看二进制的神器:Hopper(Mac 友好)、Ghidra(NSA 开源免费)、IDA(商业老牌)。
Electron
桌面 App 框架
用网页技术做桌面软件:VS Code、Notion、Discord 都是它做的,本质是打包的网页。
IPC
进程间通信
Inter-Process Communication:不同进程之间「打电话」;Notion 剪贴板走了这条路。
ASAR
Electron 打包格式
Electron App 的代码打包文件;解开它,REA 就能直接读代码。
证据
Evidence
REA 的立身之本:每个结论带出处(代码位置/截图/字节),未知项明确承认。
?

自测五题

Quiz — 点题目展开答案

一个 MCP 服务器;一头连 AI 智能体(Claude Code、Cursor 等),另一头连逆向工程工具(Hopper、Ghidra、IDA 等)。

提问 → 检查与追踪 → 读证据 → 用起来(解释/实现/测试),支持追问循环。第 3 步特别在:返回的不只是结论,还有证据和「未知项」。

声音平移规律:栈输入 ×1.5625,再 +500 偏移、缩放、转整数。复现的 C 通过 3,205 个原始 x86 测试用例,63 个编译函数字节逐字节复现。

渲染进程 → preload 桥 → IPC → 主进程,REA 把全程的「海关记录」都调了出来。

在你的本地机器上运行,目标文件不上传。运行时观测用的是你自己的用户权限。

← 返回学习中心