二进制函数相似度检测方法、装置、电子设备及存储介质与流程

未命名 10-08 阅读:74 评论:0


1.本技术涉及威胁检测技术领域,具体而言,涉及一种二进制函数相似度检测方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机技术和网络技术的快速发展,恶意代码已经成为互联网中的一大隐患。恶意代码的存在和传播给用户带来了巨大的安全风险,同时也给整个互联网的安全带来了威胁。为了解决这个问题,近年来涌现出了一批针对恶意代码的分析技术。因为对于恶意代码来说,我们无法得到其源代码进行分析,所以只能基于现实中可获取到的形式比如二进制代码来分析其功能,所以基于二进制代码的分析技术是一种比较有效的方法,它可以对恶意代码进行深入的分析和检测。
3.现有的二进制代码的分析方法可将跨平台的检测方法可以分为基于中间表示的检测方法和基于特征学习的检测方法两类,而基于中间表示的检测方法需要复杂的中间形式表示和转化过程,缺少对实际代码语义的考量;而现有的基于特征学习的检测方法需要人工确定基本块的统计特征属性,人工进行特征选取的过程对先验知识有着很强的依赖,选择的特征可能并不准确,会引入人为误差。


技术实现要素:

4.本技术实施例的目的在于提供一种二进制函数相似度检测方法、装置、电子设备及存储介质,通过学习基本块内指令的语义信息避免了人工选取特征存在的误差问题,实现了基于语义的跨平台相似度检测,解决了现有方法由于人工选取统计特征导致语义信息丢失和引入人为误差的问题。
5.本技术实施例提供了一种二进制函数相似度检测方法,所述方法包括:
6.对两个待测函数进行预处理;
7.获取两个待测函数的基本块集合;
8.利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。
9.在上述实现过程中,利用函数级跨平台模型实现基于语义的跨平台二进制函数的相似性检测,该模型通过学习基本块内指令的语义信息避免了人工选取特征存在的问题,解决了现有方法由于人工选取统计特征导致语义信息丢失和引入人为误差的问题。
10.进一步地,所述对两个待测函数进行预处理,包括:
11.对所述待测函数进行反汇编;
12.对反汇编后的二进制函数进行汇编指令标准化处理,以利用预设规则对所述二进制函数中的汇编指令进行替换处理。
13.在上述实现过程中,对反汇编后的二进制函数进行汇编指令标准化处理,减少了oov问题发生的概率。
14.进一步地,所述利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,包括:
15.对两个待测函数的基本块列表进行去重;
16.根据基本块内汇编指令的数量对去重后的列表按照从大到小的顺序进行排序;
17.比较排序后的两个基本块列表中的基本块数量,确定数量多的基本块列表为baselist,数量少的基本块列表为cmplist;
18.遍历baselist,获得未进行对比的基本块baseblock;
19.遍历cmplist,取出未被标记的基本块cmpblock;
20.判断基本块baseblock和基本块cmpblock的指令数量之差是否大于预设阈值;
21.若否,则将所述基本块baseblock和基本块cmpblock输入所述基本块级跨平台模型,获得相似结果;
22.若所述基本块baseblock和基本块cmpblock相似,则对所述基本块baseblock和基本块cmpblock进行标记,并将相似对的数量加1;
23.在基本块列表baselist全部被比对或基本块列表cmplist全部被标记后,计算相似度结果:
[0024][0025]
其中,sn表示相似对的数量,和分别表示待测函数去重后基本块的数量。
[0026]
在上述实现过程中,使用已构建的基本块级跨平台模型进行两个待测函数中存在的基本块的相似度比较,再利用基于块内语义的函数相似性分析算法判断两个待测函数的相似度。
[0027]
进一步地,所述方法还包括对所述基本块级跨平台模型进行训练:
[0028]
将经过预处理的训练数据对word2vec进行训练,以生成指令级嵌入向量;
[0029]
基于所述指令级嵌入向量对lstm孪生网络进行训练,以生成基本块级嵌入向量。
[0030]
在上述实现过程中,将预处理的训练数据利用word2vec转化为指令级嵌入向量,利用lstm孪生网络生成基本块级嵌入向量,即实现了能够利用lstm孪生网络生成基本块级嵌入向量表示。
[0031]
进一步地,所述将经过预处理的训练数据对word2vec进行训练,以生成指令级嵌入向量,包括:
[0032]
获取两个预处理后的训练函数;
[0033]
对于任意基本块b,相应地指令基本块α(b)可表示为:
[0034]
α(b)={b1,b2,

,bn};
[0035]
其中,bi表示基本块中的任意一条汇编指令,且汇编指令之间具有固定执行顺序;
[0036]
任意所述训练函数f包括多个基本块,对应的基本块函数α(f)可表示为:
[0037]
α(f)={b1,b2,

,bn};
[0038]
其中,bi表示二进制函数中包含的基本块;
[0039]
将所述基本块函数输入word2vec进行训练,生成指令级嵌入向量。
[0040]
在上述实现过程中,训练过程中,通过将统一化处理后的汇编指令训练集输入word2vec模型进行训练得到汇编指令语义模型。
[0041]
本技术实施例提供一种二进制函数相似度检测装置,所述装置包括:
[0042]
预处理模块,用于对两个待测函数进行预处理;
[0043]
基本块集合获取模块,用于获取两个待测函数的基本块集合;
[0044]
相似度比较模块,用于利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。
[0045]
在上述实现过程中,利用函数级跨平台模型实现基于语义的跨平台二进制函数的相似性检测,该模型通过学习基本块内指令的语义信息避免了人工选取特征存在的问题,解决了现有方法由于人工选取统计特征导致语义信息丢失和引入人为误差的问题。
[0046]
进一步地,所述预处理模块包括:
[0047]
反汇编模块,用于对所述待测函数进行反汇编;
[0048]
标准化处理模块,用于对反汇编后的二进制函数进行汇编指令标准化处理,以利用预设规则对所述二进制函数中的汇编指令进行替换处理。
[0049]
在上述实现过程中,对反汇编后的二进制函数进行汇编指令标准化处理,减少了oov问题发生的概率。
[0050]
进一步地,所述相似度比较模块包括:
[0051]
去重模块,用于对两个待测函数的基本块列表进行去重;
[0052]
排序模块,用于根据基本块内汇编指令的数量对去重后的列表按照从大到小的顺序进行排序;
[0053]
数量确定模块,用于比较排序后的两个基本块列表中的基本块数量,确定数量多的基本块列表为baselist,数量少的基本块列表为cmplist;
[0054]
第一遍历模块,用于遍历baselist,获得未进行对比的基本块baseblock;
[0055]
第二遍历模块,用于遍历cmplist,取出未被标记的基本块cmpblock;
[0056]
阈值判断模块,用于判断基本块baseblock和基本块cmpblock的指令数量之差是否大于预设阈值;
[0057]
相似结果获取模块,用于若否,则将所述基本块baseblock和基本块cmpblock输入所述基本块级跨平台模型,获得相似结果;
[0058]
标记模块,用于若所述基本块baseblock和基本块cmpblock相似,则对所述基本块baseblock和基本块cmpblock进行标记,并将相似对的数量加1;
[0059]
相似度结果计算模块,用于在基本块列表baselist全部被比对或基本块列表cmplist全部被标记后,计算相似度结果:
[0060][0061]
其中,sn表示相似对的数量,和分别表示待测函数去重后基本块的数量。
[0062]
在上述实现过程中,使用已构建的基本块级跨平台模型进行两个待测函数中存在的基本块的相似度比较,再利用基于块内语义的函数相似性分析算法判断两个待测函数的相似度。
[0063]
本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行上述中任一项所述的二进制函数相似度检测方法。
[0064]
本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的二进制函数相似度检测方法。
附图说明
[0065]
为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0066]
图1为本技术实施例提供的一种二进制函数相似度检测方法的流程图;
[0067]
图2为本技术实施例提供的整体检测流程图;
[0068]
图3为本技术实施例提供的预处理流程图;
[0069]
图4为本技术实施例提供的相似度比较流程图;
[0070]
图5为本技术实施例提供的基本块级跨平台模型的训练流程图;
[0071]
图6为本技术实施例提供的指令级嵌入向量的生成过程示意图;
[0072]
图7为本技术实施例提供的基本块级嵌入向量的生成过程示意图;
[0073]
图8为本技术实施例提供的lstm孪生网络结构示意图;
[0074]
图9为本技术实施例提供的一种二进制函数相似度检测装置的结构框图;
[0075]
图10为本技术实施例提供的另一种二进制函数相似度检测装置的结构框图。
[0076]
图标:
[0077]
100-预处理模块;101-反汇编模块;102-标准化处理模块;200-基本块集合获取模块;300-相似度比较模块;301-去重模块;302-排序模块;303-数量确定模块;304-第一遍历模块;305-第二遍历模块;306-阈值判断模块;307-相似结果获取模块;308-标记模块;309-相似度结果计算模块;400-基本块级跨平台模型训练模块。
具体实施方式
[0078]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
[0079]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0080]
实施例1
[0081]
请参看图1,图1为本技术实施例提供的一种二进制函数相似度检测方法的流程图。该方法提出了一个基于代码语义信息的跨x86和arm平台的二进制函数同源相似性检测
模型,解决了跨平台相似度检测的问题,同时针对现有的基于特征学习的跨平台二进制函数级别检测方法由于人工选取统计特征导致语义信息丢失和引入人为误差的问题,该模型通过学习基本块内指令的语义信息,避免了人工选取特征存在的问题。
[0082]
该方法具体包括以下步骤:
[0083]
步骤s100:对两个待测函数进行预处理;
[0084]
步骤s200:获取两个待测函数的基本块集合;
[0085]
步骤s300:利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。
[0086]
如图2所示,为整体检测流程图,在模型构建阶段,通过开源组件的交叉编译获取用于训练的数据集,然后对汇编指令进行标准化处理。将经过处理的数据输入孪生网络用于基本块级跨平台模型的训练,再通过基于块内语义的函数相似性分析算法实现函数级别的跨平台检测模型构建。
[0087]
其中,如图3所示,为预处理流程图,步骤s100具体包括以下步骤:
[0088]
步骤s101:对所述待测函数进行反汇编;
[0089]
步骤s102:对反汇编后的二进制函数进行汇编指令标准化处理,以利用预设规则对所述二进制函数中的汇编指令进行替换处理。
[0090]
汇编指令标准化处理,即通过一定的预处理规则,对二进制函数中的汇编指令进行替换处理,以减少在函数语义信息编码阶段的指令级嵌入向量生成过程中发生oov问题的概率。由于反汇编得到的二进制函数指令中存在大量立即数和寄存器等信息,在使用词向量模型进行嵌入生成的过程中会频繁产生oov的问题,因此通过一定规则对“罕见”指令元素进行替换,使二进制汇编指令的数量保持在一定规模范围内,从而减少oov问题发生的概率。
[0091]
如图4所示,为相似度比较流程图,步骤s300具体包括以下步骤:
[0092]
步骤s301:对两个待测函数的基本块列表进行去重;
[0093]
对输入的两个待测函数的基本块列表list1和list2去重,去重后分别得到列表tmplist1和tmplist2。
[0094]
步骤s302:根据基本块内汇编指令的数量对去重后的列表按照从大到小的顺序进行排序;
[0095]
根据基本块内汇编指令的数量对去重后的列表从大到小排序得到blocksortlist1和blocksortlist2。
[0096]
步骤s303:比较排序后的两个基本块列表中的基本块数量,确定数量多的基本块列表为baselist,数量少的基本块列表为cmplist;
[0097]
初始化表示基本块相似对数量的即counter=0。
[0098]
步骤s304:遍历baselist,获得未进行对比的基本块baseblock;
[0099]
具体地,按顺序遍历baselist,取出未进行对比的基本块baseblock;如果全部遍历完毕,执行步骤s309。
[0100]
步骤s305:遍历cmplist,取出未被标记的基本块cmpblock;
[0101]
判断cmplist中的基本块是否已经全部被标记,如果存在未被标记的,则遍历cmplist,如果全部被标记,则执行步骤s309。
[0102]
遍历cmplist,取出当前遍历到的基本块cmpblock;若本轮遍历完毕,则执行步骤s304。
[0103]
判断当前遍历到的基本块cmpblock是否已经被标记,如果已经被标记,则继续本轮遍历cmplist,执行步骤:遍历cmplist,取出当前遍历到的基本块cmpblock;如果未被标记则继续执行步骤s306。
[0104]
步骤s306:判断基本块baseblock和基本块cmpblock的指令数量之差是否大于预设阈值;
[0105]
若是,则此次对比结束,继续执行当前对cmplist的遍历,返回步骤:遍历cmplist,取出当前遍历到的基本块cmpblock。
[0106]
步骤s307:若否,则将所述基本块baseblock和基本块cmpblock输入所述基本块级跨平台模型,获得相似结果;
[0107]
在预测阶段,将待对比的基本块对分别输入基本块级跨平台模型中的lstm子网,其具体内容为两个基本块的指令级嵌入向量,两个序列分别利用子网处理,最终每个lstm子网最后一步输出为基本块的嵌入向量表示,得到两个基本块嵌入向量后使用manhattan距离(∈[0,1])作为相似度判断的依据。具体相似度计算公式为:
[0108]
sim(f1,f2)=exp(-||v
1-v2||);
[0109]
其中,f1和f2分别表示待测函数,v1和v2分别表示所述待测函数对应的基本块嵌入向量;
[0110]
步骤s308:若所述基本块baseblock和基本块cmpblock相似,则对所述基本块baseblock和基本块cmpblock进行标记,并将相似对的数量加1;
[0111]
具体地,若相似,则标记两个基本块,基本块相似对数counter加1,本次baseblock的对比结束,继续本轮对baselist的遍历,执行步骤s304;若不相似,则继续执行本轮对cmplist的遍历,执行步骤:遍历cmplist,取出当前遍历到的基本块cmpblock。
[0112]
步骤s309:在基本块列表baselist全部被比对或基本块列表cmplist全部被标记后,计算相似度结果:
[0113][0114]
其中,sn表示相似对的数量,和分别表示待测函数去重后基本块的数量。
[0115]
综上,获取两个待测函数对应的基本块的指令数量小于预设阈值的基本块相似对(利用基本块级跨平台模型确定相似对)的数量,并利用基本块相似对的数量计算相似度结果。
[0116]
对于函数级跨平台模型的构建,由于基本块间不像基本块内的指令一样固定的执行顺序关系,因此指令级嵌入向量生成基本块级别嵌入向量的方法不能直接适用于由基本块级别嵌入生成函数级别嵌入的任务中,因此无法直接实现函数级别的跨平台模型。
[0117]
在基本块级跨平台模型的构建中,使用基本块对数据集对孪生网络进行有监督训练。函数级别的跨平台模型构建以训练好的基本块级跨平台模型为基础,应用本技术提出
的基于块内语义的函数相似性分析算法来实现函数级别的跨平台相似度的对比,并以此实现函数级跨平台模型。
[0118]
如图5所示,为基本块级跨平台模型的训练流程图,该方法还包括对所述基本块级跨平台模型进行训练:
[0119]
步骤s401:将经过预处理的训练数据对word2vec进行训练,以生成指令级嵌入向量;
[0120]
指令级嵌入向量即将经过预处理的汇编指令转化为嵌入向量的过程,主要是通过word2vec的skip-gram模型实现的。
[0121]
将二进制函数所包含的每条汇编指令视为一个单词,将每个由多条汇编指令组成的基本块视为一个句子,通过输入汇编指令对word2vec进行训练得到汇编指令语义向量模型。在预测阶段,向汇编指令语义向量模型输入一条汇编指令,则输出为指令级嵌入向量表示。
[0122]
如图6所示,为指令级嵌入向量的生成过程示意图,图中的f1和f2表示预处理后的训练函数,图中的每个方格代表一条汇编指令,每行方格代表函数中的基本块。
[0123]
获取两个预处理后的训练函数;
[0124]
对于任意基本块b,相应地指令基本块α(b)可表示为:
[0125]
α(b)={b1,b2,

,bn};
[0126]
其中,bi表示基本块中的任意一条汇编指令,且汇编指令之间具有固定执行顺序;
[0127]
任意所述训练函数f包括多个基本块,对应的基本块函数α(f)可表示为:
[0128]
α(f)={b1,b2,

,bn};
[0129]
其中,bi表示二进制函数中包含的基本块;
[0130]
将所述基本块函数输入word2vec进行训练,生成指令级嵌入向量。
[0131]
在训练过程中,通过将统一化处理后的汇编指令训练集输入word2vec模型进行训练得到汇编指令语义模型。
[0132]
模型训练完成后,向模型输入一条汇编指令,汇编指令语义模型将输出一个向量,此向量即为该条汇编指令的指令级嵌入向量。
[0133]
利用汇编指令语义模型实现了二进制函数中每条汇编指令到指令级嵌入向量的转化,即使用word2vec实现指令级嵌入向量的生成。
[0134]
步骤s402:基于所述指令级嵌入向量对lstm孪生网络进行训练,以生成基本块级嵌入向量。
[0135]
如图7所示,为基本块级嵌入向量的生成过程示意图,该任务类似于在自然语言处理领域通过单词嵌入向量得到句子的嵌入表示,最直观的方式是对某个基本块所包含的汇编指令嵌入向量进行求和等简单组合操作得到该基本块的表示,但由于不同平台下的汇编指令在汇编指令语义模型中具有不同的嵌入表示,来自不同平台下的语义相似基本块对通过这种方式获取的嵌入表示也将不同,使得基本块级别的嵌入无法进行跨平台对比,因此在此场景下无法使用简单组合的方式进行处理。
[0136]
在本技术中,将使用lstm循环神经网络进行基本块级嵌入向量的生成,将基本块内有序指令作为序列数据输入到网络中,将最后一步的输出作为基本块级嵌入表示。
[0137]
lstm是一种用于处理有序数据的循环神经网络,其可以解决在长序列训练过程中
梯度消失和爆炸的问题。具体地,在处理文本句子时,lstm将句子视为具有内部结构的词语组合,在每个时间步中按序输入词语,该词在嵌入中的相关性被更新,当处理至句子末尾时,最后一步的输出包含了整个句子中所有的词汇语义,因此其可以作为整个句子的嵌入向量表示。综上,本技术将每个汇编指令视为一个“单词”,将基本块内指令序列视为有序句子,则可以通过lstm对指令序列进行处理,在每个时间步处理指令序列的一条指令,将最后一步的输出视为基本块的嵌入向量表示。
[0138]
本技术结合lstm相关内容介绍了基本块嵌入向量的表示方式和生成过程。由于lstm可以在有序数据的序列演进方向进行处理并且最后一步可以生成代表整个序列的嵌入表示,这也是基本块级别跨平台的孪生网络结构中,选择使用lstm作为具体实现的原因。
[0139]
如图8所示,为lstm孪生网络结构示意图,基本块级跨平台模型用于对两个来自不同体系架构下的二进制函数的基本块进行相似度判断。
[0140]
为了实现跨平台功能,采用lstm孪生网络通过指令级嵌入向量生成基本块级的嵌入向量。基本块嵌入向量之间使用孪生神经网络结构。孪生神经网络是一种共享权值的网络结构,在自然语言处理领域通常用于衡量两个输入的相似度。孪生网络接收两个输入(指令级嵌入向量),然后将两个输入分别投进两个神经网络中,分别在新的空间中生成对两个输入的嵌入表示,最后通过计算,判断两个输入是否相似,即可利用基本块级嵌入向量获得两个输入的相似度结果。
[0141]
其中,孪生网络由两个子网络组成,每个网络为完全相同的lstm,两个子网络共享权重。两个子网分别对一个句子对中的句子进行处理。本技术的输入为通过修改的llvm编译得到的带有相似性标签的二进制函数基本块对,其中块内的每条指令以word2vec生成的指令级嵌入向量表示,训练是一个有监督的过程,并使用随机梯度下降来最小化损失函数。
[0142]
该方法提出的函数级跨平台模型将被用于分析跨平台二进制函数对比分析工作,通过学习基本块内指令的语义信息避免了人工选取特征存在的问题,且其准确性相较于现有的二进制函数相似度对比方案有了一定的提高,且可为安全分析系统的搭建提供良好的基础模型。
[0143]
实施例2
[0144]
本技术实施例提供一种二进制函数相似度检测装置,如图9所示,为一种二进制函数相似度检测装置的结构框图,所述装置包括但不限于:
[0145]
预处理模块100,用于对两个待测函数进行预处理;
[0146]
基本块集合获取模块200,用于获取两个待测函数的基本块集合;
[0147]
相似度比较模块300,用于利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。
[0148]
如图10所示,为另一种二进制函数相似度检测装置的结构框图,其中,预处理模块100包括:
[0149]
反汇编模块101,用于对所述待测函数进行反汇编;
[0150]
标准化处理模块102,用于对反汇编后的二进制函数进行汇编指令标准化处理,以利用预设规则对所述二进制函数中的汇编指令进行替换处理。
[0151]
相似度比较模块300包括:
[0152]
去重模块301,用于对两个待测函数的基本块列表进行去重;
[0153]
排序模块302,用于根据基本块内汇编指令的数量对去重后的列表按照从大到小的顺序进行排序;
[0154]
数量确定模块303,用于比较排序后的两个基本块列表中的基本块数量,确定数量多的基本块列表为baselist,数量少的基本块列表为cmplist;
[0155]
第一遍历模块304,用于遍历baselist,获得未进行对比的基本块baseblock;
[0156]
第二遍历模块305,用于遍历cmplist,取出未被标记的基本块cmpblock;
[0157]
阈值判断模块306,用于判断基本块baseblock和基本块cmpblock的指令数量之差是否大于预设阈值;
[0158]
相似结果获取模块307,用于若否,则将所述基本块baseblock和基本块cmpblock输入所述基本块级跨平台模型,获得相似结果;
[0159]
标记模块308,用于若所述基本块baseblock和基本块cmpblock相似,则对所述基本块baseblock和基本块cmpblock进行标记,并将相似对的数量加1;
[0160]
相似度结果计算模块309,用于在基本块列表baselist全部被比对或基本块列表cmplist全部被标记后,计算相似度结果:
[0161][0162]
其中,sn表示相似对的数量,和分别表示待测函数去重后基本块的数量。
[0163]
该装置还包括基本块级跨平台模型训练模块400,用于:
[0164]
将经过预处理的训练数据对word2vec进行训练,以生成指令级嵌入向量;
[0165]
基于所述指令级嵌入向量对lstm孪生网络进行训练,以生成基本块级嵌入向量。
[0166]
利用函数级跨平台模型实现基于语义的跨平台二进制函数的相似性检测,该模型通过学习基本块内指令的语义信息避免了人工选取特征存在的问题,解决了现有方法由于人工选取统计特征导致语义信息丢失和引入人为误差的问题。
[0167]
本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行实施例1所述的二进制函数相似度检测方法。
[0168]
本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行实施例1所述的二进制函数相似度检测方法。
[0169]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也
可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0170]
另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0171]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0172]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0173]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
[0174]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术特征:
1.一种二进制函数相似度检测方法,其特征在于,所述方法包括:对两个待测函数进行预处理;获取两个待测函数的基本块集合;利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。2.根据权利要求1所述的二进制函数相似度检测方法,其特征在于,所述对两个待测函数进行预处理,包括:对所述待测函数进行反汇编;对反汇编后的二进制函数进行汇编指令标准化处理,以利用预设规则对所述二进制函数中的汇编指令进行替换处理。3.根据权利要求1所述的二进制函数相似度检测方法,其特征在于,所述利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,包括:对两个待测函数的基本块列表进行去重;根据基本块内汇编指令的数量对去重后的列表按照从大到小的顺序进行排序;比较排序后的两个基本块列表中的基本块数量,确定数量多的基本块列表为baselist,数量少的基本块列表为cmplist;遍历baselist,获得未进行对比的基本块baseblock;遍历cmplist,取出未被标记的基本块cmpblock;判断基本块baseblock和基本块cmpblock的指令数量之差是否大于预设阈值;若否,则将所述基本块baseblock和基本块cmpblock输入所述基本块级跨平台模型,获得相似结果;若所述基本块baseblock和基本块cmpblock相似,则对所述基本块baseblock和基本块cmpblock进行标记,并将相似对的数量加1;在基本块列表baselist全部被比对或基本块列表cmplist全部被标记后,计算相似度结果:其中,s
n
表示相似对的数量,和分别表示待测函数去重后基本块的数量。4.根据权利要求1所述的二进制函数相似度检测方法,其特征在于,所述方法还包括对所述基本块级跨平台模型进行训练:将经过预处理的训练数据对word2vec进行训练,以生成指令级嵌入向量;基于所述指令级嵌入向量对lstm孪生网络进行训练,以生成基本块级嵌入向量。5.根据权利要求4所述的二进制函数相似度检测方法,其特征在于,所述将经过预处理的训练数据对word2vec进行训练,以生成指令级嵌入向量,包括:获取两个预处理后的训练函数;对于任意基本块b,相应地指令基本块α(b)可表示为:
α(b)={b1,b2,

,b
n
};其中,b
i
表示基本块中的任意一条汇编指令,且汇编指令之间具有固定执行顺序;任意所述训练函数f包括多个基本块,对应的基本块函数α(f)可表示为:α(f)={b1,b2,

,b
n
};其中,b
i
表示二进制函数中包含的基本块;将所述基本块函数输入word2vec进行训练,生成指令级嵌入向量。6.一种二进制函数相似度检测装置,其特征在于,所述装置包括:预处理模块,用于对两个待测函数进行预处理;基本块集合获取模块,用于获取两个待测函数的基本块集合;相似度比较模块,用于利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。7.根据权利要求6所述的二进制函数相似度检测装置,其特征在于,所述预处理模块包括:反汇编模块,用于对所述待测函数进行反汇编;标准化处理模块,用于对反汇编后的二进制函数进行汇编指令标准化处理,以利用预设规则对所述二进制函数中的汇编指令进行替换处理。8.根据权利要求6所述的二进制函数相似度检测装置,其特征在于,所述相似度比较模块包括:去重模块,用于对两个待测函数的基本块列表进行去重;排序模块,用于根据基本块内汇编指令的数量对去重后的列表按照从大到小的顺序进行排序;数量确定模块,用于比较排序后的两个基本块列表中的基本块数量,确定数量多的基本块列表为baselist,数量少的基本块列表为cmplist;第一遍历模块,用于遍历baselist,获得未进行对比的基本块baseblock;第二遍历模块,用于遍历cmplist,取出未被标记的基本块cmpblock;阈值判断模块,用于判断基本块baseblock和基本块cmpblock的指令数量之差是否大于预设阈值;相似结果获取模块,用于若否,则将所述基本块baseblock和基本块cmpblock输入所述基本块级跨平台模型,获得相似结果;标记模块,用于若所述基本块baseblock和基本块cmpblock相似,则对所述基本块baseblock和基本块cmpblock进行标记,并将相似对的数量加1;相似度结果计算模块,用于在基本块列表baselist全部被比对或基本块列表cmplist全部被标记后,计算相似度结果:其中,s
n
表示相似对的数量,和分别表示待测函数去重后基本块的数量。
9.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行根据权利要求1至5中任一项所述的二进制函数相似度检测方法。10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至5任一项所述的二进制函数相似度检测方法。

技术总结
本申请实施例提供一种二进制函数相似度检测方法、装置、电子设备及存储介质,涉及威胁检测技术领域。该方法包括对两个待测函数进行预处理;获取两个待测函数的基本块集合;利用函数级跨平台模型对所述基本块集合进行相似度比较,获得比较结果,所述函数级跨平台模型是利用基于块内语义的函数相似性分析算法和预先训练好的基本块级跨平台模型构建的,且所述基于块内语义的函数相似性分析算法是利用所述基本块级跨平台模型进行相似比较的。该方法通过学习基本块内指令的语义信息避免了人工选取特征存在的误差问题,实现了基于语义的跨平台相似度检测,解决了现有方法由于人工选取统计特征导致语义信息丢失和引入人为误差的问题。的问题。的问题。


技术研发人员:靳洮 高飞 安晓宁
受保护的技术使用者:北京天融信网络安全技术有限公司
技术研发日:2023.07.07
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐