CN110704103B - 基于软件基因的二进制文件语义相似性比较方法及装置 - Google Patents
基于软件基因的二进制文件语义相似性比较方法及装置 Download PDFInfo
- Publication number
- CN110704103B CN110704103B CN201910833076.5A CN201910833076A CN110704103B CN 110704103 B CN110704103 B CN 110704103B CN 201910833076 A CN201910833076 A CN 201910833076A CN 110704103 B CN110704103 B CN 110704103B
- Authority
- CN
- China
- Prior art keywords
- software
- gene
- genes
- similarity
- semantic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 108090000623 proteins and genes Proteins 0.000 claims abstract description 64
- 238000004458 analytical method Methods 0.000 claims abstract description 15
- 239000013598 vector Substances 0.000 claims description 37
- 238000012549 training Methods 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 11
- 238000001514 detection method Methods 0.000 abstract description 9
- 230000000694 effects Effects 0.000 abstract description 3
- 238000005259 measurement Methods 0.000 abstract description 3
- 238000005065 mining Methods 0.000 abstract description 3
- 238000003058 natural language processing Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于网络安全技术领域,特别涉及一种基于软件基因的二进制文件语义相似性比较方法及装置,该方法包含:对待分析二进制文件依次进行软件基因提取和指令嵌入;提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分。本发明采用自然语言处理对程序语义分析,实现对汇编指令的理解和软件基因语义嵌入的生成,并将软件基因应用于软件相似性比对中,在二进制文件相似性度量上达到了良好的分析检测效果,可扩展性强,提升相似语义的二进制代码的识别效率和准确度,对软件克隆检测、漏洞挖掘等领域具有重要的指导意义,具有较好的应用前景。
Description
技术领域
本发明属于网络安全技术领域,特别涉及一种基于软件基因的二进制文件语义相似性比较方法及装置。
背景技术
在没有源码的情况下对二进制文件进行分析,广泛应用于漏洞挖掘、恶意代码发现等领域。由于源代码的复用和共享,开源项目提供便利的同时,对软件安全问题造成了很大的隐患。比较二进制文件的局部相似性,剖析软件之间相互包含、代码复用等问题,对漏洞发现、软件安全性分析等领域有着重要的意义。针对软件的克隆检测或相似性度量有多重不同的思路和方法,包括基于字符串匹配的检测方法、基于令牌的匹配方法、基于树的方法等。有的方法从源代码的角度考虑,只能解决有源码的软件相似性比较,而无法处理二进制文件的比较,在实践中并不实用。有的研究者使用符号执行和定理证明器比较二进制代码的语义相似性,例如BinHunt和CoP,但它们的方法时空复杂度很高,需要占用大量的计算资源,并消耗大量时间,因此不适用于大型代码库。最近有研究证明了将机器学习和深度学习技术应用于代码分析的有效性,提出使用词嵌入来表示指令,但是他们仅采用了词嵌入模型对汇编指令进行理解,损失了程序的整体语义信息。
发明内容
为此,本发明提供一种基于软件基因的二进制文件语义相似性比较方法及装置,采用自然语言处理的方法对程序语义分析,实现对汇编指令的理解和软件基因语义嵌入的生成,并将软件基因应用于软件相似性比对中,在二进制文件相似性度量上达到了良好的分析检测效果,具有较好的应用前景。
按照本发明所提供的设计方案,一种基于软件基因的二进制文件语义相似性比较方法,包含:
对待分析二进制文件依次进行软件基因提取和指令嵌入;
提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;
依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分。
上述地,针对待分析二进制文件中的二进制片段,若二进制片段结尾是条件跳转指令、return指令或者用户定义函数call指令,且其上下文中没有任何一条指令能够合并形成最大基因,则判定该二进制片段为最能表征代码程序行为语义及最小功能单元的软件基因。
上述地,利用word2vec模型对软件基因进行指令嵌入。
上述地,利用句向量模型PV-DM提取软件基因的语义信息。
上述地,将文本或段落映射成包含句子语义信息的句向量,利用模型训练提取语义过程中,首先设定一个长度为k的滑动窗口,该滑动窗口包含句子中k个单词向量,句向量与窗口中的k个单词向量首尾相连,依次预测句子中的下一个词;训练完成后,该句向量即包含整个句子语义信息,对软件基因语义进行抽象,获得软件基因的语义向量。
上述地,采用余弦相似性将两个不同软件基因的语义相似度映射到[0,1]之间,量化两个基因之间的语义相似度。
上述地,根据软件基因之间的控制流关系,形成软件基因网络;查找软件基因网络之间语义等价基因的最大公共子序列,用以表征两个基因网络的局部相似性。
上述地,考虑线性独立的路径,将两个待比较的软件基因网络表示为有向无环图DAG;将每个边权重的值改为对应负值,把有向无环图G的最长路径问题转换为-G的最短路径问题;采用广度优先搜索,结合LCS动态规划计算语义等价基因的最长公共子序列的最高得分。
上述地,软件相似性得分的获取中,将待比较目标程序T的所有软件基因嵌入存储在局部敏感的散列数据库中;从查询代码组件Q中的第一个基因作为起点,并在散列数据库中搜索,以在目标程序T中找到语义上等效的软件基因,若找到一个或几个语义等价基因,则对每个语义等价基因进行路径探索,否则,从查询代码组件Q中选择另一个基因作为起点,并重复该过程直到检查Q的最后一个基因;从Q中选择一组线性独立的路径,并计算每个线性独立路径的路径相似性得分,再根据相应路径的长度为每个路径相似度得分分配权重,最终组件的相似性得分是加权平均得分。
更进一步地,本发明还提供一种基于软件基因的二进制文件语义相似性比较装置,包含:嵌入模块、提取模块和分析模块,其中,
嵌入模块,用于对待分析二进制文件依次进行软件基因提取和指令嵌入;
提取模块,用于提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;
分析模块,用于依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分。
本发明的有益效果:
本发明通过对待分析二进制文件依次进行软件基因提取和指令嵌入;提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分,可扩展性强,提升相似语义的二进制代码的识别效率和准确度,对软件克隆检测、漏洞挖掘等领域具有重要的指导意义。
附图说明:
图1为实施例中相似性比较流程图;
图2为实施例中二进制文件相似性比较原理图;
图3为实施例中软件基因提取示意图;
图4为实施例中训练文本向量的神经网络模型示意;
图5为实施例中相似性比较装置示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
针对现有代码检测中复杂度高、适用受限等情形,本发明实施例,参见图1所示,提供一种基于软件基因的二进制文件语义相似性比较方法,包含如下内容:
S101)对待分析二进制文件依次进行软件基因提取和指令嵌入;
S102)提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;
S103)依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分。
软件基因灵感来源于生物基因,并借鉴生物信息学中关于基因分析的研究思路分析和度量软件,解决现今软件工程领域的分析难题。从生物信息学的研究思路,提出软件基因的概念,改进生物系统发育模型的聚类算法来度量基因之间的差异,应用于恶意软件的检测,可达到96.14%的精度。软件基因是程序中携带了功能信息的代码片段,将软件基因应用于恶意代码分类,利用恶意代码基因序列对恶意软件进行家族分类,准确率可达到98%。当前软件基因的相关研究主要在恶意代码检测、恶意代码家族分类,参见图2所示,本发明实施例还进一步可扩展至普通软件的分析,对于待分析的两个二进制文件,首先提取其软件基因,并对基因进行指令嵌入,再提取软件基因的语义信息,对基因语义进行两两比较,得到基因间的语义相似性后,求语义相似基因的最大公共子序列,从而得到软件相似性得分,能够有效识别二进制文件相似性,可扩展性强。
进一步地,本发明实施例中,针对待分析二进制文件中的二进制片段,若二进制片段结尾是条件跳转指令、return指令或者用户定义函数call指令,且其上下文中没有任何一条指令能够合并形成最大基因,则判定该二进制片段为最能表征代码程序行为语义及最小功能单元的软件基因。
参见图3所示,借鉴生物学中基因的思想,将软件基因应用于恶意软件检测领域,达到96.14%的准确率。软件基因满足以下条件的二进制片段:a.这个代码片段的结尾必须是条件跳转指令、return指令或者用户定义函数的call指令;b.这个代码段的上下文中,没有任何一条指令可以跟该基因合并,形成更大的基因。根据这两个条件,软件基因内部允许包含系统API的调用,软件基因中任意一条指令执行,则整个基因内的指令都会被执行,不存在基因只执行一部分,另一部分不执行的情况,因此,软件基因可以体现软件功能上的原子性和不可分割性,可以认为是软件分析的最小功能单元,最能表征程序的行为和语义。
Word2vec是用来产生词向量的相关模型,用来训练以重新建构语言学之词文本的浅而双层的神经网络。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。Doc2Vec是一种非监督式算法,可以获得sentences/paragraphs/documents的向量表达,是word2vec的拓展。学出来的向量可以通过计算距离来找sentences/paragraphs/documents之间的相似性,可以用于文本聚类,对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题。为此,进一步地,本发明实施例中,利用word2vec模型和/或doc2vec模型分别对汇编指令和软件基因进行嵌入。
PV-DM(Distributed Memory Model of Paragraph Vectors)模型中,每个文章(或者段落,句子)会被表示成一个矩阵D的一列,另外每个单词也被表示成矩阵W中的一列,在根据上下文预测某个词时(比如NNMM),用词向量和文章向量的拼接或者加和来预测下一个词。为此,本发明实施例中,利用句向量模型PV-DM提取软件基因的语义信息。
进一步地,本发明实施例中,将文本或段落映射成包含句子语义信息的句向量,利用模型训练提取语义过程中,首先设定一个长度为k的滑动窗口,该滑动窗口包含句子中k个单词向量,句向量与窗口中的k个单词向量首尾相连,依次预测句子中的下一个词;训练完成后,该句向量即包含整个句子语义信息。采用该方法对软件基因语义进行抽象,获得软件基因的语义向量。
参见图4所示,利用PV-DM作为训练文本向量的神经网络模型,可以将输入的文本或段落映射成一个包含了句子语义信息的句向量。训练过程中,首先设定一个长度为k的滑动窗口,包含句子中的k个单词,句向量与窗口中的k个词向量首尾相连,依次预测句子中的下一个词,使其达到最高的准确率。训练完成后,该句向量即可包含整个句子的语义信息。我们使用该算法对基因语义进行抽象,获得基因的语义向量。得到基因的语义向量之后,为了量化两个基因之间的语义相似度,进一步地,本发明实施例中,采用余弦相似性将两个不同基因的语义相似度映射到[0,1]之间,具体计算方法可表示如下:
其中xi,xj代表基因i和j的语义向量,Sim(i,j)代表基因之间的语义相似性。
进一步地,本发明实施例中,根据软件基因之间的控制流关系,形成软件基因网络;查找软件基因网络之间语义等价基因的最大公共子序列,用以表征两个基因网络的局部相似性。
进一步地,本发明实施例中,考虑线性独立的路径,将两个待比较的软件基因网络表示为有向无环图DAG;将每个边权重的值改为对应负值,把有向无环图G的最长路径问题转换为-G的最短路径问题;采用广度优先搜索,结合LCS动态规划计算语义等价基因的最长公共子序列的最高得分。
动态规划算法可以用于计算两个序列之间的最大公共子序列,但是,需要给定一条线性独立路径,在另一个基因网络的多条路径中查找得分最高的路径。最大语义等价基因公共子序列计算本质上是最长的路径问题,其中边的权重是LCS得分的权重,而最长路径问题是NP完全问题。为了减小计算复杂度,本发明实施例可只考虑线性独立的路径,删除所有back edges,因此,两个待比较的基因网络可以表示为有向无环图(DAG)。在这种情况下,通过将每个权重的值改为其负值,把有向无环图G的最长路径问题可以转换为-G的最短路径问题,可以极大地减小计算消耗。
采用广度优先搜索,结合LCS动态规划来计算语义等价基因的最长公共子序列最高得分。为了量化两个基因网络之间最大语义等价基因子序列,可定义如下内容:
两个待比较的文件中,相似代码在文件中的位置是未知的,可能存在于整个文件的任意位置。因此确定开始比较的起点位置非常关键,可以防止在路径查询的过程中,探索到不相关的程序段。进一步地,本发明实施例中,将待比较目标程序T的所有软件基因嵌入存储在局部敏感的散列数据库中;从查询代码组件Q中的第一个基因作为起点,并在散列数据库中搜索,以在目标程序T中找到语义上等效的软件基因,若找到一个或几个语义等价基因,则对每个语义等价基因进行路径探索,否则,从查询代码组件Q中选择另一个基因作为起点,并重复该过程直到检查Q的最后一个基因;从Q中选择一组线性独立的路径,并计算每个线性独立路径的路径相似性得分,再根据相应路径的长度为每个路径相似度得分分配权重,最终组件的相似性得分是加权平均得分。
进一步地,基于以上的方法,本发明实施例还提供一种基于软件基因的二进制文件语义相似性比较装置,参见图5所示,包含:嵌入模块101、提取模块102和分析模块103,其中,
嵌入模块101,用于对待分析二进制文件依次进行软件基因提取和指令嵌入;
提取模块102,用于提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;
分析模块103,用于依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (6)
1.一种基于软件基因的二进制文件语义相似性比较方法,其特征在于,包含:
对待分析二进制文件依次进行软件基因提取和指令嵌入;
提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;
依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分;
针对待分析二进制文件中的二进制片段,若二进制片段结尾是条件跳转指令、return指令或者用户定义函数call指令,且其上下文中没有任何一条指令能够合并形成最大基因,则判定该二进制片段为最能表征代码程序行为语义及最小功能单元的软件基因;
利用word2vec模型和/或doc2vec模型分别对软件基因进行指令嵌入;
根据软件基因之间的控制流关系,形成软件基因网络;查找软件基因网络之间语义等价基因的最大公共子序列,用以表征两个基因网络的局部相似性;
软件相似性得分的获取中,将待比较目标程序T的所有软件基因嵌入存储在局部敏感的散列数据库中;从查询代码组件Q中的第一个基因作为起点,并在散列数据库中搜索,以在目标程序T中找到语义上等效的软件基因,若找到一个或几个语义等价基因,则对每个语义等价基因进行路径探索,否则,从查询代码组件Q中选择另一个基因作为起点,并重复散列数据库搜索过程直到检查Q的最后一个基因;从Q中选择一组线性独立的路径,并计算每个线性独立路径的路径相似性得分,再根据相应路径的长度为每个路径相似度得分分配权重,最终组件的相似性得分是加权平均得分。
2.根据权利要求1所述的基于软件基因的二进制文件语义相似性比较方法,其特征在于,利用句向量模型PV-DM提取软件基因的语义信息。
3.根据权利要求1所述的基于软件基因的二进制文件语义相似性比较方法,其特征在于,将文本或段落映射成包含句子语义信息的句向量,利用模型训练提取语义过程中,首先设定一个长度为k的滑动窗口,该滑动窗口包含句子中k个单词向量,句向量与窗口中的k个单词向量首尾相连,依次预测句子中的下一个词;训练完成后,该句向量即包含整个句子语义信息,对软件基因语义进行抽象,获得软件基因的语义向量。
4.根据权利要求3所述的基于软件基因的二进制文件语义相似性比较方法,其特征在于,采用余弦相似性将两个不同软件基因的语义相似度映射到[0,1]之间,量化两个基因之间的语义相似度。
5.根据权利要求1所述的基于软件基因的二进制文件语义相似性比较方法,其特征在于,考虑线性独立的路径,将两个待比较的软件基因网络表示为有向无环图DAG;将每个边权重的值改为对应负值,把有向无环图G的最长路径问题转换为-G的最短路径问题;采用广度优先搜索,结合LCS动态规划计算语义等价基因的最大公共子序列的最高得分。
6.一种基于软件基因的二进制文件语义相似性比较装置,其特征在于,基于权利要求1所述的基于软件基因的二进制文件语义相似性比较方法实现,包含:嵌入模块、提取模块和分析模块,其中,
嵌入模块,用于对待分析二进制文件依次进行软件基因提取和指令嵌入;
提取模块,用于提取软件基因的语义信息,并对基因语义进行两两比较,获取软件基因间的语义相似性;
分析模块,用于依据语义相似性,获取软件基因最大公共子序列,得到软件相似性得分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910833076.5A CN110704103B (zh) | 2019-09-04 | 2019-09-04 | 基于软件基因的二进制文件语义相似性比较方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910833076.5A CN110704103B (zh) | 2019-09-04 | 2019-09-04 | 基于软件基因的二进制文件语义相似性比较方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704103A CN110704103A (zh) | 2020-01-17 |
CN110704103B true CN110704103B (zh) | 2020-09-29 |
Family
ID=69194190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910833076.5A Active CN110704103B (zh) | 2019-09-04 | 2019-09-04 | 基于软件基因的二进制文件语义相似性比较方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704103B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131259B (zh) * | 2020-09-28 | 2024-03-15 | 绿盟科技集团股份有限公司 | 一种相似恶意软件推荐方法、装置、介质和设备 |
CN113010209A (zh) * | 2020-10-19 | 2021-06-22 | 四川大学 | 一种抗编译差异的二进制代码相似性比较技术 |
CN112433756B (zh) * | 2020-11-24 | 2021-09-07 | 北京京航计算通讯研究所 | 基于加权递归自编码器的快速代码克隆检测方法及装置 |
CN112733137B (zh) * | 2020-12-24 | 2021-11-16 | 哈尔滨工业大学 | 一种面向漏洞检测的二进制代码相似性分析方法 |
CN112699379B (zh) * | 2020-12-31 | 2024-05-24 | 上海戎磐网络科技有限公司 | 一种基于软件基因的固件漏洞扫描系统和方法 |
CN113257060A (zh) * | 2021-05-13 | 2021-08-13 | 张予立 | 一种答疑解决方法、装置、设备和存储介质 |
CN113536308B (zh) * | 2021-06-11 | 2023-01-06 | 中国人民解放军战略支援部队信息工程大学 | 软件基因视角下多粒度信息融合的二进制代码溯源方法 |
CN113535229B (zh) * | 2021-06-30 | 2022-12-02 | 中国人民解放军战略支援部队信息工程大学 | 基于软件基因的抗混淆二进制代码克隆检测方法 |
CN114064005B (zh) * | 2021-11-18 | 2023-05-12 | 上海戎磐网络科技有限公司 | 基于软件基因的编程语言类型识别方法和装置 |
CN117473494B (zh) * | 2023-06-06 | 2024-06-25 | 兴华永恒(北京)科技有限责任公司 | 同源二进制文件的确定方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495748B2 (en) * | 2011-02-24 | 2013-07-23 | Red Hat, Inc. | Mechanism for generating vulnerability reports based on application binary interface/application programming interface usage |
CN108932430A (zh) * | 2018-07-02 | 2018-12-04 | 北京大学 | 一种基于软件基因技术的恶意软件检测方法 |
CN110046501B (zh) * | 2019-03-09 | 2020-09-29 | 中国人民解放军战略支援部队信息工程大学 | 一种受生物基因启发的恶意代码检测方法 |
-
2019
- 2019-09-04 CN CN201910833076.5A patent/CN110704103B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110704103A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704103B (zh) | 基于软件基因的二进制文件语义相似性比较方法及装置 | |
Smirnova et al. | Relation extraction using distant supervision: A survey | |
Sordoni et al. | A hierarchical recurrent encoder-decoder for generative context-aware query suggestion | |
Zeng et al. | A convolution BiLSTM neural network model for Chinese event extraction | |
Li et al. | Hadoop recognition of biomedical named entity using conditional random fields | |
Lu et al. | Distilling discrimination and generalization knowledge for event detection via delta-representation learning | |
Nguyen et al. | Toward mention detection robustness with recurrent neural networks | |
Parraga-Alava et al. | An unsupervised learning approach for automatically to categorize potential suicide messages in social media | |
Agrawal et al. | Active learning approach using a modified least confidence sampling strategy for named entity recognition | |
Wittek et al. | Accelerating text mining workloads in a MapReduce-based distributed GPU environment | |
CN117473053A (zh) | 基于大语言模型的自然语言问答方法、装置、介质及设备 | |
CN113128622A (zh) | 基于语义-标签多粒度注意力的多标签分类方法及系统 | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
CN116245139B (zh) | 图神经网络模型训练方法和装置、事件检测方法和装置 | |
Ali et al. | Neural Joint Model for Part-of-Speech Tagging and Entity Extraction | |
Liu et al. | Extracting biomedical events from pairs of text entities | |
Zan et al. | S 2 ql: Retrieval augmented zero-shot question answering over knowledge graph | |
CN116127097A (zh) | 一种结构化文本关系抽取方法、装置、设备 | |
Devkota et al. | Knowledge of the ancestors: Intelligent ontology-aware annotation of biological literature using semantic similarity | |
Cheng et al. | Fine-grained topic detection in news search results | |
Hyland et al. | A generative model of words and relationships from multiple sources | |
Wiatrak et al. | Proxy-based zero-shot entity linking by effective candidate retrieval | |
Neiswanger et al. | Modeling citation networks using latent random offsets | |
Setoodeh et al. | A proposed model for source code reuse detection in computer programs | |
Bender et al. | LESS is More: LEan Computing for Selective Summaries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |