创建他的思维模式:我将 AI 当做人,我告诉他方法论、文档、规范、知识库、总结、经验。AI智能的分析出用什么工具、手头有什么工具,如果我提供的工具不满足它的需求,要么它去安装,要么它基于基于已有工具写特定逆向目标的脚本。我沉淀了一套IDA脚本如何写、Frida如何用、Union如何用,什么时机用什么工具等等的本地知识库,所以我没关心过AI怎么去用它们,我训练他,我只要结果。
思维是道,工具是术,思维模式不同,越努力差异越大。
本文记录一种将大语言模型与专业二进制分析工具链深度结合的架构实践——Binary Analysis Agent。系统基于 OpenCode 的 Agent + Plugin 机制构建,让 AI 充当"分析编排器",通过标准化的工具脚本间接操作分析引擎,实现从自然语言到结构化分析结果的闭环。文章重点阐述设计哲学与架构决策,辅以关键实现细节,供安全研究人员参考和复现。
---
效果说明:1. 简单难度的算法很快就能逆向出来,难度99、100很慢,半天到一天能够逆向出来,破解算法生成注册机。2. 如果只破解不逆向算法,难度99、100也是很快的。
逆向过程视频:[AI自动逆向] 看雪 CTF 难度99 CORE CrackMe v2.0[AI自动逆向] 看雪 CTF 难度100 TencentPediyKeygenMe由于录像软件有问题,时不时会卡主。
Reverse中打对钩的是我运行AI去分析的题,这三个目前都解出来了:
选择二进制逆向工程作为 AI 能力的测试场,并非偶然,而是经过深思熟虑的结果。
逆向工程是工程领域的"全能铁人三项"。 它同时考验阅读理解(从机器码中还原逻辑)、抽象推理(识别算法模式、追踪数据流)、领域知识(密码学、操作系统、编译原理)和系统思维(将零散线索拼成完整图景)。一个 AI 能做好逆向,意味着它在上述每一项上都达到了可用的水平;反过来,任何一项的短板都会直接导致分析失败——没有蒙混过关的余地。
评判标准客观且严格。 逆向的结果对就是对、错就是错:注册机能不能算出正确的 Key,脱壳后能不能还原出可编译的代码,漏洞能不能实际触发。不存在"差不多""言之有理即可"的灰色地带。这比让 AI 写一篇总结或回答一个开放式问题,更能反映真实的智能水平。
难度可以精确调节。 从简单的 CrackMe 到混淆加固的商业软件,逆向目标的难度谱系极其宽广。这让我们能够精准地定位 AI 的能力边界——它到底卡在哪一步?是读不懂汇编、看不穿混淆、还是推理链条不够长?这种细粒度的诊断能力,是通用基准测试很难提供的。
对我的实际工作有直接价值。我日常就需要做逆向分析。如果 AI 能承担其中哪怕 30% 的重复性工作,生产力提升就是实实在在的。这比"AI 能不能通过图灵测试"这类学术问题有意义得多。
简单说:逆向工程是一道难题,而难题是最好的试金石。
---
现代二进制分析工具(如 IDA Pro、Ghidra 等)功能强大,但操作门槛高:分析师需要记忆大量 API、手动执行重复性操作、在反汇编/反编译视图间反复切换。与此同时,大语言模型具备理解自然语言和推理分析的能力,却无法直接操作专业工具。
这两者之间存在一个明确的鸿沟:AI 有推理能力但无工具操作能力,工具链有操作能力但无自主推理能力。
Binary Analysis Agent 的设计目标就是填补这条鸿沟——构建一套"AI 可调用的标准化工具接口",让 AI 模型作为编排器,根据用户自然语言描述的分析需求,自主选择并调用合适的工具操作,最终输出经过验证的分析结果。
---
系统基于 OpenCode 构建,利用其 Agent + Plugin 机制实现三件关键的事:
用户在 OpenCode 中用自然语言描述分析需求,Agent 自动接管后续所有操作——解析目标、收集信息、制定方案、调用工具、验证结果,全程输出进度和推理过程。
此外还有一个进化命令(Evolve),用于从实际分析复盘中发现改进点,经评估后按严格质量流程实施系统升级。
---
关键约束:依赖方向严格单向——基础设施 ← 业务工具 ← 共享分析 ← 操作脚本。禁止反向依赖和循环依赖。这条规则确保了每一层可以独立测试和演进,而不会因上游变更引发连锁故障。
---
这是整个系统最核心的设计决策。专业分析工具的 GUI 是为人类设计的交互界面,AI 无法也不应直接操作。系统利用分析引擎提供的命令行 headless 模式,通过 `-A -S"脚本路径"` 参数让分析引擎加载二进制文件后自动执行指定脚本。
所有分析操作都被封装为"无头"模式:脚本启动 → 等待分析完成 → 执行业务逻辑 → 输出 JSON 结果 → 退出进程。AI 只需要构造正确的命令行调用,就能获取结构化的分析数据。
系统强制要求分析型需求必须经过"信息收集 → 方案规划 → 执行监控"三阶段框架,不允许跳过任何阶段。AI 在拿到目标后不能直接开始调用工具,而是必须先输出完整方案(场景分类、计划步骤、预计耗时、每步失败后的切换方向),方案可见后方可执行。
这一规则的目的是防止 AI 在复杂分析中"走一步看一步"导致方向错误、反复重试。实践表明,先花 2 分钟规划,往往能节省 20 分钟的无效尝试。
Agent Prompt 是系统中非常宝贵的资源——它决定了 AI 的"注意力"分配。如果将所有规则、策略、细节都塞进主 Prompt,不仅占用上下文窗口,还会分散 AI 的注意力,导致分析质量下降。
系统采用"渐进式披露"策略:主 Prompt 控制在 500 行以内,只包含核心规则和触发条件。18 份知识库文档仅在特定场景下按需加载——检测到加壳才读取加壳处理策略,遇到密码学特征才读取密码学验证方案,需要生成脚本才读取脚本生成规范。
系统不会为了"完整性"而添加功能。每个新增的工具脚本、每条新增的 Prompt 描述都需要经过"四维度量"评估:是否能减少上下文占用、减少对话轮次、提升分析速度、提升结果准确度。
满足条件的脚本经过验证后"沉淀"到脚本库并注册索引。不满足条件的方案被明确拒绝——比如"给简单异或解密写脚本",因为 AI 自己就能完成这类计算,额外脚本只会增加系统复杂度。
系统内置了完整的结果验证框架,要求分析结论必须经过验证才能报告给用户。验证手段按可靠性分层:核心禁令:绝对禁止用自己重实现的代码验证自己的结论(作弊式验证)。验证必须让原始程序实际执行,从外部观察结果。
系统在技术栈选择上不绑定 Python——什么技术适合就用什么。内置了技术选型决策树:计算密集型(如暴力搜索、大数运算)用 C/C++(10-100 倍性能优势);算法验证优先模拟执行而非手动重实现;性能不确定时先用 Python 原型验证正确性,必要时转 C 加速。
同一分析方向连续失败 2 次即强制切换方向,不允许第三次尝试。Agent Prompt 中预定义了常见失败模式和对应的切换方向。累计耗时上限 120 分钟,防止陷入无限循环。
---
长对话中 AI 面临三类上下文丢失问题:规则丢失(多轮后不再遵守约束)、知识丢失(压缩后之前的分析结论消失)、环境丢失(每轮无法感知工具链状态)。
Agent
...(已截断)
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-291002.htm
【AI自动逆向算法】Binary Analysis Agent:构建AI驱动的二进制分析系统
266 浏览
10 回复
学习一下
学习
学习一下
感谢分享
mark
我要删掉它,怎么做?
最后于 2026-4-28 14:33
被ldljlzw编辑
,原因:
最后于 2026-4-28 14:33
被ldljlzw编辑
,原因:
感谢分享,11
我也要感谢分享
我也要感谢分享
这个好啊 自动化了