演示:让 AI Agent(REA)反编译一个 Hello World
上一篇聊了 REA(让 AI Agent 逆向任何软件)。这篇演示它怎么用——拿最小的目标:一个 Hello World。
全程三步:备好目标 → 接上 REA → 一句话提问。
Step 1:备好"目标"(一个 strip 过的二进制)
#include <stdio.h>
int main(void) { printf("Hello, REA!\n"); return 0; }
gcc -O0 -s hello.c -o hello # -s:strip 掉符号,模拟"没有源码"
现在 hello 是一个 ELF64、已 strip、没有函数名 的二进制——正是"逆向"的典型起点。
Step 2:把 REA 接到你的 Agent
npx rea-agents setup
按提示选你的 agent(Claude Code / Codex / Cursor…),它会:
- 给 agent 注册 REA 的 MCP server;
- 安装对应的工作流指令;
- 备份你原有的配置。
一个前提:原生二进制(像这个 ELF)需要一个分析引擎——Ghidra(免费)、Hopper 或 IDA。JS / .NET 的静态分析则免引擎。装好引擎、重启 agent,就能用了。
引擎(Ghidra)怎么快速拿到? 用它自己的下载器就行(多镜像并行,GitHub:https://github.com/zishuowang696/gh-download):
```bash scripts/gh-download.sh NationalSecurityAgency/ghidra Ghidra_12.1.4_build --pattern 'PUBLIC.zip' -d ./ghidra ```
—— 543 MB,实测 4.7 MiB/s(详见 国内友好的 GitHub 下载器)。
Step 3:一句自然语言,让它干活
在 agent 里,你只需要说人话:
"反编译
./hello,说明main到底干了什么,并把那个字符串还原出来。"
(也可以走命令行:npx rea-agents@latest 的 analyze 命令,逻辑一样。)
你会拿到什么(我们的真实结果)
我在 Linux + Ghidra 12.1.4 + Node 24 + REA 6.4.0 上真跑了一遍。
带符号版:rea decompile ./hello_sym main →
undefined8 main(void)
{
puts("Hello, REA!");
return 0;
}
而且它返回的不只是代码,还带着证据:
provider: ghidra 12.1.4、confidence: observed;- 一串
limitations(明确说"这是反编译输出、不是源码,也不等同于 Hopper 的输出")。
一个彩蛋:我们写的是 printf("Hello, REA!\n"),但编译器把它优化成了 puts——REA 直接摆出来了。
而在 strip 过的 hello 上:rea decompile ./hello main →
error: Analysis failed
message: "Unknown Ghidra procedure name or address: main"
这就是"没有符号"的现实:函数名被抹了,你(或 AI)得按地址去定位——它不是"一键变源码"的魔法。
这就是 REA 的定位:不说"相信我",而是"结论 + 证据 + 局限"——比"AI 拍脑袋"靠谱得多。
关键:它快,但你得能验证
REA 省的是"读汇编"的时间,不是"理解"的责任。
它给你伪代码,你需要能验证(比如随手 objdump -d 看一眼、strings 对一下)。所以才建议你好歹会看一点底层——不是为了自己手撸,而是为了验收 AI 的结论。
小结
- REA = AI 版的"逆向助手":你写 server 的工具、它负责接通引擎与 agent;
- 用法极简:备目标 → 装 REA → 一句话提问 → 看伪代码 + 证据;
- 别把它当魔法:它是"提速器",判断和验证,还得靠你。
下一步(合法、有护城河):找一个你拥有的设备固件里的一个小函数(CRC / 校验 / 协议打包),用同样的流程反出来,重写成你自己的代码——那才是 REA 真正值钱的地方。
💬 你会先拿它反什么?(学习 / 互操作 / 安全 ✅;抄 / 破 ❌) 🛠️ 需要嵌入式 / 边缘 AI / Agent 定制与咨询?见 关于页。
评论 0
还没有评论,来抢沙发~
登录 登录后即可参与评论