1. 论文背景与研究意义
二进制代码相似性分析(Binary Code Similarity Analysis, BCSA)是当前网络安全和软件工程领域的重要研究方向。这项技术通过比较不同二进制文件之间的相似度,在恶意软件检测、漏洞挖掘、软件成分分析等场景中发挥着关键作用。
传统BCSA方法主要分为两类:函数级分析和程序级分析。函数级BCSA通过逐个比较二进制文件中的函数来判断相似性,这种方法虽然精确,但时间复杂度高达O(nm³),其中n是文件比较次数,m是单个文件的函数数量。当面对海量二进制文件时,这种方法的计算开销变得难以承受。
腾讯安全实验室与上海科技大学联合提出的KEENHash方法,创新性地利用大语言模型(LLM)生成函数嵌入向量,将整个二进制文件压缩为一个固定长度的紧凑表示。这种方法不仅大幅提升了分析效率,还保持了较高的准确率,已经在腾讯BinaryAI平台实现规模化应用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键技术解析
2.1 函数提取与预处理
KEENHash的第一步是从二进制文件中提取函数信息。与传统方法直接处理汇编代码不同,KEENHash选择使用Ghidra逆向工具将二进制代码反编译为类C伪代码。这种中间表示具有两大优势:
- 架构无关性:屏蔽了不同CPU架构(如x86、ARM)的指令集差异
- 高级抽象:更接近源代码的表示形式,便于后续的语义分析
在模型训练阶段,研究人员构建了一个包含源函数和伪函数的匹配数据集:
- 源函数:从GitHub开源C/C++项目中提取,使用Tree-Sitter解析器处理
- 伪函数:通过编译源项目生成二进制文件后反编译获得
- 关联匹配:利用调试信息建立源函数与伪函数的1-n映射关系
提示:这种"源代码-二进制"的配对数据集构建是KEENHash的创新之一,为后续的对比学习提供了高质量的监督信号。
2.2 函数嵌入模型设计
KEENHash的核心是函数嵌入模型,它需要将语义相似的函数映射到向量空间中相近的位置。论文采用了基于Pythia-410M(4.1亿参数)的Transformer模型,通过对比学习进行微调。
对比学习的核心思想是:
- 正样本:匹配的源函数-伪函数对
- 负样本:不匹配的随机组合
- 目标:最大化正样本相似度,最小化负样本相似度
具体实现采用了CLIP(C
