本申请涉及代码检测,具体而言,涉及一种检测代码相似度的方法、装置、存储介质及电子设备。
背景技术:
1、开源库在软件开发周期中被广泛采用,而代码相似性分析在漏洞检测、恶意软件检测和补丁分析当中发挥着越来越重要的作用。
2、目前,人工智能的二进制代码分析技术侧重于从具有代码表示(例如汇编代码、中间表示和控制流图)的二进制函数中获取语义信息,以衡量代码的相似性。然而,直接对汇编代码特征或者控制流图特征执行二进制语义具有挑战性,由于不同的体系结构具有不同的汇编代码,并且若体系结构混淆会改变函数的控制流图。
3、因此,如何提供一种有效的检测代码相似度的方法的技术方案成为亟需解决的技术问题。
技术实现思路
1、本申请的一些实施例的目的在于提供一种检测代码相似度的方法、装置、存储介质及电子设备,通过本申请的实施例的技术方案可以实现二进制代码的相似性检测,准确度较高,鲁棒性较强。
2、第一方面,本申请的一些实施例提供了一种检测代码相似度的方法,包括:提取至少两个二进制程序文件中各个二进制程序文件的特征,得到各特征信息,其中,所述各特征信息包括:各伪代码文本和各字符串序列;将所述各特征信息输入至目标网络模型,获取所述各个二进制程序文件对应的各语义嵌入向量;确定所述各语义嵌入向量之间的相似度值。
3、本申请的一些实施例通过对二进制程序文件进行特征提取得到各特征信息,通过目标网络模型可以得到各语义嵌入向量,最后得到各语义嵌入向量间的相似度值。本申请实施例可以获取代码结构层面的语义信息,实现对二进制代码的相似度求解,提升了鲁棒性和检测准确度。
4、在一些实施例,所述提取至少两个二进制程序文件中各个二进制程序文件的特征,得到各特征信息,包括:对所述各个二进制程序文件进行反汇编,得到所述各个二进制程序文件对应的各汇编代码文件;对所述各汇编代码文件进行分析,获取对应的各伪代码文件和各函数调用图;根据所述各伪代码文件和所述各函数调用图,得到所述各特征信息。
5、本申请的一些实施例通过对各个二进制程序文件进行反汇编、分析得到各伪代码文件和各函数调用图,之后基于此得到各特征信息,可以实现对二进制程序文件特征的有效提取。
6、在一些实施例,所述对所述各汇编代码文件进行分析,获取对应的各伪代码文件和各函数调用图,包括:对所述各汇编代码文件进行语法分析和词法分析,得到所述各伪代码文件;对所述各汇编代码文件中的函数调用关系进行分析,生成所述各函数调用图。
7、本申请的一些实施例通过对各汇编代码文件进行分析,得到各伪代码文件和各函数调用图,为后续相似度求解提供了数据支持。
8、在一些实施例,所述根据所述各伪代码文件和所述各函数调用图,得到所述各特征信息,包括:利用所述各函数调用图对所述各伪代码文件进行函数内联,得到内联后的各伪代码函数文件;提取所述各伪代码函数文件中的函数特征,得到所述各特征信息。
9、本申请的一些实施例通过函数调用图对伪代码文件进行选择性函数内联,进而提取特征得到特征信息,可以降低数据量,提升检测效率。
10、在一些实施例,所述将所述各特征信息输入至目标网络模型,获取所述各个二进制程序文件对应的各语义嵌入向量,包括:将所述各伪代码文本输入至目标伪代码网络模型,得到各伪代码语义特征向量;将所述各字符串序列输入至目标字符串网络模型,得到各字符串语义特征向量;将所述各伪代码语义特征向量和所述各字符串语义特征向量连接,得到所述各语义嵌入向量。
11、本申请的一些实施例通过目标伪代码网络模型和目标字符串网络模型可以分别得到伪代码语义特征向量和各字符串语义特征向量,进而得到各语义嵌入向量,保证了检测效率。
12、在一些实施例,所述确定所述各语义嵌入向量之间的相似度值,包括:利用相似度算法求解所述各语义嵌入向量之间的相似度,得到所述相似度值。
13、本申请的一些实施例通过相似度算法求解各语义嵌入向量间的相似度,既方便又准确。
14、第二方面,本申请的一些实施例提供了一种检测代码相似度的装置,包括:特征提取模块,被配置为提取至少两个二进制程序文件中各个二进制程序文件的特征,得到各特征信息,其中,所述各特征信息包括:各伪代码文本和各字符串序列;模型处理模块,被配置为将所述各特征信息输入至目标网络模型,获取所述各个二进制程序文件对应的各语义嵌入向量;相似度确定模块,被配置为确定所述各语义嵌入向量之间的相似度值。
15、第三方面,本申请的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如第一方面任一实施例所述的方法。
16、第四方面,本申请的一些实施例提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现如第一方面任一实施例所述的方法。
17、第五方面,本申请的一些实施例提供一种计算机程序产品,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如第一方面任一实施例所述的方法。
1.一种检测代码相似度的方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述提取至少两个二进制程序文件中各个二进制程序文件的特征,得到各特征信息,包括:
3.如权利要求2所述的方法,其特征在于,所述对所述各汇编代码文件进行分析,获取对应的各伪代码文件和各函数调用图,包括:
4.如权利要求2或3所述的方法,其特征在于,所述根据所述各伪代码文件和所述各函数调用图,得到所述各特征信息,包括:
5.如权利要求1-3中任一项所述的方法,其特征在于,所述将所述各特征信息输入至目标网络模型,获取所述各个二进制程序文件对应的各语义嵌入向量,包括:
6.如权利要求1-3中任一项所述的方法,其特征在于,所述确定所述各语义嵌入向量之间的相似度值,包括:
7.一种检测代码相似度的装置,其特征在于,包括:
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,其中,所述计算机程序被处理器运行时执行如权利要求1-6中任意一项权利要求所述的方法。
9.一种计算机程序产品,其特征在于,所述的计算机程序产品包括计算机程序,其中,所述计算机程序被处理器运行时执行如权利要求1-6中任意一项权利要求所述的方法。
10.一种电子设备,其特征在于,包括存储器、处理器以及存储在所述存储器上并在所述处理器上运行的计算机程序,其中,所述计算机程序被所述处理器运行时执行如权利要求1-6中任意一项权利要求所述的方法。