现实困境:没有源码的二进制像本“无注释天书”

你家里的智能路由器、孩子的智能手表,背后都藏着一串0和1组成的二进制代码——但多数厂商不会公开源码,这串代码就成了一本没有标题、没有注释、甚至没有标点的天书。网络安全专家要找固件漏洞,只能对着这串天书“猜谜”:编译器优化抹去了变量名和函数注释,恶意代码作者还会用混淆技术让同一功能的二进制变得面目全非。比如检测恶意代码变种时,传统签名匹配法对混淆后的代码束手无策;IoT设备固件分析中,缺乏源码让安全人员“无从下手”。这种“语义黑箱”困境,成了网络安全和软件逆向工程领域的“卡脖子”难题。


技术核心:“特征提取+向量嵌入”破解语义密码

AI如何突破这一困境?论文指出,核心是特征选择特征嵌入双轮驱动,就像先从天书里提取关键线索,再把线索翻译成机器能懂的语言:

  • 特征选择:从多角度拆解“天书”
    二进制代码的特征可分为九类,每类都是理解语义的“钥匙”:

    • 语法特征汇编指令的词法结构(比如“mov”“add”等指令),像天书中的“词汇”;
    • 统计特征:指令数量、基本块大小等数值指标(比如PatchEcko的48维静态特征),像词频统计;
    • 控制流特征:CFG(控制流图)的执行路径,像书的章节跳转结构;
    • 数据流特征:DFG(数据流图)的数据依赖关系,像情节中人物的关联;
    • 符号特征:用数学逻辑表示指令(比如“a+b=c”),像书里的公式推导;
    • 动态特征:运行时的内存访问痕迹,像书的实际阅读轨迹。
      这些特征通过六种形式构造:文本序列(汇编指令串)、数值统计(向量)、拓扑图(ACFG)、函数调用序列(API链)、字符串/常量、动态轨迹(运行日志)。比如Codee用node2vec对指令序列随机游走采样,再用Skip-Gram嵌入操作数和 opcode,像把词汇编成密码本。
  • 特征嵌入:把线索翻译成“机器语言”
    有了线索,AI需要把它们转化为向量:

    • 文本嵌入:用BERT(如PalmTree)或Transformer(如MIRROR)处理指令序列,把“词汇”变成有语义的向量;
    • 图嵌入:用GCN(如XBA)或Tree-LSTM(如Asteria)分析拓扑图,把“章节结构”变成向量;
    • 融合嵌入:结合两者优势,比如VulHawk用RoBERTa生成指令向量作为ACFG节点属性,再用GCN学习图结构,像同时读文字和章节大纲;
    • 其他方法:比如αDiff把二进制字节排成“像素图”,用CNN检测恶意代码,像通过书的排版风格识别作者。


落地场景:从跨架构分析到恶意代码识别的实战突破

这些技术已解决多个实际问题:

  • 跨架构漏洞检测:MIRROR用Transformer把x86和ARM指令映射到同一向量空间,让跨架构分析像“翻译”不同语言的书,准确率提升20%;
  • 恶意代码变种识别:BinDiffNN用注意力机制忽略基本块重排的小变化,聚焦语义核心,对混淆后的代码识别率达92%;
  • 固件漏洞搜索:VulHawk结合RoBERTa和GCN,在10万固件样本中找到12个未公开漏洞,速度比传统方法快10倍;
  • 函数相似性检测:Codee用tensor分解压缩特征,在百万级函数库中匹配相似函数,耗时仅0.1秒/次。


未来挑战:多模态融合大模型开启新篇章

尽管技术已突破,但仍面临四大挑战:

  • 多模态融合:如何结合文本、图、动态轨迹等多模态特征,像同时用文字、图片、音频理解一本书,避免信息冗余;
  • 大模型应用:目前大模型在二进制领域应用较少,需训练专门处理二进制数据的大模型,像训练一个能读所有语言天书的超级翻译官;
  • 可解释性:AI生成的向量是“黑箱”,需让模型解释“为什么判定这段代码有漏洞”,像让翻译官说明翻译依据;
  • 下游任务扩展变量类型恢复函数名预测等任务精度仍需提升,比如让AI从二进制中恢复“user_password”这样的变量名,更贴近人类理解。

来源: FESE Message