Reverify Skill:AI 逆向工程的「幻觉防火墙」,用确定性工具给模型结论上锁
Reverify Skill:AI 逆向工程的「幻觉防火墙」,用确定性工具给模型结论上锁
「AI 说这段代码是登录函数,置信度 98%」——但它真的读对了吗?LLM 在二进制逆向场景下的幻觉问题比源码阅读严重得多:结构体偏移量、函数边界、算法逻辑,AI 常常「编得像模像样」。Reverify 正是为解决这个痛点而生:让确定性工具成为裁判,模型只管猜测,工具负责验证。
功能与设计原则
Reverify 将 AI 与一个纯 Python 编写的逆向工程工具包配对,形成「模型提议 → 工具验证」的闭环。结构体声明、函数原型、算法行为——任何假设只有在被 PE/ELF/Mach-O 解析、反汇编、模拟执行或模式匹配验证后才会被采纳。核心原则只有一条:结论必须有证据支撑,而非置信度支撑。
认可度
Reverify 于 2026 年 9 月初新晋 GitHub Trending,登上 dev.to 每周 Trending 快照的「近 7 天新仓库」Top 8,一周内获得约 600 Star(截至 2026-09-03)。项目完全开源(MIT 协议),作者为 GitHub 用户 @2akouwu,专注于二进制分析工具开发。
链接
GitHub:https://github.com/2akouwu/reverify
原作者
GitHub 用户 2akouwu,专注于可验证的 AI 辅助逆向工程工具,Reverify 是其核心项目。
介绍
LLM 在阅读源码方面表现出色,但在逆向工程任务上并不可靠。当要求模型从二进制中重构结构体或算法时,它会自信地编造偏移量、大小和行为——尤其在二进制分析中,幻觉问题比源码阅读严重得多。「模型是否在凭空捏造?」是真正将 AI 用于逆向工程的最大障碍。
Reverify 的解决方案清晰直接:配对 LLM 与确定性逆向工具包,让工具成为裁判。模型提出假设,工具负责验证。关于结构体或算法的声明只有在与实际字节比对后才会被报告——通过反汇编、模式匹配或模拟器执行——确保输出锚定在二进制而非模型的想象中。
特点
- 确定性核心:纯 Python 实现 PE/ELF/Mach-O 解析、x86/x64/ARM/ARM64 反汇编、AOB 模式扫描、CPU 模拟、Protobuf/TLV 解析、Frida hook 生成,无需 Ghidra
- 可选成熟引擎:
pip install "reverify[full]"可升级至 capstone(反汇编)、unicorn(CPU 模拟)和 lief(跨格式解析);未安装时自动回退纯 Python 核心 - 有据可查,非空谈:结构体声明必须通过工具验证后才被采纳
- Agent 原生:内置 MCP Server,Claude Code、Cursor 等 Agent 可直接调用;也有纯 CLI 模式
- 零依赖运行:从 Git checkout 直接运行,纯标准库,无需 pip 安装
使用方法
安装 CLI + MCP Server(从 PyPI):
pip install reverify # 纯 Python 核心
pip install "reverify[full]" # 含 capstone+unicorn+lief
# 自动分析二进制
reverify auto sample.bin --json
# 检查特定声明
reverify verify sample.bin --claim '{
"kind": "instructions",
"offset": 4096,
"mnemonics": ["push", "mov", "sub"],
"note": "function prologue"
}'
# 从 checkout 直接运行(零安装)
python reverify/cli.py auto sample.bin --json
查看活跃后端:reverify backends
使用场景与人群
- 安全研究人员:恶意软件分析、CTF 比赛
- 逆向工程师:闭源软件互操作性研究、固件分析
- AI 安全评估者:评估 LLM 在二进制分析任务中的幻觉率
- LLM 应用开发者:为 AI 逆向工具包构建可验证输出层
⚠️ 注意事项:Reverify 仅限授权逆向工程用途,包括恶意软件分析、CTF、互操作性研究及你拥有或被允许分析的软件。
输入与输出案例
案例 1:验证结构体声明
输入(声明):offset=4096 处是一个函数序言(push + mov + sub)
reverify verify sample.bin --claim '{"kind":"instructions","offset":4096,"mnemonics":["push","mov","sub"]}'
输出:VERIFIED / REFUTED / INCONCLUSIVE + 实际观察到的字节
案例 2:验证重构算法行为
输入(声明):某段代码执行后 eax 寄存器值为 8
reverify verify - --claim '{"kind":"emulate_result","code":"b805000000b90300000001c8c3","arch":"x86","expect_registers":{"eax":8}}'
输出:VERIFIED + 模拟执行的实际寄存器状态
评论区
登录后可评论。