这几天刷 GitHub 热榜,第一名一直是同一个项目,叫 REA。我记得前两天它 README 里还在庆祝 17 万 Star,等我今天再看的时候,已经 18.4 万了,Fork 也有4万多了。
一个搞逆向的工具火成这样,属实有点好奇,这几天研究了一下,今天我们来聊聊它。
REA 是干嘛的
REA 这个名字就是 Reverse Engineer Anything 的缩写,翻译过来就是逆向任何东西。
它是干嘛的呢,说白了,就是给你的 AI 编程助手装一套逆向分析的工具,Claude Code、Codex、Cursor 这些支持 MCP 的助手都能接。装好以后我们说一句话,它就自己去读一个没有源码的软件,把里面某个功能是怎么实现的搞清楚,证据摆出来,还能顺手照着我们项目的技术栈写一个差不多的功能出来。
接好 REA 之后,我们可以说:
用 REA 分析 aegis-v3.4.3.apk,找出六位登录验证码是怎么生成的,解释为什么它每 30 秒变化一次,再做一个可以调整时间的小演示。
以前想干这个事,只能自己打开反汇编器一点一点追,汇编一行一行看,没有几年经验真玩不转,现在这些重复的步骤可以交给 Agent 去跑了。
还有一点得说清楚,REA 自己没有重新发明一套反编译器。真到了啃原生二进制这种硬活的时候,它调用的还是你电脑上装好的 Ghidra、Hopper 或者 IDA,REA 在中间做的事情是把结果接过来,整理成 Agent 能看懂、能继续往下追问的样子。JavaScript 和 .NET 的静态分析连这些引擎都不用装,分析全程在你自己机器上跑,软件不会被上传到任何地方。
官方画了张流程图,基本就是这么个来回:我们提问,REA 检查目标、返回证据,Agent 拿着证据解释或者动手实现,有疑问就接着追问。
能拆什么东西
官方支持的目标列表挺长的,我挑几个说说:
-
• 原生二进制,Windows 的 exe、macOS 和 Linux 的程序都算,能拿到伪代码、汇编、字符串、符号和调用关系
-
• Electron 和 JavaScript 应用,能还原出模块划分、路由、进程间通信这些,而且这类分析门槛最低,不用装任何逆向引擎
-
• 安卓 APK,背后调的是 JADX 反编译,可以看类、方法和资源
-
• 网站,页面结构、脚本、网络请求都能抓
-
• 还有一些比较冷门的,固件、网络抓包文件、WASM、EVM 字节码、SQLite 数据库,甚至示波器录下来的逻辑信号
有人统计过它的工具目录,MCP 工具一百多个,命令行命令也有八九十个。反正这个覆盖面,我目前还没在别的同类项目里见过。
每次分析都会把证据一起给你
我自己觉得 REA 做得最到位的一个地方是:每次分析给出结果的时候,证据、局限、还有哪些没搞清楚的,都会一起列出来。它能确定的就明说确定,确定不了的也直接标出来,做的非常严谨。
README 里写得很清楚,REA 不保证恢复出原始源码,也不可能一条命令把整个软件克隆出来。反编译出来的是伪代码,跟人家当年写的源码是两回事。复杂一点的功能,最后还是要人去验证、测试、重新实现。它不会只丢一个结论给你,中间查了哪些步骤、依据是什么,都会留下来,你能顺着往回查。能查到哪一步,取决于目标,也取决于你愿意花多少时间。
还有个细节我印象挺深的。如果你电脑上有好几个分析引擎都能处理同一个目标,比如 Ghidra 和 Hopper 都装了,REA 不会自己随便挑一个就跑,它会停下来跟你说这里有歧义,让你指定用哪个。宁可报错也不瞎猜,也体现了这个作者的严谨。
官方放的几个案例
官网和仓库里放了不少真实案例,我挑三个我觉得比较有意思的说说。
第一个是 Windows 计算器。估计很多人都纳闷过,200 + 10% 为什么算出来是 220。REA 直接去读本机装着的计算器程序,找到 % 按钮的处理函数,发现这里分两支:跟在加减后面的时候,它把第二个数当成第一个数的百分比来用,10% 的意思就是 200 的十分之一;跟在乘除后面,就直接除以一百。所以 200 + 10% 实际上是 200 加 20。
第二个是小恐龙游戏,就是 Chrome 断网的时候跳出来的那个,官方演示拆的是它的网页版。REA 把页面里真正在跑的那个脚本捞出来,读出了速度规则:起步速度 6,之后每次更新加 0.001,最快到 13 封顶,然后就照着这个规则重新写了一个带速度滑块的小游戏出来。
第三个最硬核,是九十年代的一个老游戏 DX-Ball。有人用 REA 去还原它里面砖头被击中时的声道计算,就是声音偏左还是偏右的那个值。最后还原出来的 C 函数过了 3205 个行为对比用例,用当年的编译器重新编译一遍,出来的 63 个字节和原程序一模一样。这个案例的完整过程在官网上写得很细,从追调用者到读内存里的常量,每一步都有记录,感兴趣的可以去看原文。
安装非常简单
装之前只需要确认一个东西,Node.js 版本在 22.19 以上。如果本地没有,Agent会提示你需要安装,同意一下就行。
在Codex、Cursor等工具上,发一句:
使用 npx rea-agents@latest setup 安装 REA,并连接到这个编程助手。先展示安装计划,等我确认后再执行,然后验证安装结果。
就完事了。
已经支持的 Agent 列表:
但不仅限于这些,任何支持本地 MCP 服务的智能体都可以使用。
要是你用的助手不在官方支持列表里,手动填一下 MCP 配置也能接上。Trae 社区就有网友这么干过,配置里指定用 npx 拉起 REA 的服务就行:
要啃原生二进制的话,得先配 Ghidra、Hopper 或 IDA 其中一个。macOS 上用 Hopper 有个小坑,第一次启动会弹窗让你选演示模式还是激活许可证,这个弹窗不处理掉,后面的分析会卡住,先手动开一次 Hopper 把流程走完就行。遇到问题想调整,接着跟助手说一句就行。
边界得说清楚
这个项目火成这样,争议肯定是少不了的。
官方的免责声明写得很直白:REA 只用于合法的研究、教育、互操作和软件保存,分析的是你自己拥有或者有权分析的软件。IDA Pro、Hopper、JEB 这些商业工具要自己去合法持有授权,REA 不会提供任何工具的许可证。说白了工具本身不拦着你干什么,真拆了不该拆的东西,麻烦是自己的,这点大家心里有数就行。
另外「逆向一切」这个说法,实际能走多远要看目标。有媒体报道过,社区里有人拿 REA 分析过一些大厂 App 的客户端,但支付风控、推荐算法这些核心逻辑都跑在服务端,客户端逆向根本碰不到,大厂的 App 普遍还有代码混淆、加壳和反调试。
所以它确实把门槛打下来了,零基础也能成逆向大佬,但也不是真的什么都能拆。
最后说两句
爆火肯定是有原因的,REA 确实把逆向里面那些重复的手工活交给了 Agent 去跑,效率跟以前不一样了,相应的上手难度也小了很多,不需要什么基础也能玩逆向了。
感兴趣的话可以装一个玩玩,第一次上手建议先拿 Electron 应用练,这个门槛最低。
开源地址