开源逆向工具REA登顶GitHub,智能体花约365工时重写《阳光马里奥》
2026年10月8日,一个三个月前还无人知晓的代码仓库登顶GitHub趋势榜第一名。它叫REA(Reverse Engineer Anything,逆向一切),它给你的智能体装上了一台真正的反汇编器。
那个星期,所有人的反应都一样。Matthew Berman用三个字总结了它,这条内容被360万人看到。
REA是一个开源MCP服务器加CLI工具,可以接入Claude Code、Codex、Cursor和Gemini CLI。MIT许可证,由morluto开发,2026年7月12日首次发布,三个月后GitHub星标突破10万。所有操作都在本地运行,每一个结论都会标注为“观察”“推断”或“未知”,并注明背后的地址或调用点。
下面就是从一个密封的二进制文件到一个你完全拥有的重构产品的完整路径,共八步。
开始之前:四周内已经有人交付了什么
工具本身不是故事,四周内落地的东西才是。
ArtCraft把七款Adobe应用重构为免费开源替代品,随后又针对Office推出了WordCraft、GridCraft和DeckCraft。现在已有十二款应用,全部用Rust从零编写,原生支持三大平台,除一款外还都能通过WebAssembly在浏览器标签页中运行。
游戏领域的成绩更具体:
- 《阳光马里奥》获得了原生PC移植版:约365个智能体工时,消耗173亿token,Claude和Codex协作完成。
- 一款东方Project游戏在REA官方博客上展示了用智能体重构的结果:697个函数,696个完全匹配,约12天可玩。
- Aegis认证器(3077个类)被拆解重构,133个测试用例全部通过。
- DX-Ball的声像平移功能用C语言重构,通过了3205个原始x86测试用例,并复现了全部63个编译字节。
注意这份清单不是什么:没有人破解许可校验,没有人发布别人的源码。每一个都是行为被恢复、记录并重新用新代码实现。
步骤1:打开任何文件之前,先给目标分类
REA流行的原因不是它擅长读某一种东西。它几乎能读所有格式,并且为每条结论提供证据。
这也是你要做的第一个决定。最常见的浪费一下午的方式,就是目标明明是个Electron应用、JavaScript就在那里,你却去用反汇编器。让REA指向Electron,几秒就能拿到模块、导入和IPC边界,根本不需要引擎;而原生Mach-O或ELF会打开Hopper数据库,那是一条更深、更慢的路。
知道自己在哪一边可以省下好几个小时,所以把它写进你的第一个提示词。
很少被人提到的一点:很多Unity游戏把逻辑打包成。NET,REA读取。NET也不需要额外引擎。这就是为什么你买来的Steam游戏能在半小时内从二进制变成可编辑的C#。而且你现在机器上的每个Electron应用都可以直接读,甚至不用启动它。
步骤2:五分钟装好,然后只加一个引擎
让这套东西真正起作用的不是某个巧妙的提示词,而是接进智能体的真实反汇编引擎——有一位开发者就是这么形容的。
安装过程会把MCP服务器注册到你的智能体,并安装配套的工作流技能。它会在写入任何东西之前显示所有变更,并备份它触碰过的文件。
node -v # 需要 Node 22.19+、24.11+ 或 26+,不支持 23 和 25 版本
重启比听起来更重要:终端会话必须新开一个,桌面应用要完全退出,因为只关窗口不够。
然后只为你真正想读的东西加一个引擎。
在触碰第一个真正目标之前,值得先写一份“家规”,放在 claude.md 里:只分析你拥有的东西;把每条结论标为观察、推断或未知;给出背后的地址;未通过测试之前,不要把恢复出的行为当成完成。
步骤3:侦察:先有地图,后有代码
先不要打开任何函数。
一条命令就能告诉你:这个二进制跑在什么机器上、里面有多少个函数、以及所有埋藏的可读文本。那些文本是你一整天里最快的线索:端点、错误字符串和功能名会在你读任何逻辑之前描述出应用的样子。
REA会统计每个函数被调用的次数,这个数字就是交叉引用数。被调用147次的函数就是应用的骨架;只被调用两次的是辅助函数,可以放一放。按这个数字从大到小往下做,绝对不要按文件顺序——按文件顺序,是人们在二进制里浪费一整个周末的经典方式,而那个二进制里其实只有四个函数据说有用。
步骤4:反编译一个函数,再让Opus 5.5把所有东西命名
反编译器把原始机器指令变回接近C的东西。它出来的结果很粗糙:var_28 这样的名字、到处都是强制转换、分支缠成一团。粗糙没关系,因为可读就足够模型用了。
然后把这段输出交给Opus 5.5,让它做反汇编器做不到的部分。Opus 5.5有五个努力等级:low、medium、high、xhigh和max。medium用于检查和导航,high用于注释普通函数,max用于混淆代码和重度指针运算。努力等级是整个流程中最大的质量旋钮,可大多数人放着默认值不管,然后怪模型。
反编译告诉你怎么做,模型告诉你为什么,还给你可用来重建的命名。
步骤5:混淆:值得破的才破,其余按预算处理
有些应用天生就是来抵抗你现在做的事:逻辑被打乱、字符串加密、加假分支纯粹为了浪费你的注意力。这是唯一连最好的模型也会卡住的地方,而且有实际数字。
Elastic Security Labs把Claude Opus扔到Tigress混淆器的20个任务面前,得到两条教训:一次失败的尝试大约耗费两倍于成功尝试的时间,因为模型在放弃之前会一直顶;多层混淆的成果是零,所以死磕是花最多钱学到最少东西的方式。
实操规则是每个函数给一个预算,而不是每个会话。先把填充物清掉,因为一个叫Caveman的免费工具能移除约75%的反编译垃圾,之后模型就能把注意力放在真实逻辑上。
步骤6:群组协作:一个控制器,多个工人
单次对话没法把500个函数读好。它会在40个函数之后忘掉之前看过的内容,把同一个结构叫成三个不一样的名字,然后开始悄悄自相矛盾。解决方法不是加更多上下文,而是拆分角色:一个控制器派活,若干个工人各拿一个函数、完成后就停。
REA还内置了不少人从不打开的引导工作流,全部在MCP服务器里:
- investigate_feature:从发现功能一直追到具体函数。
- compare_application_versions:对比两个发布版,看实际改了什么。
- verify_reconstruction:用保存下来的证据检查你的重构。
- audit_residual_unknowns:列出仍然没证明的部分。
步骤7:净室:两套上下文之间的墙就是产品本身
净室重构的意思是:你复制应用的行为,而不是内部的代码。做对了,你发出来的东西完全属于你;做错了,你等于把一个别人的版权装进了自己的仓库。
这是四十年前的方法,不是2026年的发明。80年代初,康柏用大约一百万美元以这种方式重写了IBM的BIOS,那也是其他品牌PC存在的原因。1992年,Sega诉Accolade案的法院判决说,当拆解代码是理解原理的唯一途径时,它可以构成合理使用。2000年,Sony诉Connectix案以3比0告终,索尼输了,因为那个模拟器成品里没有任何索尼的代码。
界限的另一边同样清楚:2011年,George Hotz在PS3根密钥公开后与索尼和解,同意停止。
四条规则让你待在正确的一边,ArtCraft团队每次构建都会自动检查这四条:
- 观察,不要复制。把目标当黑盒运行,只截取它自己的窗口,绝不把它的代码粘进你的项目。
- 规范,不要源码。文件格式来自公开标准(OOXML是ECMA-376/ISO 29500,加上公开的RTF和ODF规范),绝不从竞争对手的解析器里读。
- 只用原创资产。每个图标、字体、模板和声音都用代码绘制、属于公有领域或使用开放许可,并在attribution文件里留一行。
- 把两件工作分开。一个智能体恢复行为并写规范,另一个完全不同的上下文只依据规范实现。
最后一条最容易被跳过,而它才是真正的边界。你的调查智能体必然被污染了,因为它读了反编译;你的构建智能体绝对不能被污染。从描述开始工作不只是法律上的保护,它还让你能用自己选择的语言做正确决定,而不是继承别人二十年前做的选择——这也是WordCraft某些地方比Word快的原因。
步骤8:验证一致性,然后通过MCP发布
你从来没有过原始源码,所以没办法逐行比对。你比的是行为:给两个版本同样的输入,应该得到同样的输出。“我觉得匹配”不是证据,匹配率才是。那份报告是发布文章最上方最有说服力的东西。
然后像REA和Craft应用那样,把重构成品作为MCP服务器发布,让下一个人的智能体能驱动你的工具,就像你驱动REA一样。给每个函数一个清晰的名字和一行安装说明,那么每个动作都会变成命名命令,鼠标点击、快捷键和智能体触发都会得到同样的结果。
限制,和浪费你一整个周末的五个错误
REA碰不到服务器端,因为它读的是你机器上的东西,而跑在公司服务器上的代码从没交付给你。反编译代码是重建,不是原始源码——这正是步骤8存在的理由。去符号的C++二进制比Unity .NET游戏难得多,商业引擎仍然需要真正的许可证。
- 在Electron应用的JavaScript就在旁边时,反而去开反汇编器。
- 还没读摘要就把整个二进制倒出来,既埋了逻辑又烧钱。
- 按文件顺序而不是按交叉引用数读函数。
- 让模型直接把代码抄进你的重构,一步就破坏了净室。
- 不发一致性报告就发布。
诚实地说一句法律方面的话,毕竟X上一半人花了一周大声喊着“盗版”:在你自己的电脑上读一个应用,是学习;从它的行为去重建功能,是这个行业从八十年代起就这么干的方式;复制代码或者破解收费功能,才是会让你吃官司的部分。
研究原作,发布你自己的东西。
过去,闭源意味着你永远不会知道。现在,它意味着“把证据拿给我看”。大多数人还是会继续按月付费,为一个他们其实一下午就能搞懂、一个周末就能重写出来的功能买单。少数学会读软件的人,将能建造任何他们想要的东西。