夜雨聆风学习资料网

ARTICLE · 1187890

软件没有源码,AI 也能拆开看:一句话读懂它的内部实现

软件没有源码,AI 也能拆开看:一句话读懂它的内部实现

平时用软件,总会碰上一两个「这功能是怎么做出来的」的瞬间:某个应用的搜索又快又准,某个小工具只有几百 KB 却什么都能干。

想搞明白,以前只有一条老路:反编译。反汇编出来的是汇编指令和伪代码,看得人头大,还得自己在成千上万个函数里拼出「它到底怎么实现的」。

现在多了一条路:让 AI 直接拆开一个软件,把代码和证据摆到你面前。今天写的这个工具,做的就是这件事。


一、它能干什么

这是我实测时对 AI 说的一句话:

用 REA 弄清 Obsidian 的搜索功能如何工作,展示证据,并为我的项目实现类似功能

它自己找到 Obsidian 装在哪、判断出这是 Electron 应用,然后拆开分析。最后给出的是这个:

五个核心组件(分词器 → 解析器 → 操作符表 → 查询对象 → 搜索引擎)、九个搜索操作符的映射表(path:、file:、tag: 各对应哪种匹配算法),以及性能设计上的取舍。

更关键的是它自己标注了证据来源:分析对象的路径和 SHA-256、证据编号,并且明确区分「观察到的代码」和「推断」。

能做这些事:

能力
说明
JavaScript / Electron 应用
恢复模块关系,给出代码证据;不需要额外装引擎
.NET 程序集
读元数据和中间语言;不需要额外装引擎
数据库、网站
SQLite 结构、浏览器页面
原生二进制(exe / dll)
反汇编、反编译、查调用关系;需要额外装引擎(见第三节)
版本对比 / 崩溃溯源
对比两个版本改了什么;从崩溃现象往回找代码路径

二、和已有的方案比

这个需求以前也有工具 —— 我前面写过一篇 Ghidra MCP。差别在定位:

对比项
两个方案的差别
引擎
Ghidra MCP 只用 Ghidra;REA 是多引擎统一入口(Ghidra / IDA / Hopper),你装哪个它用哪个
不装引擎能用吗
Ghidra MCP ❌ 必须装 Ghidra;REA ✅ JavaScript / .NET 不用装任何引擎
支持的客户端
Ghidra MCP 主要 Claude Code / Codex;REA 官方直接配置 21 个(含 Claude Code、Codex、Hermes)
单个引擎的深度
Ghidra MCP 更深(专精 Ghidra);REA 够用(广覆盖优先)

它是一套工具箱,Ghidra MCP 是一把手术刀。不想为了看一个 Electron 应用去装 Ghidra(光下载就几百 MB、还要配 JDK)的话,它更省事。两者可以并存。


三、安装

实测环境:Windows 11 + Node.js v24.15.0 + Claude Code(VS Code 扩展),安装和提问全流程跑通。

第 1 步:前置检查

Node.js 版本要在 22.x、24.x 或 26+(22.19 / 24.11 以上)。CMD 里检查:

node -v npm -v

另外先想清楚你要分析什么:

目标
要不要额外装引擎
JavaScript / Electron 应用
不用
.NET 程序集
不用
网站
不用(要 Chrome 系浏览器)
原生二进制(exe / dll)要
:Ghidra 12.1.x、IDA 或 Hopper 三者择一

先不装引擎也没关系 —— 后面第 4 步单独说。

第 2 步:一条命令装好

CMD 里执行(不用管理员身份):

npx rea-agents setup
下载慢或长时间没反应时
,先切国内镜像(第三方镜像,非官方提供)再重跑上面那条:
npm config set registry https://registry.npmmirror.com

首次运行会先问要不要下载安装 REA 本体,按 y 回车:

装好后命令会依次出现三个界面,按提示走:

界面 1:选要配置的智能体

它列出检测到的客户端(例如 Claude Code, Codex)。以前注册过的默认打勾,没检测到的也能手动勾。确认后回车。

界面 2:检查变更

显示 Ready to review 和要改动的文件,底部问 Apply these 4 changes?。选 Yes, apply 回车。

想跳过界面直接指定客户端,用这条(把 claude_code 换成你要用的标识):

npx -y rea-agents@latest setup --client claude_code

界面 3:安装完成

提示 Restart Claude Code, Codex to load REA.,说明注册已经写好了。

第 3 步:重启客户端

不重启它不会加载。

客户端
怎么重启
Claude Code(VS Code 扩展)
完全关闭 VS Code 再打开
;或按 Ctrl+Shift+P 输入 Reload Window
Claude Code(终端)
输入 /exit 退出,再运行 claude
Codex(桌面应用)
退出应用再打开

重开之后在 Claude Code 里敲 /mcp,看到 rea · connected(我这边 170 个工具)就说明它加载好了:

第 4 步(可选):要分析原生二进制才做

只分析 JavaScript / .NET / 数据库的话,这步跳过。

需要装 Ghidra 12.1.x 加一个 64 位 JDK(Ghidra 12.1 要求 JDK 21 或更新)。REA 不帮你装 —— 官方明确说它不安装或升级 Ghidra、Java、Python、Node.js。

装完在 PowerShell 里指向它们并复查($env: 是 PowerShell 语法,CMD 不适用):

$env:GHIDRA_INSTALL_DIR = "C:\tools\ghidra_12.1.4_PUBLIC" $env:JAVA_HOME = "C:\Program Files\Java\jdk-21" npx rea-agents@latest doctor --json
⚠️ Windows 上有两条限制:Hopper 装不了;原生分析是实验性只读边界,Ghidra GUI 状态、注解、其他架构都不支持。要深度逆向还是建议 Linux。

第 5 步:验证

在同一个窗口里依次执行两条(不要新开窗口)。

第 1 条:

npx rea-agents@latest doctor --client claude_code

第 2 条:

echo %ERRORLEVEL%

第 2 条显示 0 就是通过;显示 1 说明有必需项没过。

两点别误会
:输出里 Hopper、Ghidra、IDA 报缺失是正常的(不影响 JavaScript / .NET 分析);两条必须在同一个窗口一前一后跑,新开窗口取不到上一条的退出码。

Codex 用户把命令里的 claude_code 换成 Codex 对应的标识即可 —— 装法完全一样。这条我没在本机跑过,是按官方文档写的。


四、使用

装好之后,直接在对话框里用自然语言说就行。官方内置了六类调查:

你想干什么
这样说
弄清某个功能怎么实现
弄清 "D:/你的应用目录" 的搜索功能如何工作,展示证据
对比两个版本的差别
对比 "D:/旧版本" 和 "D:/新版本",告诉我功能上有什么不同,展示证据
追一个崩溃的成因
"D:/你的程序.exe" 报「XXX」崩溃,帮我把可能的代码路径找出来,展示证据
核对重写是否一致
我重写了搜索功能,帮我核对它和原版行为是否一致
抓一次运行过程
我想看 "D:/你的程序.exe" 启动时读了哪些文件,帮我抓一次运行过程
看还剩什么没查清
列出这次分析里还没查清的问题

⚠️ 两件事决定它好不好用:

1. 给出目标在磁盘上的路径。只说「Obsidian」不给路径,AI 找不到就会去上网搜。

2. 点名「用 REA」。AI 手上工具很多,不点名它可能挑别的。


五、我实测撞到的 3 个坑

坑 1:提示 'rea' 不是内部或外部命令

现象:敲 rea doctor,报这个。

原因:rea 这个短命令要全局安装之后才有;上面第 2 步的装法没做全局安装。

解决:命令前加 npx rea-agents@latest,即 npx rea-agents@latest doctor --client claude_code。

坑 2:验证的退出码显示 1

现象:第 5 步第 2 条拿到 1,但看不出哪里错了。

原因:注册项和实际配置对不上了(输出里的 config_drift)。

解决:看输出里 scope_checks 段没通过的项 —— 每项下面都有一行 remediation,直接写着该做什么。我这次那行说的是「重跑 setup 刷新注册,再重启客户端」:

npx rea-agents@latest setup

坑 3:客户端一问就反复压缩

现象:发完提示词后,会话连续压缩三次,然后弹红字说上下文反复爆掉。

原因:这个工具自带 170 个工具,定义一次全进了上下文。如果你的客户端接的是国产模型的兼容接口(比如 DeepSeek 的 Anthropic 格式地址),客户端的「工具按需加载」会被自动关掉,这些定义就全量压进上下文 —— 跟对话内容多少无关。

解决:在客户端配置文件里加一行开关,然后完全重启:

"ENABLE_TOOL_SEARCH": "true"

加在配置文件开头的 env 段里,不是加在 MCP 服务配置里。 改完重启,占用直接掉下来(我这边从 196.6k 降到 14.2k):

万一加了没效果,说明你那个接口不支持,那就退回「平时把 REA 禁用、要用再开」。

六、写在最后

这篇的重点不是安装,是「没有源码」已经不是障碍了。

如果你只做一件事:装好之后,挑一个你一直在用、又好奇它怎么实现的软件,问一句「这个功能怎么做的,给我看证据」。看一次带证据的拆解,比读十篇讲原理的文章都直观。

它不适合指望一键出成品逆向报告的人 —— 它给的是证据和线索,最后的判断还得你自己下。

它的坑主要在客户端配置上,踩一次、加一行配置就过去了;装好之后用起来很顺。

如果你身边有做安全、做逆向,或者单纯好奇「这软件怎么做的」的朋友,可以转给他。

如果你在用它的时候卡在某个坑上,或者想让我把某一类分析单独写细一点,留言告诉我。

相关学习资料