2akouwu/reverify · 上手攻略
- 仓库:2akouwu/reverify
- 链接:https://github.com/2akouwu/reverify
- 分类:Security · Reverse Engineering · AI Tooling
- 作者:Jay
- 更新:2026-09-03
是什么
Reverify 是一个AI 辅助逆向工程工具包,核心解决 AI 在二进制逆向场景下"一本正经地胡说八道"的问题。它将语言模型置于确定性 RE 工具链的裁判之下:模型提出假设,工具链在真实二进制上验证,只有在 disassemble、pattern-match 或 emulator 执行后确认的结论才对外报告。
MIT 许可证,当前版本 v0.3.0,纯 Python 实现,核心引擎开箱即用(无需 Ghidra),可选升级到 capstone(反汇编)/ unicorn(CPU 模拟)/ lief(PE/ELF/Mach-O 解析)。
解决什么问题
大语言模型读代码能力强,但做逆向工程时容易凭空捏造偏移量、结构体大小和行为描述——在源码分析中这已经是问题,到了二进制分析领域更是灾难,因为二进制没有语法信息可供校验。
Reverify 的核心洞察:让确定性工具成为裁判,而不是让 AI 自由心证。一个关于二进制结构或行为的 claim,只有在工具验证后(VERIFIED / REFUTED / INCONCLUSIVE)才会被报告。
快速安装
# 基础安装(纯 Python 核心,无需额外依赖)
pip install reverify
# 完整安装(capstone + unicorn + lief,性能和架构覆盖更广)
pip install "reverify[full]"
# 验证安装和查看活跃引擎
reverify backends
⚠️ reverify[full] 包含 C 扩展(Capy/unicorn/lief),在某些平台可能需要编译工具链;从 checkout 直接运行只需标准库:
# 纯标准库,无需安装,直接运行
python reverify/cli.py auto sample.bin --json
python reverify/cli.py parse-pe sample.exe --json
核心用法
验证一个 claim(核心功能)
reverify verify sample.bin --claim '{
"kind": "instructions",
"offset": 4096,
"mnemonics": ["push", "mov", "sub"],
"note": "function prologue"
}'
# 输出:VERIFIED / REFUTED / INCONCLUSIVE + 实际观察到的字节
# 验证重放后的 routine 是否符合声称行为
reverify verify - --claim '{
"kind": "emulate_result",
"code": "b805000000b90300000001c8c3",
"arch": "x86",
"expect_registers": {"eax": 8}
}'
自动分析二进制
reverify auto sample.bin --json
# 自动检测格式、架构、分段、高频字符串
格式解析
# PE/ELF/Mach-O 通用解析
reverify parse sample.bin --json
# PE 专用解析
reverify parse-pe sample.exe --json
指令级操作
# 反汇编指定地址或 hex
reverify disasm 90505831C0C3 --arch x86_64
# AOB 模式扫描(?? 为通配符)
reverify pattern-scan "48 8B ?? ?? ?? 00 00" --arch x64 sample.bin
模拟执行
reverify emulate <address> --arch x86 --registers '{"eax": 0}'
Frida Hook 生成
reverify gen-hook --symbol "openssl.BIO_new" --arch x64
# 生成可用于 Frida 的 interceptor 脚本
MCP Server(Agent 集成)
python reverify/mcp_server.py
# 启动后,Claude Code / Cursor 等 Agent 可通过 MCP 协议直接调用 reverify 工具
MCP 暴露的核心工具是 re_verify_claim,让 Agent 在报告任何关于二进制的结论前,都经过工具链验证。
批量验证(CI 集成)
# 从 JSON 文件加载 claim 列表,任一 REFUTED 则非零退出
reverify verify sample.bin --claims-file claims.json
# 退出码:0=全部 VERIFIED/INCONCLUSIVE,1=存在 REFUTED
支持的 Claim 类型
| kind | 含义 |
|---|---|
bytes_at |
指定偏移量的原始字节 |
pattern_present |
AOB 模式存在 |
string_present |
字符串存在 |
instructions |
指定偏移量处为特定指令序列 |
emulate_result |
模拟执行后寄存器/内存状态 |
protobuf_field |
Protobuf 字段存在及类型 |
pe_import |
PE 文件导入指定函数 |
典型适用场景
- 恶意软件分析:AI 猜测的结构体/函数行为,通过 reverify 验证是否与真实二进制匹配,避免误判。
- CTF 逆向题:模型快速分析 → reverify 验证关键假设 → 人力聚焦未解决部分。
- 互操作性研究:逆向闭源协议/文件格式,AI 生成假设后验证偏移和结构。
- 固件分析:对无源码固件进行结构重建,所有结论必须基于实际字节验证。
- Agent 研究辅助:为训练数据生成提供可验证的逆向 ground truth。
坑与注意
- ⚠️ 仅限授权逆向:README 明确声明仅用于已授权的逆向场景(恶意软件分析、CTF、你拥有或被允许分析的软件);SECURITY.md 定义了明确的边界。
- ⚠️ pure Python 核心 vs full 引擎能力差距:纯 Python 核心功能有限(无 capstone 反汇编精度、无 unicorn CPU 模拟、无 lief 完整 PE 解析);
reverify backends可确认当前激活的是哪套引擎。 - ⚠️ Protobuf/TLV 解析仅限 schema-less 场景:支持 protobuf wire-format 和 TLV 解析,但如果目标协议有复杂 schema(如完整 .proto 定义),reverify 不会帮你构建 schema,只做原始 wire 解析。
- ⚠️ emulate_result 仅支持 micro-level 模拟:unicorn 模拟是 CPU 级别(单函数级别),不是完整系统模拟,不适合分析涉及复杂 OS 交互的代码。
- ⚠️ v0.3.0 为当前版本:但项目仍处于快速迭代期,API 可能在 minor version 有变化;建议关注 PyPI 或 GitHub Releases 获取更新。
- ⚠️ MCP Server 的 verify tool 调用有 token 消耗:re_verify_claim 在循环中可能产生大量工具调用,注意 API 成本。
与同类对比
| 项目 | 核心思路 | AI 角色 | 验证机制 | 适用场景 |
|---|---|---|---|---|
| Reverify | 工具裁判 AI | 提出 claim | 确定性工具验证 VERIFIED/REFUTED | 需要grounded结果的AI辅助RE |
| Ghidra + AI | AI 辅助 Ghidra | 结构猜测 | 人工校验 | 传统RE工程师+AI辅助 |
| BinaryAI(腾讯) | AI 二进制匹配 | 结构识别 | 云端大模型+知识库 | 固件成分分析 |
| Capstone + 模型 | 纯反汇编+AI | 直接分析 | 无验证层 | 快速理解代码结构 |
| Frida + GPT | Hook+AI | 行为分析 | 无验证层 | 运行时行为探索 |
Reverify 的核心差异:工具验证层强制所有 AI 结论可复现,不依赖人工判断。
一句话推荐结论
Reverify 通过「模型提议 → 工具裁判」闭环,解决了 AI 逆向中最关键的 hallucination 问题,是首个将确定性 RE 工具链作为 AI 仲裁层的开源工具包,特别适合恶意软件分析和固件逆向场景,v0.3.0 已支持 MCP Server 与主流 Agent 直接集成。
⚠️ 备注:仅用于授权逆向研究,详细边界见 SECURITY.md。v0.3.0 性能建议通过 reverify backends 确认当前引擎状态,纯 Python 核心与 full 引擎之间能力有显著差距。