夜雨聆风学习资料网

ARTICLE · 1219751

近 30 万星的 AI 逆向工具,我把答案对了一遍

近 30 万星的 AI 逆向工具,我把答案对了一遍

这几天技术群、朋友圈、 GitHub Trending ,到处都在转同一个东西: REA ,中文译成「逆向一切」,近 30 万 star ,号称装上它 AI 就能看懂任何软件。

我第一次刷到那张 star 曲线的时候,第一反应是——又一个被吹上天的工具。

但它有一句话说得特别具体:每条结论都带证据。

这句话是可以验的。不像"颠覆"、"革命"那种词,你没法反驳;"带证据"能拿去对答案。

所以我把它装上了,跑了两轮,一条条对。

结论先给你:它的坐标一条没歪,但它在真项目上把 10 万个节点的额度用光了。

这篇给你两轮实测的原始数字、我怎么核对的、以及它到底该用在什么地方。数据全部来自本机跑出来的 JSON ,命令在最后一节,你可以原样复现——不用信我,自己跑一遍就够。

一、先搞清楚它输出的是什么

网上所有文章都说它"每条结论都带证据"。这句话没错,但容易误会。

我拆开它的输出看过:每个节点只存三样东西——哪个文件、第几行、第几列。没有代码文本,也没有结论。

它给的是一张定位图,不是一份说明书。

这个区别很要命。你问它"文件写到哪",它能把 path.join(...) 那一行指给你,但那一行里写的是 notes.csv 还是 dump.txt,得你自己去看。

▲ 它输出的节点结构:只有位置,没有内容

二、送分题: 39 行代码, 169 个坐标全中

官方示例是个极小的 Electron 记事本, 6 个文件、 39 行 JS 。我先把源码全读了一遍,标准答案握在手里。

它的输出: 183 个节点、 110 条关系、 21 项事实、 71 处"不确定"。

其中 169 个节点带坐标。我把每个坐标拿回源码切片——main.js 第 8 行切出来就是 "notes:export" 这个字符串。169 个,零偏差。

21 项事实我也逐条比了,全对。表格太长,挑 6 条关键的给你看:

它报的
源码实际
窗口 1 个
1 个 new BrowserWindow
preload 1 个
1 个 preload.js
contextBridge 1 个
exposeInMainWorld
IPC 通道 1 条
"notes:export"
主进程 handler 1 个
ipcMain.handle
收发配对 1 组
invoke 与 handle 1:1

▲ 这一轮它赢得干净

三、真实题: 10 万节点,被 node_modules 吃光

第二道题换真家伙: Another Redis Desktop Manager , GitHub 上 qishibo 维护的那个 Redis 客户端, MIT 协议, 10MB 的 app.asar 。

选它有三个原因:我天天用、它开源(源码能当标准答案)、体量刚好够真实。

它扫了 243 个文件、 183 个 JS 、 152 万个语法节点,报出 1640 项事实。

然后我看到了这行:

 "coverage": {"status": "partial", "truncated": true,   "limits": [{ "name":"semantic_graph_node_ceiling",     "value": 100000 }] } 

顶到上限了。它的语义图最多留 10 万个节点(就是上面那个 semantic_graph_node_ceiling),这个项目正好把额度用满——不多不少, 100,000 个。

▲ 到了就截断,不会自己扩

那这 10 万个节点落在哪?我按文件统计了一遍:

▲ 清一色是依赖包和编辑器 worker

整个图只装下 94 个文件,应用自己的渲染进程代码,基本没进去。

后果很具体。源码里主进程这边有 9 条 IPC 通道,它找到了: getTempPath 、 getMainArgs 、 changeTheme 、 hideWindow 、 minimizeWindow 、 toggleMaximize 、 update-check 、 continue-update 、 get-all-fonts 。

9 条,一条不差,零误报。我对着 pack/electron 下那几个文件一条条数的。

但渲染进程那边, send-all-fonts 、 closingWindow 、 update-downloaded 这些调用,一条都没抓到。摘要里老老实实写着 renderer_transmissions: 0 。

▲ 同一个应用的两端,一边全中,一边全丢

所以你看这份结果的时候,会看到"9 个 handler ,分析得挺全"——实际上只有一半。前后端怎么接上的,这张图答不了。

四、三个数字,三种误读

71 。39 行代码, 71 处"不确定"。它不知道的都标出来了:目标模糊 29 、动态调用 25 、值未知 17 。

39501 。真项目上的"不确定"数量。近四万处,其中目标模糊 19371 。

100000 。节点上限。到了就截断,不会自动扩。

这三个数字说明同一件事:它很诚实,但诚实不等于完整。

更麻烦的是它的诚实藏得很深。 truncated: true 在 JSON 的 coverage 字段里,你得翻到那一层才看得见;而 summary 里那句"9 条通道"摆在最显眼的位置。

诚实的数据 + 乐观的读法 = 你脑子里的幻觉。这条账,得算在读结果的人头上。

五、它有一个我很欣赏的习惯

第一次跑真项目,它直接拒绝了,报 artifact_integrity_mismatch——带原生模块的 Electron 应用打完包会再签一次名,归档里的摘要和实际文件对不上。它的第一反应不是硬着头皮算完给你,而是停下来报错。

我按官方说法加了 --integrity-policy=record-and-continue ,它才继续。而且把两条矛盾写进了 limitations 字段,白纸黑字留着。

这一点比很多"我全都能"的工具强。愿意说"这块我不确定"的东西,才值得你信它确定的那部分。

六、环境成本,比想象的高

rea doctor 跑了 11 项检查,只过 2 项( Node 和主机环境)。

▲ 缺的不是坏了,是你得知道它在查什么

5 项是缺引擎: Hopper 、 Ghidra 、 IDA 、 jadx 、 kuna 。这些是拆原生二进制才要的,拆 Electron 应用用不上。 4 项是配置漂移——它默认你要接进 Claude Code 、 Codex 这类客户端,我这次只用命令行,所以全是红的。

另外提醒一句:官方宣传 207 个工具,那是 MCP 接口的数量。命令行的子命令我数了,是 155 个。两个数不是一回事。

七、那它到底该用在哪

值得用的两个场景:

一,你手上有个没源码的 Electron 应用,想搞清它某个功能是怎么组织的。让它把所有入口、 IPC 通道、原生模块依赖列出来,比你自己 grep 快得多。

二,你有一坨看不动的大代码,想先拿张地图。它的坐标可以信,你顺着坐标读,比乱翻强。

不值得用的一个场景:

指望它直接给你"这个功能是怎么实现的"。它给不出。它能指到那一行,剩下的活儿是你的。

还有一个前提得说清:只拆你有权拆的东西。自己的、开源的、有授权的。我这两轮选的都是源码公开的项目,就是为了能对答案——拆闭源商用软件既算不出准确率,也不干净。

八、想自己复现,两条命令
 npx rea-agents@latest doctor --json npx rea-agents@latest \   analyze-javascript-application \   <路径> --json 

第二个命令如果报 artifact_integrity_mismatch ,加 --integrity-policy=record-and-continue 。

拿到 JSON 之后先看三个地方: coverage.status 是不是 partial 、 summary 里的数、 unknowns 有多少条。这三个数比任何"结论"都重要。

🌰 写在最后

REA 能火成这样,一半功劳在名字。

「逆向一切」这四个字太好传播了,好到很多人装完就以为能看懂任何软件。可它做的事情其实很朴素:把 Hopper 、 Ghidra 、 IDA 这些老工具接进 Agent ,再把结果整理成一张带行号的图。

真正的活儿它没干,也干不了——看懂。看懂是你的脑子在干,它只负责把材料摆到你面前。

所以我的判断是:它值得装,但别把它当捷径。它省的是你翻代码的时间,不是你想明白的时间。这两件事差得很远。

近 30 万 star 涨得越快,越说明大家都在找捷径。可这行的手艺,从来不在捷径上——它在你愿不愿意顺着那行行号,把代码真的读一遍。

最后补几条花絮。

整个过程跨了一下午。中间有两次跑到 99%,因为本机环境不让删临时文件,它直接把结果整包丢掉,只回一句"清理没确认"——较真到这个程度,我是没想到的。

那个 10MB 的项目,分析只花了 3 分钟,吐出来的证据包有 184MB ,我拿脚本才拆开。想自己跑的,磁盘留够。

还有,第一次 npx 安装卡了快两分钟没输出,别以为它死了,它在下 25MB 的包。

对了,这轮只测了 Electron 和 JS 。原生二进制那半边(要配 Ghidra 引擎)还没跑,等我配好了单独补一篇。你要是也跑过它,把你的数字发我,我补进对照表。

都看到这里了,点个 ❤ 支持一下吧~

THANKS FOR READING

相关学习资料