ARTICLE · 1219751
近 30 万星的 AI 逆向工具,我把答案对了一遍
这几天技术群、朋友圈、 GitHub Trending ,到处都在转同一个东西: REA ,中文译成「逆向一切」,近 30 万 star ,号称装上它 AI 就能看懂任何软件。
我第一次刷到那张 star 曲线的时候,第一反应是——又一个被吹上天的工具。
但它有一句话说得特别具体:每条结论都带证据。
这句话是可以验的。不像"颠覆"、"革命"那种词,你没法反驳;"带证据"能拿去对答案。
所以我把它装上了,跑了两轮,一条条对。
结论先给你:它的坐标一条没歪,但它在真项目上把 10 万个节点的额度用光了。
这篇给你两轮实测的原始数字、我怎么核对的、以及它到底该用在什么地方。数据全部来自本机跑出来的 JSON ,命令在最后一节,你可以原样复现——不用信我,自己跑一遍就够。
网上所有文章都说它"每条结论都带证据"。这句话没错,但容易误会。
我拆开它的输出看过:每个节点只存三样东西——哪个文件、第几行、第几列。没有代码文本,也没有结论。
它给的是一张定位图,不是一份说明书。
这个区别很要命。你问它"文件写到哪",它能把 path.join(...) 那一行指给你,但那一行里写的是 notes.csv 还是 dump.txt,得你自己去看。

▲ 它输出的节点结构:只有位置,没有内容
官方示例是个极小的 Electron 记事本, 6 个文件、 39 行 JS 。我先把源码全读了一遍,标准答案握在手里。
它的输出: 183 个节点、 110 条关系、 21 项事实、 71 处"不确定"。
其中 169 个节点带坐标。我把每个坐标拿回源码切片——main.js 第 8 行切出来就是 "notes:export" 这个字符串。169 个,零偏差。
21 项事实我也逐条比了,全对。表格太长,挑 6 条关键的给你看:

▲ 这一轮它赢得干净
第二道题换真家伙: Another Redis Desktop Manager , GitHub 上 qishibo 维护的那个 Redis 客户端, MIT 协议, 10MB 的 app.asar 。
选它有三个原因:我天天用、它开源(源码能当标准答案)、体量刚好够真实。
它扫了 243 个文件、 183 个 JS 、 152 万个语法节点,报出 1640 项事实。
然后我看到了这行:
顶到上限了。它的语义图最多留 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 快得多。
二,你有一坨看不动的大代码,想先拿张地图。它的坐标可以信,你顺着坐标读,比乱翻强。
不值得用的一个场景:
指望它直接给你"这个功能是怎么实现的"。它给不出。它能指到那一行,剩下的活儿是你的。
还有一个前提得说清:只拆你有权拆的东西。自己的、开源的、有授权的。我这两轮选的都是源码公开的项目,就是为了能对答案——拆闭源商用软件既算不出准确率,也不干净。
第二个命令如果报 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















































































