REA:一个让AI替你逆向工程的革命性工具

· 瑞哥观势 · 逆向工程 / AI工具 / MCP / 开源 / 开发者工具

你是否曾经看到某个App的酷炫功能,想知道它是怎么实现的,却因为没有源代码而一筹莫展?

现在,有了一个革命性的工具——REA(Reverse Engineer Anything),它能让AI Agent直接帮你分析任意程序的实现原理,从原生二进制到JavaScript应用,从Android APK到网站行为,全都支持。

这个项目在GitHub上已经斩获了11万颗星,成为逆向工程领域最火爆的开源工具之一。

今天,我就带你深入了解这个项目。

一、项目概述

1.1 REA是什么

REA是一个基于MCP(Model Context Protocol)的逆向工程工具,它将各种分析引擎(Hopper、Ghidra、IDA、反编译器等)统一封装,通过AI Agent进行智能分析。

简单来说:你告诉它你想分析什么,它帮你找出答案,并给出证据。

1.2 核心特性

特性 说明
多目标支持 原生二进制、JavaScript/Electron、.NET、Android APK、网站等
本地分析 所有分析在本地完成,不上传你的程序
证据驱动 每个结论都附带原始证据和已知局限性
Agent集成 支持Claude Code、Codex、Cursor、Gemini CLI等主流AI编码助手
CLI工具 也可以脱离Agent独立使用命令行工具

1.3 支持的分析目标

REA是目前支持目标类型最丰富的逆向工程工具:

  • 原生二进制程序:通过Hopper/Ghidra/IDA返回伪代码、汇编、字符串、符号、调用关系
  • JavaScript/Electron应用:恢复模块结构、import关系、IPC通道和原生接口
  • Android APK:Manifest声明、类信息、反编译方法和引用关系
  • .NET程序集:元数据、CIL指令、声明的原生依赖和构建对比
  • 网站行为:页面结构、脚本、网络请求和截图
  • Go二进制:内置静态分析,无需Go环境
  • WASM产物:验证、分段、导入/导出的WAT形式
  • EVM字节码:调度选择器、字节偏移、推断参数和可变性
  • SQLite数据库:表结构、索引、视图、触发器和选定行的数据
  • 固件:区域划分、提取结果和原生分析交接点
  • 以及更多……

二、快速上手教程

2.1 环境要求

  • Node.js:22.x (≥22.19)、24.x (≥24.11) 或 26+
  • npm:已安装
  • 分析工具(可选,根据目标选择):
    • Hopper(macOS/Linux):REA安装向导可以帮你安装
    • Ghidra 12.1.x + JDK 21+(Linux/macOS,Windows实验性支持)
    • IDA(Windows,需自行配置MCP)

2.2 安装步骤

第一步:连接你的AI编码助手

在终端中运行:

npx rea-agents setup

安装向导会:

  1. 检测你已安装的编码助手(Claude Code、Codex、Cursor等)
  2. 展示计划修改的配置文件(带备份)
  3. 等待你批准后才执行更改

第二步:重启你的编码助手

桌面应用(Claude Desktop、Cursor、Windsurf等):完全退出应用后重新打开。

终端工具(Claude Code、Codex等):退出当前会话,重新启动。

第三步:验证安装

npx -y rea-agents@latest doctor --json

2.3 开始你的第一次分析

以分析一个Windows游戏为例。假设你有一份DX-Ball 1.07的可执行文件:

向Agent提问:

Use REA to find how DX-Ball calculates sound panning. Explain
the calculation and show the code.

Agent会通过MCP调用REA,REA返回:

  • 目标函数的伪代码
  • 汇编指令
  • 调用者关系
  • 引用的数据常量

Agent综合这些证据,最终给出可编译验证的C代码。

2.4 命令行直接使用

如果不想用Agent,也可以直接用CLI:

# 分析JavaScript/Electron应用
npx -y rea-agents@latest analyze-javascript-application /path/to/app --json

# 安装为全局命令
npm install --global rea-agents
rea --help

# 分析原生函数
rea function /path/to/program main --provider ghidra --json

# 检查更新
rea update

三、实战案例解析

3.1 案例一:DX-Ball声音定位计算

目标:恢复1996年Windows游戏DX-Ball中,砖块碰撞时的声音左右声道定位算法。

分析过程:

  1. 发现问题:反编译器给出的函数只有__ftol()调用调用,但指令里显示有完整的浮点运算——这是线索

  2. 追踪调用者:找到砖块碰撞函数,它传递了20 + 30 × tile_x作为屏幕坐标

  3. 读取数据常量:

    • 1.5625 — 第一个乘法因子
    • 500.0 — 减数
    • 1.0 — 初始缩放值
  4. 重建算法:

    DxBallInt dxball_screen_pan(DxBallInt x) {
        double pan;
        pan = (double)x;
        pan = pan * 1.5625;
        pan = pan - 500.0;
        pan = pan * dxball_pan_scale;
        return (DxBallInt)pan;
    }
    

验证结果:

  • 通过了3205个输入用例的行为对比
  • 编译后的字节与原始二进制完全一致(63字节逐字节匹配)

3.2 案例二:Notion剪贴板桥接

目标:理解Notion桌面版如何将富文本(文字+HTML)复制到系统剪贴板。

分析结果:

Renderer (页面) → preload API → IPC channel → Main process handler

关键发现:

  • 页面调用window.__electronApi.clipboard.write()
  • Preload通过ipcRenderer.invoke("notion:clipboard:write")发送
  • Main process的handler检查发送者后,调用Electron原生剪贴板API

更精妙的是,Notion的剪贴板格式维护了块结构:

// 复制时保存的数据
text: "Project notes"
html: "<p>Project notes</p><!-- notionvc: <copy-id> -->"
id: <copy-id>  // 关联到结构化的块数据
mimeTypes: {
  "text/_notion-blocks-v3-production": → structured block data
}

粘贴时,Notion通过HTML中的<copy-id>匹配本地保存的块数据,恢复完整的Notion块结构。

3.3 案例三:Aegis身份验证器的TOTP算法

目标:从APK中恢复六位数登录码的生成算法。

分析过程:

  1. 缩小范围:搜索包含"Totp"的类,找到3个匹配项
  2. 追踪引用:从TotpInfo类追踪到OtpInfo.getOtp调用者
  3. 恢复算法:
    • 时间每30秒为一个区块
    • 区块号 + 账户密钥 → HMAC-SHA1 → 取31位 → 取6位数字
    • 关键公式:code = (hash selected bits) % 1_000_000

验证结果:在133个测试用例上通过验证,包括时间区块边界和首位为0的情况。

3.4 案例四:CTF旗标验证器

目标:解决DownUnderCTF的一道逆向题目。

分析过程:

  1. 找到提示字符串"What is the flag?"的引用地址
  2. 分析检查函数,发现它用6×6网格+26个掩码做校验
  3. 每个掩码选择若干位置的字符码求和,与目标值比较
  4. 用Z3约束求解器联立求解26个方程

最终解:DUCTF{ezzzpzzz_07bcda7bfe81faf43caa}

四、设计哲学

4.1 证据驱动的分析

REA的核心设计原则是:每个结论都必须附带证据。

不像普通的反编译器只输出"这是什么意思",REA同时返回:

  • 伪代码(高级抽象)
  • 汇编指令(原始证据)
  • 调用关系(上下文)
  • 引用数据(常量来源)
  • 已知局限性(分析的边界)

这样,AI Agent可以自行判断置信度,并在证据不足时继续深挖。

4.2 渐进式调查

REA的工作流不是一次性输出所有结果,而是引导式、迭代式的:

  1. Agent提出问题 → REA返回初始发现
  2. Agent基于发现提出下一个问题 → REA深入追踪
  3. 重复直到结论完整

这种设计让复杂的逆向任务可以分步完成,降低了每次分析的计算复杂度。

4.3 本地优先,隐私安全

所有分析都在本地执行,你的程序不会被上传到任何服务器。这是一个经常被忽视但极其重要的设计决策——商业软件逆向涉及大量敏感信息。

4.4 Agent作为用户界面

传统逆向工具(IDA、Hopper、Ghidra)有陡峭的学习曲线。REA的核心创新是让AI Agent成为人与工具之间的桥梁。

用户不需要学会使用反编译器,只需要用自然语言提问:

  • "这个功能是怎么实现的?"
  • "这段代码在哪里?"
  • "为什么这个值是这样计算的?"

Agent负责操作工具、解读结果、构建答案。

4.5 可验证的结果

REA鼓励可验证的结论。例如DX-Ball案例中:

  • 行为验证:3205个输入用例对比
  • 字节验证:编译后函数与原始二进制逐字节匹配

这种"双重验证"确保了重建代码的正确性。

五、观点与结论

5.1 REA代表了什么趋势

REA的崛起反映了两个重要趋势:

趋势一:AI正在降低专业技术门槛

逆向工程传统上需要掌握反编译器、汇编语言、调试器等多种技能。REA让任何能用自然语言提问的人都能进行专业级逆向分析。

趋势二:工具正在被AI原生重塑

不是把AI加到现有工具上,而是让AI成为使用工具的接口。REA本质上是把复杂的逆向工具封装成了对话式体验。

5.2 REA不做什么

  • 不自动生成完美代码:它提供证据和线索,生成可工作代码仍需人工判断
  • 不绕过安全机制:它分析合法获取的软件,强调合规使用
  • 不替代专业逆向工程师:复杂任务仍需要领域知识和经验

5.3 适用场景

✅ 适用场景:

  • 学习某款应用的技术实现
  • 为自己的项目实现类似功能
  • 理解和调试没有源码的第三方库
  • CTF竞赛题目分析
  • 软件遗产保护与文档重建

❌ 不适用场景:

  • 破解商业软件的授权机制
  • 分析恶意软件(虽然技术上可行,但违反项目许可)
  • 绕过安全防护进行未授权分析

5.4 局限性

  • 静态JavaScript分析不需要原生引擎,但原生分析需要额外配置Hopper/Ghidra/IDA
  • 大型二进制文件分析耗时较长
  • 某些平台(如IDA在Linux/macOS上的headless模式)支持仍不完善
  • 项目更新频繁,需要经常保持最新版本

5.5 展望

REA项目目前已有11万星,Discord社区活跃,持续有新功能加入。其路线图显示未来可能支持:

  • 更多二进制格式
  • 更深度的语义分析
  • 与更多IDE和Agent的集成

随着AI编码助手越来越普及,REA这类工具正在成为开发者工具链中不可或缺的一环。

六、总结

维度 评价
易用性 ⭐⭐⭐⭐⭐ 通过自然语言即可操作
功能覆盖 ⭐⭐⭐⭐⭐ 支持20+种分析目标
证据质量 ⭐⭐⭐⭐⭐ 每个结论都有原始证据
社区活跃度 ⭐⭐⭐⭐⭐ 11万星,Discord活跃
学习曲线 ⭐⭐⭐⭐ 相比传统逆向工具极低

REA是一个真正革命性的工具。它不是简单地用AI包装一个反编译器,而是从"人与工具交互"的角度重新思考了逆向工程的工作方式。

如果你对软件实现原理感兴趣,想理解某个功能是如何工作的,或者想在没有源码的情况下复用某项技术,REA值得一试。


相关资源:

Frequently Asked Questions

Who is behind TopDigg?

TopDigg is created by Eric, a researcher focused on AI trends and SEO/GEO strategies.

How often is content updated?

Blog posts are published regularly. AI Daily is updated daily with the latest AI news.

Can I republish or share content from TopDigg?

Please contact us for content licensing and collaboration inquiries.

About the Author

ERIC

AI Technology Expert, focusing on research and application of artificial intelligence and automation tools

Contact & Platforms

WeChat:360369487
Crypto Intelligence TG Group:https://t.me/btcgogopen ↗
YouTube Channel:@0XBitFinance ↗
Personal Tech Blog:topdigg.com ↗

Related Posts