夜雨聆风学习资料网

ARTICLE · 1159651

单日暴涨 1.5 万星:让 AI 逆向任何 App

单日暴涨 1.5 万星:让 AI 逆向任何 App

今天 GitHub Trending 榜首是 morluto/rea:单日 +15,335 颗星,是第二名的 2.6 倍,总星数 39,827。它叫 REA(Reverse Engineer Anything,逆向万物):一句话说清楚,它把 Hopper、Ghidra 这些专业逆向工具,接到了 AI 编程助手手里。从此「看看这个功能是怎么实现的」不再是逆向工程师的专利——你用自然语言问一句,Claude Code 就去拆,拆完还给你看证据。

一、项目背景:逆向工程的最后一公里,交给 Agent

REA 是今年 4 月创建的开源项目(TypeScript,MIT 协议),核心是一个 MCP 服务器。装好之后,你的 AI 编程助手就多了一整套逆向工具:analyze_function(分析函数)、read_bytes(读内存字节)、analyze_javascript_application(拆 JS/Electron 应用)等等。

能拆的对象覆盖面相当广:原生二进制、JavaScript/Electron 应用、.NET 程序集、安卓 APK、网站、固件、网络抓包、进程运行行为,甚至还有 EVM 字节码。原生分析可以复用你机器上已有的 Hopper / Ghidra / IDA;JS 和 .NET 的静态分析连这些引擎都不用装。

项目主页上的定位很直白:「看中一个功能?搞懂它怎么做的,一直搞到二进制那一层。」

二、痛点:功能就在那里,你却拿不到它

做产品的都遇到过这种时刻:竞品里有个交互妙得很,老板问「我们能不能也做一个」。能,但怎么做?没有源码、没有文档,只有一个安装包。

传统路径是逆向工程,门槛卡在三层:

▪︎ 工具门槛——Hopper、Ghidra、IDA 个个都是专业兵器,光上手就要几天

▪︎ 知识门槛——你得读懂汇编、调用约定、可执行文件格式

▪︎ 时间门槛——反编译器吐出来的伪代码经常是残缺的,一个函数翻半天,常量是啥全靠猜

AI 时代又叠了层新痛点:大模型再聪明,也看不见你硬盘上的那个 exe。它没法加载二进制、没法读内存字节、没法追汇编指令——除非有人给它递工具。

三、方案:给 Agent 装上逆向的眼睛

REA 的做法是在中间架一座桥:你用自然语言提需求,Agent 通过 MCP 调用 REA,REA 去驱动 Hopper / Ghidra 这些引擎做真正的分析,把结果带着证据交回来。

真正让它好用的,是三个设计决策:

▪︎ 证据优先,不给「我觉得」——每个结论都附带出处:哪条指令、哪个内存地址、哪几个字节。反编译器说函数没参数?REA 会把指令也给你看,[EBP+0x8] 里躺着一个整数入参。

▪︎ 追问循环,而不是一次给答案——Agent 发现伪代码和指令对不上,就带着 REA 继续往下挖一层:追调用者、读常量、看字节,直到闭环。

▪︎ 全程本地——分析在你机器上跑,目标文件不上传。

四、结果:把 1996 年的游戏还原到字节级一致

讲一个官方放出的完整案例。有个重建项目想把 DX-Ball(1996 年的 Windows 打砖块游戏)还原成可维护的 C 代码。其中一个子问题:砖块被击中时会发声,声音的左右声道(pan)是怎么算出来的?

反编译器只给了一句废话般的伪代码:return __ftol();——参数没了,计算过程也没了。Agent 拿着 REA 追了四步:

▪︎ 读指令:发现函数其实有个整数入参(伪代码里被吞了)

▪︎ 追调用者:调用方先做了 20 + 30 × tile_x——原来传进来的是砖块的屏幕坐标

▪︎ 读内存字节:把三个常量地址的字节读出来,解成浮点数——1.5625、500.0、1.0

▪︎ 还原成 C:一条完整的表达式落定

最终还原出的表达式:pan = ((double)x × 1.5625 − 500.0) × pan_scale

这个函数还原得怎么样?不是「看起来差不多」:3,205 个行为用例全部通过(覆盖 0–640 每一个像素位置、5 种音量缩放);再用当年的 VC4.0 编译器把这段 C 重新编译——63 个字节与原版可执行文件完全一致。三十年前的声音效果,原样复活。

类似的大案例还有两个:把 Notion 的剪贴板功能从渲染进程一路追到 Electron 主进程;还原 TH04(PC-98 时代的弹幕游戏)里十六位机的弹幕环计算。每一个都公开了完整的调查记录和证据编号。

五、怎么上手:三步,最快五分钟

前置条件只有一个:Node.js 22.19+ / 24.11+ / 26+。

第一步,安装并注册到你的 Agent:运行 npx rea-agents setup,回车后勾选你要接的 Agent(Claude Code / Codex / Cursor / Gemini CLI 都支持),它会自动注册 MCP 并写入配套的工作流说明,改配置前会先备份。装完重启 Agent。

第二步,直接用大白话提问,例如:「搞清楚 Notes 的搜索是怎么做的,给我证据,然后在我的项目里实现一个类似的。」把 Notes 换成任何你感兴趣的本地应用。原生二进制分析需要 Hopper / Ghidra / IDA 之一(setup 也可以经你确认后帮你装 Hopper);拆 JS/Electron 应用则什么都不用装。

第三步,也可以纯命令行跑(适合塞进脚本和 CI):npx -y rea-agents@latest analyze-javascript-application /path/to/app --json

⚠️ 一句提醒:逆向只用于合法场景(自己的软件研究、安全审计、互操作性),授权和合规是使用者自己的责任——项目首页的免责声明写得很直白。

结尾

逆向工程最难的不是技术,是「翻到第 300 行汇编时还愿不愿意继续」。REA 把这份耐心外包给了 Agent,把判断权留给了你——证据它来挖,结论你来做。

仓库:github.com/morluto/rea(MIT)|官网与案例:rea.tools|DX-Ball 重建项目:github.com/N0zoM1z0/dx-ball

THE END

相关学习资料