【技术实现步骤摘要】
一种抗编译差异的二进制代码相似性比较技术
本专利技术涉及二进制代码的相似性检测
和图卷积神经网络
主要核心是结合函数的语法、语义和结构三方面的特征,利用基于注意力机制的图卷积神经网络得到函数的语法图嵌入向量和语义图嵌入向量,并利用多层注意力机制聚合得到最终函数图嵌入向量,基于该向量进行最终的跨编译器、跨优化级别、跨程序版本以及混淆代码中的相似性检测。
技术介绍
代码相似性检测是指比较两个或更多的代码片段,来判断它们之间是否存在相似的代码,其中又可分为源代码相似性检测和二进制代码相似性检测。二进制代码相比源代码缺少了更多的符号信息,而且由于采用不同编译器、不同优化级别、不同程序版本、以及利用混淆技术等原因,导致二进制代码相似性检测的难度更大。二进制代码相似性检测可以应用到很多领域,如代码克隆检测、加密函数识别、恶意代码检测、恶意代码家族分类、漏洞搜索、安全补丁分析等领域。传统的方法大多基于Hash模糊匹配,最小子图匹配或者利用符号执行、污点分析等技术进行检测。最近几年开始出现利用基于机器学习的方法来用于相似性检测 ...
【技术保护点】
1.一种抗编译差异的二进制代码相似性比较技术,其特征在于,所诉方法包括以下步骤:/nA、对二进制文件进行反汇编,构建二进制函数属性控制流图,提取基本块的语法、语义信息;/nB、构建基本块嵌入向量生成模型,将提取的基本块语法、语义信息转换为数值向量;/nC、利用图嵌入网络分别针对函数的语法属性控制流图、语义属性控制流图进行训练,生成函数语法图嵌入向量和函数语义图嵌入向量;/nD、利用注意力机制聚合函数的语法图嵌入向量和语义图嵌入向量以生成最终的函数图嵌入;/nE、基于生成的图嵌入向量,进行函数间的相似性检测。/n
【技术特征摘要】
1.一种抗编译差异的二进制代码相似性比较技术,其特征在于,所诉方法包括以下步骤:
A、对二进制文件进行反汇编,构建二进制函数属性控制流图,提取基本块的语法、语义信息;
B、构建基本块嵌入向量生成模型,将提取的基本块语法、语义信息转换为数值向量;
C、利用图嵌入网络分别针对函数的语法属性控制流图、语义属性控制流图进行训练,生成函数语法图嵌入向量和函数语义图嵌入向量;
D、利用注意力机制聚合函数的语法图嵌入向量和语义图嵌入向量以生成最终的函数图嵌入;
E、基于生成的图嵌入向量,进行函数间的相似性检测。
2.根据权利要求1所述的一种抗编译差异的二进制代码相似性比较技术,其特征在于,所述的步骤A进一步包括如下步骤:
A1、所提取的语法特征包含8种:常数的个数、字符串的个数、转移指令的个数、调用指令的个数、基本块指令的个数、算数指令的个数、后继节点个数、介数中心性;
A2、所提取的语义特征为函数的汇编指令。
3.根据权利要求2所述的一种抗编译差异的二进制代码相似性比较技术,所述的步骤A2中提取的汇编指令还需要经过以下归一化处理:
A21、如果指令的操作数属于寄存器类型,根据寄存器占的大小分别归一化为“reg1”、“reg2”、“reg3”、“reg4”;
A22、如果指令的操作数属于立即数类型,则根据这个立即数是否属于字符串,如果属于,则用“STR”表示,否则用“HIMM”表示;
A23、如果操作数属于存储器类型,判断操作数是否基于基址寻址,如果不是则用“[MEM]”代替操作数,如果是基于基址且未结合索引寻址,则用“[“归一化的寄存器”+HIMM]”表示,否则用“[“归一化的寄存器”+index*HIMM+HIMM]”表示。
4.根据权利要求1所述的一种抗编译差异的二进制代码相似性比较技术,其特征在于,所述的步骤B进一步包括如...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。