1.本发明涉及计算机软件技术领域,尤其涉及一种二进制可执行文件同源分析方法、计算机设备及存储介质。
背景技术:
2.二进制代码同源检测是软件工程领域和程序安全领域是一项重要的技术, 用于检测两个给定的二进制片段是否相似,已被广泛应用于漏洞搜索、恶意代码识别、补丁分析和抄袭检测等软件安全分析任务中。目前该技术主要包括以下几种方式:1、以商业反汇编工具(bindiff)为代表,采用函数原始字节哈希、函数调用图、控制流图结构、字符串作为特征,使用多种启发式算法进行匹配;这些方法主要是对控制流或数据流图同构或图分解算法计算相似度,并用匈牙利算法进行匹配,当他们使用的特征出现偏差时,例如不同编译优化选项引入偏差,可能会其结果造成较大影响。
3.2、将近年来的机器学习方法应用到二进制代码同源检测工作中,通过手动选择特征使用图神经网络进行函数匹配,这些方法需要手动选择二进制特征,对用户的专业技术要求非常高,并且选择的二进制特征范围有限,难以充分捕获二进制代码片段的语义。
4.3、将自然语言处理方法应用到二进制代码同源检测中,这些方法不需要任何的先验证选择特征,而是采用无监督的学习算法自动提取二进制代码片段的语义并生成语义表示进行同源性检测,然而他们需要把自然语言处理技术直接用到二进制代码同源检测中,忽视了二进制代码和自然语言的差异,从而带来误差。
5.鉴于此,研究一种测试效果好、运行速度快和鲁棒性强的二进制可执行文件同源分析方法、计算机设备及存储介质是本技术领域人员急需解决的技术问题。
技术实现要素:
6.为解决上述技术问题,本发明提供的一种二进制可执行文件同源分析方法,所述方法包括以下步骤:s1、利用反汇编工具将二进制可执行文件转换成汇编代码,并基于汇编代码生成二进制可执行文件对应的函数控制流图;s2、利用自然语言处理的双向多层转换编码器将汇编代码和函数控制流图的基本块分别映射到高维向量上以生成对应的指令向量,并基于所生成的指令向量获取对应函数控制流图的基本块向量;s3、基于步骤s2中函数控制流图的基本块向量生成对应的函数语义向量,并将函数语义向量输入预设神经网络模型中得到高维向量空间中函数控制流图的函数向量矩阵;s4、将函数控制流图的函数向量矩阵进行矩阵相乘后按照从大到小进行排序,进而获取相似函数对,利用相似函数对查找即可得到匹配结果。
7.上述的二进制可执行文件同源分析方法,所述反汇编工具为ida pro反汇编器。
8.上述的二进制可执行文件同源分析方法,所述函数控制流图的基本块由二进制可
执行文件的指令序列组成。
9.上述的二进制可执行文件同源分析方法,所述高维向量为128维向量。
10.上述的二进制可执行文件同源分析方法,所述步骤s3中的预设神经网络模型为有监督训练的神经网络模型,其训练过程为:首先编译生成具有调试信息的二进制可执行文件,根据二进制可执行文件的调试信息得到对应函数名称并生成训练集,利用所生成的训练集对神经网络模型进行训练,直至来自同一源代码且名称相同的函数所映射得到的向量在128维向量空间中距离相近,进而得到预设神经网络模型。
11.上述的二进制可执行文件同源分析方法,所述步骤s4的具体实现方式为:将每一个函数控制流图的函数向量矩阵中的所有向量进行单位化以使对应向量的模长为1,然后将单位化处理后函数向量矩阵进行矩阵相乘,再将相乘后的矩阵中每一列均按照从大到小排序以获取相似函数对,最后利用所生成的相似函数对查找即可得到匹配结果。
12.上述的二进制可执行文件同源分析方法,所述步骤s4中的矩阵相乘用公式表示为:
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1)式(1)中,表示其中第个二进制文件对应单位化处理后的函数向量矩阵,表示其中第个二进制文件对应单位化处理后的函数向量矩阵,其中,表示单位化处理后的两个函数向量矩阵相乘后的结果,表示矩阵转置。
13.本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述二进制可执行文件同源分析方法的步骤。
14.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述所述二进制可执行文件同源分析方法的步骤。
15.与现有技术相比,本发明将自然语言处理的双向多层转换编码器应用到汇编代码语言的语义生成上,通过在同维度的高维向量空间中生成对应的指令向量和基本块向量,并使用预设神经网络模型将函数控制流图与基本块向量结合得到二进制可执行文件对应的函数语义向量,再基于矩阵相乘处理获取相似函数对,利用相似函数对查找即可实现二进制可执行文件的同源分析,具有鲁棒性强、运行速度快和同源分析测试结果好的特点。
附图说明
16.图1是本发明中二进制可执行文件同源分析方法的流程图。
具体实施方式
17.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
18.如图1所示,图1示出了所述二进制可执行文件同源分析方法的具体流程。
19.在其中一个实施例中,一种二进制可执行文件同源分析方法,所述方法包括以下步骤:
s1、利用反汇编工具将二进制可执行文件转换成汇编代码,并基于汇编代码生成二进制可执行文件对应的函数控制流图(control flow graph, cfg),其中,所述反汇编工具为ida pro反汇编器(interactive disassembler professional,交互式反汇编器专业版,它是一种典型的递归下降反汇编器);s2、利用自然语言处理的双向多层转换编码器将汇编代码和函数控制流图的基本块分别映射到高维向量上以生成对应的指令向量,并基于所生成的指令向量获取对应函数控制流图的基本块向量,其中,所述函数控制流图的基本块由二进制可执行文件的指令序列组成,高维向量为128维向量;s3、基于步骤s2中函数控制流图的基本块向量生成对应的函数语义向量,并将函数语义向量输入预设神经网络模型中得到高维向量空间中函数控制流图的函数向量矩阵;本步骤中,预设神经网络模型使用时无需再次进行训练,有效提高了运行速度,所述预设神经网络模型为有监督训练的神经网络模型,其训练过程为:首先编译生成具有调试信息的二进制可执行文件(编译时采用-g的编译选项),根据二进制可执行文件的调试信息得到对应函数名称并生成训练集,利用所生成的训练集对神经网络模型进行训练,直至来自同一源代码且名称相同的函数所映射得到的向量在128维向量空间中距离相近,进而得到预设神经网络模型。
20.需要说明的是,本步骤中,函数语义向量输入预设神经网络后,通过预设神经网络将包含基本块向量的函数控制流图映射到同维度的高维向量空间的数值向量上,得到同维度下函数控制流图的函数向量矩阵。
21.s4、将函数控制流图的函数向量矩阵进行矩阵相乘后按照从大到小进行排序,进而获取相似函数对,利用相似函数对查找即可得到匹配结果,具体为:将每一个函数控制流图的函数向量矩阵中的所有向量进行单位化以使对应向量的模长为1,然后将单位化处理后函数向量矩阵进行矩阵相乘,再将相乘后的矩阵中每一列均按照从大到小排序以获取相似函数对,最后利用所生成的相似函数对查找即可得到匹配结果。
22.本步骤中,所述矩阵相乘用公式表示为:
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1)式(1)中,表示其中第个二进制文件对应单位化处理后的函数向量矩阵,表示其中第个二进制文件对应单位化处理后的函数向量矩阵,其中,表示单位化处理后的两个函数向量矩阵相乘后的结果,表示矩阵转置;如:给定两个二进制可执行文件a和b;是二进制可执行文件a中所有函数的向量组成的向量矩阵,是二进制可执行文件b中所有函数的向量组成的向量矩阵,分别对和中的向量进行单位化(单位化是指将向量中每一维的值都除以向量的模长,使单位化处理后的向量的模长为1),得到和;然后将单位化处理后的单位向量矩阵和相乘,得到相乘后的向量矩阵,对向量矩阵中的每一列进行从大到小排序,即将函数相似度从高到低进行排序,然后按照编号即可获取相对应的函数,得到相似函数对,利用相似函数对查找即可得到匹配结果。
23.综上所述,本实施例中,所述二进制可执行文件同源分析方法将自然语言处理的
双向多层转换编码器应用到汇编代码语言的语义生成上,通过在同维度的高维向量空间中生成对应的指令向量和基本块向量,并使用预设神经网络模型将函数控制流图与基本块向量结合得到二进制可执行文件对应的函数语义向量,再基于矩阵相乘处理获取相似函数对,利用相似函数对查找即可实现二进制可执行文件的同源分析。
24.再一方面,本实施例提出的计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述一种二进制可执行文件同源分析方法的步骤,该计算机设备可以是手机、平板、移动电脑等一切能够实现二进制可执行文件同源分析的计算机设备。
25.最后,本实施例提出的计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述二进制可执行文件同源分析方法的步骤。
26.由于前述的计算机设备及计算机可读存储介质均包含前述的二进制可执行文件同源分析方法,因此,也具备该二进制可执行文件同源分析方法的有益效果,在此不再赘述。
27.以上对本发明所提供的一种二进制可执行文件同源分析方法、计算机设备及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
技术特征:
1.二进制可执行文件同源分析方法,其特征在于,所述方法包括以下步骤:s1、利用反汇编工具将二进制可执行文件转换成汇编代码,并基于汇编代码生成二进制可执行文件对应的函数控制流图;s2、利用自然语言处理的双向多层转换编码器将汇编代码和函数控制流图的基本块分别映射到高维向量上以生成对应的指令向量,并基于所生成的指令向量获取对应函数控制流图的基本块向量;s3、基于步骤s2中函数控制流图的基本块向量生成对应的函数语义向量,并将函数语义向量输入预设神经网络模型中得到高维向量空间中函数控制流图的函数向量矩阵;s4、将函数控制流图的函数向量矩阵进行矩阵相乘后按照从大到小进行排序,进而获取相似函数对,利用相似函数对查找即可得到匹配结果。2.如权利要求1所述的二进制可执行文件同源分析方法,其特征在于,所述反汇编工具为ida pro反汇编器。3.如权利要求2所述的二进制可执行文件同源分析方法,其特征在于,所述函数控制流图的基本块由二进制可执行文件的指令序列组成。4.如权利要求3所述的二进制可执行文件同源分析方法,其特征在于,所述高维向量为128维向量。5.如权利要求4所述的二进制可执行文件同源分析方法,其特征在于,所述步骤s3中的预设神经网络模型为有监督训练的神经网络模型,其训练过程为:首先编译生成具有调试信息的二进制可执行文件,根据二进制可执行文件的调试信息得到对应函数名称并生成训练集,利用所生成的训练集对神经网络模型进行训练,直至来自同一源代码且名称相同的函数所映射得到的向量在128维向量空间中距离相近,进而得到预设神经网络模型。6.如权利要求5所述的二进制可执行文件同源分析方法,其特征在于,所述步骤s4的具体实现方式为:将每一个函数控制流图的函数向量矩阵中的所有向量进行单位化以使对应向量的模长为1,然后将单位化处理后函数向量矩阵进行矩阵相乘,再将相乘后的矩阵中每一列均按照从大到小排序以获取相似函数对,最后利用所生成的相似函数对查找即可得到匹配结果。7.如权利要求6所述的二进制可执行文件同源分析方法,其特征在于,所述步骤s4中的矩阵相乘用公式表示为:
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1)式(1)中,表示其中第个二进制文件对应单位化处理后的函数向量矩阵,表示其中第个二进制文件对应单位化处理后的函数向量矩阵,其中,表示单位化处理后的两个函数向量矩阵相乘后的结果,表示矩阵转置。8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述二进制可执行文件同源分析方法的步骤。9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述二进制可执行文件同源分析方法的步骤。
技术总结
本发明具体公开了一种二进制可执行文件同源分析方法、计算机设备及存储介质,所述方法包括:生成二进制可执行文件对应的函数控制流图;在高维向量空间中生成对应的指令向量和基本块向量;基于预设神经网络模型获取同维度的函数向量矩阵;将函数向量矩阵进行矩阵相乘后并按照从大到小进行排序,进而获取相似函数对,利用相似函数对进行查找即可得到匹配结果。本发明将自然语言处理的双向多层转换编码器应用到汇编代码语言的语义生成上,通过在同维度的高维向量空间中生成对应的指令向量和基本块向量,并将函数控制流图与基本块向量结合得到对应的函数语义向量,基于相似函数对查找实现同源分析,具有鲁棒性强、运行速度快和测试效果好的特点。测试效果好的特点。测试效果好的特点。
技术研发人员:吴潇 杨智霖 鲁俊
受保护的技术使用者:湖南泛联新安信息科技有限公司
技术研发日:2022.04.24
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-6862.html