夜雨聆风学习资料网

ARTICLE · 1151947

REA:让 AI 逆向任何软件,看到喜欢的功能直接复刻

REA:让 AI 逆向任何软件,看到喜欢的功能直接复刻

— 01 —

一个让人有点不安的能力

过去两年,AI 编码助手已经能把"告诉我功能,我来写代码"做到很顺手。但反过来一直没人解决:看到别人产品里有个你喜欢的功能,怎么弄明白它是怎么实现的?

没有源码。二进制文件摆在那。你会用的工具是 Ghidra、IDA、Hopper——专业逆向工程师的地盘,学习曲线陡得让人劝退。

然后 morluto 做了一个叫 REA 的开源项目,把这件事变成了跟 AI 助手的一句对话:

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

后面那句 "build a similar feature for my project" 才是真正吓人的地方——逆向不再止步于"看懂",而是直接通向"复刻"。

REA 官网首页

— 02 —

REA 是什么

REA = Reverse Engineer Anything,"逆向任何东西"。

它是一个 MCP(Model Context Protocol)服务器,把逆向工程的能力封装成一组工具,让 AI 编码助手(Claude Code、Cursor、Codex、Gemini CLI、Grok Build 等)能直接调用。

核心定位一句话:让 AI 助手在没有源码的情况下,检查二进制、追踪应用代码、观察运行时行为。

几个关键事实:

• 27,000+ GitHub Stars,2026 年刚破 2 万星大关的开源项目(MIT 协议)

• npm 包:rea-agents,npx rea-agents setup 一条命令安装

• 本地运行,不上传你的目标文件——分析完全在本地完成

• 证据驱动,每个结论都附带来源证据(汇编指令、源码位置、字节值),不是瞎猜

• 同时支持 CLI 和 MCP——不用 AI 助手也能在终端里用

REA GitHub 仓库首页

— 03 —

它能分析 12 类目标

REA 支持的 12 类分析目标

这是 REA 最夸张的地方——覆盖面。市面上的逆向工具基本各管一块,REA 一个项目把 12 类全收了:

目标类型REA 能给出依赖

原生二进制伪代码、汇编、字符串、符号、调用关系Hopper/Ghidra/IDA

JavaScript/Electron模块、导入、源码映射、路由、IPC无

网站页面结构、脚本、网络请求、截图Chrome 系浏览器

.NET 程序集元数据、CIL 指令、原生依赖无

Android APKManifest、类、反编译方法、引用JADX + JDK

固件分区、解压结果、原生分析转接Binwalk/Unblob

EVM 字节码分发选择器、字节偏移、推断参数无

ELF 布局节、段、符号/重定位、缓解候选pwntools

崩溃转储寄存器、信号、映射候选pwntools/GDB

网络抓包请求/响应、payload、源码位置HAR/mitmproxy

Apple 包文件清单、plists、bundle 结构无

进程行为终端输出、交互、文件系统观察Linux/macOS PTY

数据来源:REA 官方 README,2026 年 10 月核查

注意"依赖"那一列——JavaScript/Electron、.NET、EVM、Apple 包这四类完全不需要外部引擎,REA 自己静态分析就能搞定。只有原生二进制、APK、固件这类才需要接 Ghidra/Hopper/IDA/JADX。这意味着你光装一个 REA,就能逆向一大半常见目标。

— 04 —

案例一:用 REA 复刻 1996 年的 DX-Ball

REA 官网 DX-Ball 案例研究

DX-Ball 是 1996 年的 Windows 打砖块游戏。有人正在用 REA 把它的可执行文件逆向成可维护的 C 代码,一个函数一个函数地还原。

拿其中一个功能举例——声音的左右声道定位(sound pan)。砖块被击中时,它的水平位置会传给声音代码,转换成左/右声道的值。要还原这个计算,传统逆向工程师得在反编译器里手动追。REA 怎么干的:

第一步:AI 让 REA 分析函数 0x406400。反编译器给出的伪代码几乎是空的(只调了个 __ftol()),但汇编视图暴露了真实输入——[EBP+8]。

第二步:追调用者。REA 找到 0x411f40,那里把 tile 坐标乘以 30 再加 20,得出砖块的屏幕坐标 20 + 30 × tile_x。

第三步:读内存地址里的常量。REA 读了两个地址的字节,解码出三个 double 值:1.5625、500.0、1.0。

然后 AI 直接写出了还原的 C 函数:

DxBallInt dxball_screen_pan(DxBallInt x){  double pan;  pan = (double)x;  pan = pan * 1.5625;  // FMUL [0x420068]  pan = pan - 500.0;    // FSUB [0x420070]  pan = pan * dxball_pan_scale;  // FMUL [0x4210a0] = 1.0  return (DxBallInt)pan;  // __ftol}

这还不算完。还原完怎么证明是对的?两层验证:

• 行为层:跑了 3,205 个测试用例(坐标 0~640 × 5 种 pan scale),原始 x86 函数和还原的 C 函数返回值完全一致

• 字节层:用 VC4.0 工具链编译还原的 C,63 个编译字节与原函数完全匹配

整个 DX-Ball 项目到目前为止还原了 55 个 C 函数,做了 45,380 次与原始代码的差分比对,其中 33 个函数的编译字节完全匹配。这个精度是传统逆向很难达到的。

— 05 —

案例二:追踪 Notion 的剪贴板桥接

REA 官网 Notion 剪贴板案例研究

第二个案例更贴近日常开发——Notion 桌面端是个 Electron 应用。用户在 Notion 里复制一段文字,这段文字怎么从渲染进程走到系统剪贴板的?REA 把整条链路追了出来。

REA 先分析 Notion 的 preload.js,定位到暴露给页面的 API 和 IPC 调用点:

// 1. 页面看到的 APIconst clipboardApi = {  write: invokerInMain("notion:clipboard:write")};// 2. preload 里的包装function invokerInMain(channel) {  return (...args) => ipcRenderer.invoke(channel, ...args);}

通道名是 notion:clipboard:write。REA 接着在主进程的 main/index.js 里找这个通道的接收端:

// 3. 主进程的接收端handleRequestFromRenderer.addListener(  "notion:clipboard:write",  (event, data) =>    isNotionWebContents(event.sender)      ? clipboard.write(data)      : undefined);

四步链路:页面 API → preload 包装 → IPC 通道 → 主进程调用 Electron 的 clipboard.write。每一步都有代码证据。

REA 还发现了 Notion 的一个巧思——复制的 HTML 里塞了一个 HTML 注释作为 ID,跟本地保存的结构化 block 数据关联。粘贴时 Notion 读这个 ID,匹配上就恢复完整的 block 结构,匹配不上就只返回纯文本和 HTML。这个设计用传统逆向很难发现。

这个案例的价值不在于"破解了 Notion",而在于展示了 REA 追踪跨进程调用的能力——从渲染层到主进程到系统 API,一条线走完。

— 06 —

REA 怎么工作

把 REA 想成一个"逆向工具箱",AI 助手是拿工具的人。流程是这样的:

1. 你跟 AI 助手说:"搞清楚 Notion 怎么复制文字的,给我看证据。"

2. AI 通过 MCP 调 REA:分析目标文件,拿到伪代码、汇编、字符串、调用关系

3. REA 返回带证据的结果:每个结论附指令地址、源码位置、字节值

4. AI 基于证据追问:"调用者是谁?""这个地址的常量值是多少?"

5. AI 写出实现并测试:还原的代码 + 与原始行为的验证

关键点:REA 不替你做判断,它给证据。汇编指令就是汇编指令,字节值就是字节值,AI 基于这些硬证据推理。这跟"AI 自己猜一个实现"有本质区别——REA 的每个结论都可追溯。

— 07 —

怎么开始用

安装非常简单,一条命令:

npx rea-agents setup

这个命令会:

• 注册 REA 的 MCP 服务器到你的 AI 编码助手(Claude Code、Cursor、Codex、Gemini CLI、Grok Build 等)

• 安装配套的工作流指令(skill)

• 备份你现有的配置

前置条件:Node.js 22.19+ / 24.11+ / 26+,npm。

如果不想用 AI 助手,也可以直接在终端用 CLI:

# 分析一个 Electron 应用目录npx -y rea-agents@latest analyze-javascript-application /path/to/app --json# 安装 rea 命令用于日常使用npm install --global rea-agentsrea --help

原生二进制分析需要配置一个 provider(Hopper / Ghidra / IDA),setup 可以在你同意后安装 Hopper。Ghidra 和 IDA 用你已有的安装。

— 08 —

冷静评估

REA 很猛,但不是银弹。说几个需要注意的:

1. 原生分析还是要 Ghidra/Hopper/IDA。REA 只是把它们封装成 AI 能调的工具,逆向引擎本身没变。没有这些工具,原生二进制分析跑不起来。

2. 证据是给的,推理是 AI 的。REA 返回汇编和字节,但"这是什么意思"还是 AI 在猜。复杂算法的还原质量取决于 AI 的推理能力,REA 不保证正确——DX-Ball 案例里那 3,205 个测试用例就是为了兜底。

3. 法律边界。逆向工程在不同司法辖区的合法性差异很大。用于学习、互操作、安全研究通常没问题,但用于商业复刻要谨慎。REA 官方没有提供法律建议。

4. 大型二进制慢。Ghidra 分析大文件可能要很久,官方建议用 REA_GHIDRA_STARTUP_TIMEOUT_MS 环境变量调大启动超时。

5. 还在快速迭代。README 里反复提醒"先更新再报 bug"——REA 改动很频繁,很多 bug 在新版本里已经修了。

— 09 —

这意味着什么

REA 出现之前,"看懂别人的实现"和"写出自己的实现"之间隔着一道专业门槛——逆向工程。大部分开发者跨不过去。

REA 做的事,是把这道门槛从"学半年逆向"降到了"会用 AI 助手"。这不是说逆向工程师会失业——复杂二进制、加壳、混淆代码仍然需要专家。但对于"我想知道这个功能怎么实现的"这种日常需求,门槛被拉低了一个数量级。

更值得注意的是 REA 的证据设计。AI 编码助手最大的问题是"自信地胡说",REA 用汇编指令、字节值、源码位置把 AI 锚定在事实上。这是一种很克制的设计哲学——工具给证据,AI 做推理,人做判断。

"看到一个你喜欢的功能,搞明白它怎么工作,然后自己做一个。"

—— REA 项目标语

从这个角度看,REA 不只是一个逆向工具,它是在把"向竞品学习"这件事工程化。值得关注。

项目地址:github.com/morluto/rea官网:rea.toolsnpm:rea-agents许可证:MIT数据核查时间:2026 年 10 月

MBTI人格测试 多维分析

Adobe 天塌了?7 款开源平替全用 Rust 重写,还支持 AI Agent 操作

最近爆火的GitHub 43k 星《高性价比人生指南》:不灌鸡汤,只帮你算账

同一个团队开源了两个 Agent:OpenBot 给公司用,OpenMuse 给自己用

Grok Bot vs Muse vs Dots vs Cue:四大AI个人助理你怎么选

相关学习资料