ARTICLE · 1157041
想参考个功能却没源码?让 AI 拆开给你看
想参考个功能却没源码?让 AI 拆开给你看
你在某个 App 里撞见一个小功能,心想这要是能做进自己的产品就好了。翻遍官网,拿不到源码。以前到这儿就结束了。现在你会去问 AI,它答得挺顺,可你没法验证它说的是不是真的。
这篇讲一个叫 REA 的开源项目。它让 AI 编程助手有能力看懂一个没有源码的软件,并且把「哪一行、哪个地址」原样交回来,让你能自己核一遍。全文尽量说人话,术语第一次出现时会顺带解释。
一、先说一个你大概遇到过的场面
假设你在用 Notion,复制一段带格式的文字,粘回 Notion 里,它还是原来的块,标题是标题,列表是列表。粘到别处就退化成一片纯文本。
你在想:这个效果怎么做的?
放在两年前,这个念头到这儿就断了。你拿不到它的源码,官网也不会告诉你。现在你会打开 Claude 或者 Cursor,敲一句:
Notion 复制文字的时候,怎么把格式一起带过去的?
它会给你一段读起来很通顺的回答:大致是说页面调用某个 API,通过进程间通道发给主进程,再由 Electron 写进系统剪贴板。
问题来了。这段回答里,代码在哪个文件的哪一行?那个通道叫什么名字?谁是收消息的那一方?
它提到的名字,可能来自官方文档,也可能是它根据常见写法推出来的。你分不出哪句是哪句。

图 1 差别不在答案通不通顺,在于你能不能自己查一遍
这里先解释两个词。
逆向工程,就是手上只有一个做好的程序,没有源代码,你从成品倒着往回推,弄清它怎么运作。修车师傅不用图纸也能拆开一台发动机,是同一回事。
反编译是这里面最基础的一步。程序发到你手里,通常是编译过的、人读不懂的形式,反编译就是尽量把它还原成人能读的代码。
二、REA 是什么
REA 全称 Reverse Engineer Anything,中文可以理解成「逆向一切」。
它不是给你用的软件,是给 AI 用的。更准确地说,它在你自己的电脑上架起一个工具箱,然后把这个工具箱接到你平时用的 AI 编程助手背后。之后你在对话框里说一句人话,助手能自己去拆开目标程序,看懂了再回来告诉你。
几个能查到的数字:GitHub 星标 71,593,Fork 15,005,这是 2026 年 10 月 10 日的实测值。项目 2026 年 4 月 14 日建仓,到现在还不满半年。MIT 协议,TypeScript 写的,最新版本 6.3.0 发布于 10 月 10 日当天。
半年不到七万颗星,说明它踩中了某种真实需求:大家都在用 AI 读代码,但没人能保证 AI 读的是真的。
它做的事,说穿了就三步。先把编译过的程序还原成人能读的样子,这一步出来的东西叫伪代码,长得像代码,但未必能直接跑,主要是给人看逻辑的。然后顺着调用关系一路追下去,回答「这个功能是谁触发的、数据流到哪儿去了」。最后一步才有意思,把它翻译成你自己项目的语言,写成能跑的代码。

图 2 从你那句话,到一份能验收的结果,中间这一圈全在你本机跑完
三、它凭什么让人敢信
这一节是这篇文章的重点。
工具本身不算新鲜,反编译软件早就有了。REA 真正立住的地方,是它给 AI 立了一条规矩。随工具装进 AI 助手的那份工作指引里,写着一句很硬的话:每个结论都必须分清「观察到的」「推断出来的」和「还没搞清的」。
落到操作上,就意味着每个结论要挂上证据编号,能回头翻;分析覆盖到哪儿、没覆盖哪儿,要如实写出来;还有一条最关键,静态分析只能说「代码长这样」,不能说「我运行过、我看到它这样跑」。
静态分析是不运行程序、只读文件的分析方式,它没法告诉你程序运行时到底发生了什么。含糊跳过这一点的工具,很容易让你产生「它亲眼见过」的错觉。
所以 REA 交回来的东西长这样:函数在 0x406400,第一条指令读的是栈上的输入,两个常量的字节是这几行。至于调用它的地方还没查,它会直接写「未确认」。
四、它能拆哪些东西

图 3 能拆的东西比大多数人以为的多,而且有两类不用装任何额外引擎
上面六类只是挑出来好懂的。官方那份清单里还有 Linux 崩溃记录、网络抓包文件、安卓真机、以太坊字节码、软件安装包等内容,加起来十五类。
对普通人来说,有个细节容易被忽略:Electron 和 JavaScript 应用(Notion、VS Code、Discord 桌面版都是这一类)以及 .NET 程序集,不需要额外装任何引擎,装上 REA 就能查。只有想查电脑上的 exe、老游戏这类原生程序,才需要再配一个分析引擎。
五、怎么用:三条路
先说清楚一件事,免得你去找。
REA 没有网页版,也没有桌面客户端和浏览器插件。它的官网只是文档站。你要是看到有人卖「REA 在线版」,那不是官方的。
它实际提供的用法定下来是三种:在终端里敲命令;接进你的 AI 助手,之后正常聊天;或者只装那份给 AI 看的工作指引,先不动任何配置。

图 4 三种用法背后是同一个工具箱,只是入口不同
六、照着做:从零到跑通
下面这一套按顺序做完,大概十分钟。
第 1 步,确认 Node.js 版本。 Node.js 是让这类工具能跑起来的运行环境,打开终端敲:
版本得是 22.19 以上、24.11 以上,或者 26 以上。低于这个数跑不起来,去 nodejs.org 下个新的装上。
第 2 步,一条命令装好。
npx 是 Node 自带的工具,能直接下载并运行一个包,不用你提前装。第一次跑会问你用哪个 AI 助手,勾上你常用的那个。
这一步会改你的助手配置文件。它会先把原文件备份一份(存成 .rea.backup),改完再读回来校验一次,校验不过就把备份还原。看到它列出要改哪些路径之后,确认没问题再同意。
第 3 步,重启助手,做个体检。
它会一项项告诉你:Node 版本够不够、操作系统支不支持、分析引擎找没找到、和助手的连接有没有接上。哪一项是红的就照着提示修。想单独查某一项也可以,比如:
第 4 步(按需),装分析引擎。 只看 JavaScript、Electron 或者 .NET 的话,跳过这一步就行。
要看原生程序(exe、老游戏、固件),就得在三个引擎里挑一个:Hopper、Ghidra、IDA。Ghidra 是美国国家安全局开源出来的,免费,想省钱就装它。Hopper 是商业软件,便宜些,在苹果电脑上体验最好。IDA 最贵,专业逆向的人在用。REA 不帮你装 Ghidra 和 IDA,只负责把你已经装好的路径记下来。
第 5 步,问出第一句。 回到 AI 助手的对话框,正常说人话:
关于钱和密钥,说实话
看到「API 密钥管理」这几个字,你可能会以为要配一堆东西。实际情况不是这样。
REA 本身免费、开源、不需要任何密钥,也不上传你的文件,所有分析都在本机跑完。真正花钱的地方只有两处:一处是你用的 AI 助手本身,Claude、Codex、Cursor 这些多数按用量收费,钱付给模型厂商,这跟装不装 REA 无关,你不装也得付;另一处是分析引擎,Ghidra 免费,Hopper 和 IDA 需要买授权,REA 只是调用它们。
所以整条链路上,你唯一可能新掏钱的地方就是那个商业引擎,而且只有在你需要拆原生程序时才用得着。
用完想撤掉,敲 rea uninstall。想连缓存和状态一起清干净,加个参数:rea uninstall --purge-data。
七、三个真做过的案例
以下三个都来自官方公开的案例页,原始可查。
案例一:把 1996 年的打砖块游戏,还原成能读的 C 语言
DX-Ball,1996 年的 Windows 游戏,只有一个 EXE。
想干的活是:砖块被击中时,声音偏左还是偏右、音量多大,这个计算怎么做的。
问法是这样的——「用 REA 找到 DX-Ball 算声音左右位置的那个函数,解释每一步计算,然后把结果写成 C」。
拿回来的东西分了三步。第一步给出函数位置 0x406400,但初始的伪代码只有一个 __ftol() 调用,看不出输入是什么。第二步顺着指令视图发现输入藏在栈上,再顺藤摸瓜找到调用它的地方,才看出输进来的是「砖块横坐标乘以 30 再加 20」。第三步读内存里两个地址的字节,解码出常量 1.5625 和 500.0。
三条凑齐,C 代码就出来了:把坐标乘 1.5625,减 500,再乘一个缩放系数。
验收结果是硬数字。还原出来的函数跑过 3,205 个测试用例,覆盖 0 到 640 的每一个整数位置;用当年的编译器重新编译,63 个字节与原程序完全一致。这个项目整体上已经还原了 55 个函数,做过 45,380 次对比,其中 33 个函数做到了编译后字节完全一致。
案例二:弄清楚 Notion 复制为什么能保住格式
就是文章开头那个问题。
问法是「用 REA 追一下 Notion 是怎么把文字和 HTML 一起复制到系统剪贴板的,每一步把代码给我看」。
拿回来的是一条完整的链路。页面看到的方法叫 clipboard.write,它在 preload 里其实是个壳;壳把消息发进一条叫 notion:clipboard:write 的通道;主进程那边用 ipcMain.handle 接住,先检查消息是不是自家页面发来的,通过之后才写进系统剪贴板。
preload、主进程、IPC 都是 Electron 里的概念,简单说,一个桌面应用内部分成几个信任程度不同的区域,它们之间不许随便直接调用,必须走一条指定的通道。REA 干的活就是把这条通道两头的名字对起来,顺带还告诉你代码在 preload.js 第 1 行第 22764 列。
额外收获是格式为什么能保住:Notion 在复制的 HTML 里塞了一个 ID,同时把真正的块数据存在本地。粘贴时读出这个 ID,比对上了就把块数据还原回来。
案例三:恢复 1996 年 DOS 游戏的弹幕算法
Touhou 4,PC-98 上的游戏,16 位 DOS 程序,比前两个更老。
想干的活是 BOSS 发射一圈 16 颗子弹,而且这一圈会朝着玩家转,这个角度怎么算的。
问法是「用 REA 查 TH04 是怎么生成一圈子弹并把它们对准玩家的,解释计算过程,给出代码」。
拿回来的东西里有一条关键指令:把子弹序号左移 8 位,再除以子弹总数。左移 8 位就是乘 256,而游戏里一整圈正好是 256 个角度单位,所以每颗子弹的间隔就是「序号乘 256 除以总数」。在这个基础上再加三个量:玩家的方向、模板自身的旋转、一个偏移值。
验收结果是,还原出来的代码编译后,与原始程序中 2,139 字节的区段完全一致,两份独立构建得到相同结果。
三个案例看下来有个共同点:它们都不是「AI 猜对了」,而是「有东西可对」。

图 5 问题问得具体,结果才验收得了;这两栏的差别不在字数,在约束条件
八、怎么问才有效
从上面三个案例里能抽出一个可以直接套的句式:
四句话,每句都在收窄范围。收窄了,助手才不需要猜。问「这个软件怎么实现的」,它只能泛泛而谈;问「用 REA 查 Notion 把文字和 HTML 复制到剪贴板的过程,每一步给我代码」,它就绕不过去。
还有一句得提醒:如果它交回来的结果里写着「未确认」「未覆盖」,那是好事,不是坏事,说明它守住了界线。
九、适合谁,不适合谁
适合你的情况大概有这么几种。
你是做产品的,看到一个交互细节,想弄清那是产品设计撑起来的还是技术实现撑起来的。或者你在维护一套没有源码、原班人马也散了的旧系统,动它之前得先弄明白它原本怎么跑。做安全研究、参加 CTF 比赛(一种网络安全竞赛)的人也会经常用到。再有一种是纯粹好奇,比如你在学编译原理、操作系统这类底层课,想拿真程序当教材。
反过来,如果你只是想让 AI 帮你写代码,那不用装它。还有一条说重一点:如果你的目标是破解别人的软件、绕过授权、或者复制别人受法律保护的核心实现,别用。
REA 官方的免责声明写得很直接——它只面向合法的逆向工程研究、分析和重建,你有责任取得所需授权并遵守适用法律,项目不支持非法或未经授权的使用。
另外有一件事容易被忽略。「本机运行」不等于「完全离线」。REA 不传你的文件,但 AI 助手会把 REA 返回的结果发给自己背后的模型厂商,那边的数据政策是另一回事。还有,静态分析读文件、不运行程序,涉及运行时行为的问题它得靠额外手段去补,而那些手段各有各的前提条件。
十、几个常见问题
一定要装 Hopper 或者 Ghidra 吗? 不一定。只看 JavaScript、Electron 和 .NET,什么都不用装。要看原生程序才需要。
我电脑是 Windows,能用吗? 官方对 Windows 的支持标着「实验性」。原生分析里 Ghidra 这条路在 Windows 上能跑,但别指望和 Mac、Linux 一样顺。
需要会编程吗? 会用终端敲两条命令就行,日常就是在对话框里说话。不过结果里的伪代码和汇编,认得出来当然更好。
它会上传我的软件吗? REA 在本机分析。但要留意,结果会经由你那个 AI 助手发给它的模型厂商。
报错了怎么办? 先更新,很多时候新版本已经修了。全局安装的敲 rea update;用 npx 装的,重跑一次 npx rea-agents@latest setup,重启助手,再试一遍。还不行就去提 issue,记得带上版本号、目标类型、复现步骤和报错输出。
小结
AI 让「看懂一个软件」这件事门槛降了一大截,同时也把「你凭什么相信它」推到了台前。
REA 给的答案不算花哨,就是把看到的原样带回来,分不清的地方就写分不清。半年七万颗星,大概就是因为这种态度确实稀缺。
要是你也常被一个喜欢的功能卡住,花十分钟装上,把第八节那个句式抄下来问一次。能自己核对一遍的答案,和只能选择相信的答案,不是一回事。
项目地址:github.com/morluto/rea
官网(含图解指南和全部案例):rea.tools