CN112308210B - 基于神经网络的跨架构二进制函数相似性检测方法及系统 - Google Patents
基于神经网络的跨架构二进制函数相似性检测方法及系统 Download PDFInfo
- Publication number
- CN112308210B CN112308210B CN202011163538.6A CN202011163538A CN112308210B CN 112308210 B CN112308210 B CN 112308210B CN 202011163538 A CN202011163538 A CN 202011163538A CN 112308210 B CN112308210 B CN 112308210B
- Authority
- CN
- China
- Prior art keywords
- function
- basic block
- control flow
- similarity
- binary
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Abstract
本发明属于网络安全技术领域,特别涉及一种基于神经网络的跨架构二进制函数相似性检测方法及系统,包含:针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;翻译程序基本块字节码获取中间表示,并生成基本块代码的语义嵌入向量;利用广度优先图遍历算法提取函数控制流图节点,依据节点的语义嵌入向量和控制流信息来获取函数嵌入向量;计算函数嵌入向量之间的余弦距离来度量函数相似性。本发明更利于代码中间表示,消除不同指令架构之间差异,降低跨架构代码相似性检测难度,降低扩展工作量和难度;其基于PV‑DM模型和图神经网络的函数嵌入过程,避免了人为偏见的引入;改进的图神经网络收敛速度更快,系统整体效率、准确度更高。
Description
技术领域
本发明属于网络安全技术领域,特别涉及一种基于神经网络的跨架构二进制函数相似性检测方法及系统。
背景技术
同一源代码经不同编译器和优化配置,针对不同硬件平台,编译得到的二进制代码不尽相同,因此二进制代码相似性检测会遇到其特有的难题,即跨编译器、跨编译优化配置和跨指令架构检测难题。传统二进制代码相似性检测技术的主要思路是,首先为二进制代码片段抽象出与编译器、编译优化配置和指令架构无关的中间表示,例如标识符序列、抽象语法树或控制流图(Control Flow Graph,CFG),然后通过分析和比较中间表示的异同,度量代码间的相似性。其中,由于CFG是程序代码的一种高度抽象,具有跨语言的特性,使得无论是源代码还是二进制代码的相似性检测技术,大多依赖CFG作为中间表示。但由于图匹配算法的时间复杂度缺少多项式解,且多是两两匹配算法,在处理大规模任务时,计算量会随代码库规模成几何倍数增长。很长一段时间,这类技术的研究主要围绕CFG结构和图匹配算法的优化展开。
直到最近几年,神经网络技术的应用为该领域开启了新的研究方向,即利用神经网络为二进制代码生成嵌入向量,用向量间的距离表示代码相似度,这样突破了传统方法遇到的性能瓶颈。目前许多方法具有跨指令架构的特性,但在实际应用中,扩展的工作量巨大,因为需要针对指令架构的特点做单独分析。代码高级中间表示分析和比较的难度大、效率低。直接对CFG结构的比较和匹配算法存在开销巨大的问题,而过度优化CFG的顶点和结构虽然获得检测效率的提升,但可能损失重要的相似性特征。相似度模型可能引入人为偏见,现有研究多采用人工定义的代码特征构建中间表示,尤其是基于代码属性统计构建特征向量的方法,它们通常默认不同属性之间互不相关,且对相似性的贡献相同,而实际情况却不能保证这两点。
发明内容
为此,本发明提供一种基于神经网络的跨架构二进制函数相似性检测方法及系统,降低跨架构代码相似性检测难度,提升相似性检测系统的可扩展性。
按照本发明所提供的设计方案,一种基于神经网络的跨架构二进制函数相似性检测方法,包含如下内容:
针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;
针对优化后的函数控制流图,翻译程序基本块字节码获取中间表示,并生成基本块代码的语义嵌入向量;
利用广度优先图遍历算法提取优化后的函数控制流图节点,依据节点的语义嵌入向量和控制流信息来获取函数嵌入向量;
计算函数嵌入向量之间的余弦距离,利用该余弦距离来度量函数相似度。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步的,针对将二进制文件函数列表中每个函数的控制流图,分别执行基本块合并和选择性内联操作来优化函数控制流图。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,基本块合并中,针对内存中非线性分布但顺序执行的连续基本块,依据基本块的出口和入口情形,在遍历函数的基本块中,将只有一个出口的基本块和该基本块后续中只有一个入口的基本块进行合并,若该基本块结尾是无条件跳转指令,则删除该跳转指令。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,对基本块中未识别的子函数采用选择性内联操作,以恢复基本块内部的空间连续性,该选择性内联操作包含如下内容:针对函数的子函数,当该子函数满足设定条件时,对子函数进行内联扩展操作,其中,设定条件为:函数无已识别的全局函数名,在函数嵌入库中无嵌入向量;且,该子函数只有一个基本块构成,其长度与对应函数长度的比值小于设定阈值。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,利用翻译工具对基本块字节码执行中间表达式翻译,获取中间表示;对中间表示应用自定义抽象规则,并将抽象后的基本块中间表示代码同对应的基本块关联存储;利用PV-DM模型为基本块中间表示代码生成语义嵌入向量,并将该语义嵌入向量同对应的基本块关联存储。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,针对PV-DM模型解决中心词预测的多分类问题,实现基本块语义嵌入。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,利用改进的Structure2vec模型学习函数控制流图的函数嵌入向量,其中,控制流图节点为基本块语义嵌入向量。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,利用门控循环单元网络并结合Structure2vec模型构建孪生结构的图嵌入模型,随机选择训练样本中由同一源码翻译而来的不同二进制函数构建相似函数对及由不同标准库函数二进制代码构建相异函数对,采用有监督训练方法对图嵌入模型进行训练学习,以获取函数嵌入向量。
作为本发明基于神经网络的跨架构二进制函数相似性检测方法,进一步地,用训练集中的样本对,并通过反向传播和随机梯度下降来更新函数相似度度量模型 参数,使其目标函数值最小化,其中,表示函数嵌入向量,fn、fm表示不同二进制函数,K表示样本对个数,Sim()表示函数间相似度;π()表示函数间相似性,该相似性取自为1代表相似、-1代表相异的判别式。
进一步地,基于上述的方法,本发明还提供一种基于神经网络的跨架构二进制函数相似性检测系统,包含:代码处理模块、向量生成模块和相似度量模块,其中,
代码处理模块,用于针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;
向量生成模块,用于针对优化后的函数控制流图,翻译程序基本块字节码获取中间表示,并生成基本块代码的语义嵌入向量;利用广度优先图遍历算法提取优化后的函数控制流图节点,依据节点的语义嵌入向量和控制流信息来获取函数嵌入向量;
相似度量模块,用于计算函数嵌入向量之间的余弦距离,利用该余弦距离来度量函数相似度。
本发明的有益效果:
本发明针对不同指令架构的二进制函数控制流图进行优化,部分恢复程序代码的空间连续;抽象后的VEX-IR代码,更利于PV-DM模型的学习;改进的Structure2vec模型在训练过程中,模型收敛的速度更快,效率更高,相似性检测的准确率较原模型更高;函数相似性特征的选取和嵌入过程由神经网络自动学习完成,人工干预更少,避免了人为偏见的引入,因此整体准确度较现有方法更高;针对不同指令架构的二进制函数的汇编代码有较大差异,通过翻译成VEX-IR代码获取中间表示,能够消除不同指令架构之间的差异,降低跨架构的代码相似性检测的难度,同时降低了本案方法扩展到其他指令架构的工作量和难度,提高系统的可扩展性,具有较好的应用前景和市场价值。
附图说明:
图1为实施例中相似性检测方法流程示意;
图2为实施例中面向二进制函数的神经网络嵌入过程示意;
图3为实施例中相似性检测系统框架示意;
图4为实施例中PV-DM模型语义嵌入过程示意;
图5为实施例中程序控制流图嵌入网络的架构示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
本发明实施例,参见图1所示,提供一种基于神经网络的跨架构二进制函数相似性检测方法,参见图1所示,包含如下内容:
S101、针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;
S102、针对优化后的函数控制流图,翻译程序基本块字节码获取中间表示,并生成基本块代码的语义嵌入向量;
S103、利用广度优先图遍历算法提取优化后的函数控制流图节点,依据节点的语义嵌入向量和控制流信息获取函数嵌入向量;
S104、计算函数嵌入向量之间的余弦距离,利用该余弦距离来度量函数相似度。
针对不同指令架构的二进制函数的汇编代码有较大差异,通过翻译成VEX-IR代码获取中间表示,能够消除不同指令架构之间的差异,降低跨架构的代码相似性检测的难度,同时降低了本案方法扩展到其他指令架构的工作量和难度,可以提高相似性检测系统的可扩展性,具有较好的应用前景和市场价值。
利用二维卷积神经网络(Convolutional Neural Network,CNN)直接对程序的二进制字节流进行嵌入,最终的代码相似度结果还综合了分别由函数出入度和调用表所构建的特征向量的相似度;该方法无法解释为什么用于图像数据处理的CNN模型在二进制程序相似性检测任务中也能取得不错的效果,尽管二进制程序的字节流明显有别于图像数据。利用自定义的函数内联和随机漫步机制,将函数的CFG转换为汇编指令的线性序列,以该汇编文本为输入,学习汇编指令和函数的语义嵌入向量。Asm2vec是第一个采用NLP表征学习模型为汇编代码构建语义嵌入向量的方法,具有优秀的抗混淆和抗编译器优化特性,遗憾的是它不能用于跨架构的相似性比较。从基本块、CFG路径和程序组件三个层次研究组件的语义相似性,其中基本块语义嵌入是利用NLP的Word2vec和循环神经网络(RecurrentNeural Network,RNN)的LSTM(Long Short-term Memory)模型实现的。利用Word2vec实现汇编语言的指令嵌入,再利用自关注的RNN模型捕获指令序列的上下文关系,实现函数语义嵌入。SAFE摒弃了CFG作为中间表示,汇编代码的语义信息由神经网络直接嵌入高维向量,既省去了耗时的CFG提取过程,又避免了人为偏见的引入。但在跨指令架构的检测任务中,随着系统支持指令架构的种类增加,理论上,训练样本库的规模也需要根据不同架构的组合成倍地扩大,这在一定程度上限制了该模型的可扩展性。借助动态分析框架Valgrind的中间表示(VEX-IR)消除不同指令架构之间的差异,再利用改进的PV-DM模型为函数的VEX-IR生成语义嵌入向量。将函数转化为指令的线性序列的方法存在一个共同的问题,即当遇到执行流复杂的函数时,很难完全覆盖所有的路径并判断其有效性。
MPNN是由Gilmer等人提出的一种图神经网络通用框架,帮助研究人员理解图神经网络结构和各部分的作用,方便提出模型的改进。MPNN将现有图神经网络抽象为两个阶段,分别是消息传递(Message Passing)和读出(Readout)阶段。本案实施例中,对于任意CFG g=<V,E>,节点v∈V的原始特征为p维段落向量μv,节点间关系可以用v的邻接节点N(v)来表示。在消息传递阶段,MPNN定义了输入层的消息函数Mt和隐藏层的更新函数Ut,其中t为模型运行的时间步,函数的形式如下:
其中,是节点v在第t时间步接收到的消息,是节点v在第t时间步的状态。在每一轮的迭代中,节点信息会通过邻接节点,逐步向远端传播。经历T轮迭代以后,通过读出阶段定义的读出函数R来计算g图嵌入向量函数的形式如下:
用合适的表达式替换框架中的M,U,R函数,即可构建自己的GNN网络。
参见图2所示,以CFG作为二进制函数的中间表示,将所有函数的集合记作F,F中任意函数的CFG记作g=<V,E>,g∈F,其中V,E分别是g中节点和边的集合。初始,图中节点为函数基本块字节码,而边对应基本块之间的执行流跳转。基于相似函数具有相似CFG的假设,即在基本块级别,指令序列具有语义相似性,则可以将任意节点v∈V映射为向量μv∈Pv,使得语义相似的节点在向量空间Pv中的距离也相近,将该映射过程称为基本块语义嵌入;而函数的CFG也具有结构相似性,则可以将任意函数的CFG g映射为向量μg∈PF,使得结构相似的CFG在向量空间PF中的距离也相近,将该映射过程称为CFG图嵌入。图2展示的是面向二进制函数的神经网络嵌入的主要过程,即代码预处理、基本块语义嵌入和函数CFG图嵌入。
作为本发明实施例中的基于神经网络的跨架构二进制函数相似性检测方法,进一步的,针对将二进制文件函数列表中每个函数的控制流图,分别执行基本块合并和选择性内联操作来优化函数控制流图。
二进制文件,程序的二进制文件具有固定的格式和结构,针对不同类型的文件,在文件头部的固定偏移位置能够读取和解析出程序的相关信息和结构,并将这些信息和数据有组织的存储起来。具体信息的种类和存储类型,可如表1所示。
表1提取信息列表
遍历二进制文件的函数列表,对每个函数的CFG分别执行基本块合并和选择性内联操作,并将优化后的函数CFG同原函数关联存储。
作为本发明实施例中基于神经网络的跨架构二进制函数相似性检测方法,进一步地,基本块合并中,针对内存中非线性分布但顺序执行的连续基本块,依据基本块的出口和入口情形,在遍历函数的基本块中,将只有一个出口的基本块和该基本块后续中只有一个入口的基本块进行合并,若该基本块结尾是无条件跳转指令,则删除该指令。
有时代码在内存中虽然是非线性分布的,但却是顺序执行的,这些连续的若干基本块在逻辑上可以合并为一个基本块。基本块合并的算法描述为:遍历函数f的基本块,找到只有一个出口的基本块b,如果b的后续基本块b′只有一个入口,则将b和b′合并,同时如果b的结尾是无条件跳转指令,则将该指令一并删除。
作为本发明实施例中基于神经网络的跨架构二进制函数相似性检测方法,进一步地,对基本块中未识别的子函数采用选择性内联操作,以恢复基本块内部空间连续性,该选择性内联操作包含如下内容:针对函数的子函数,当该子函数满足设定条件时,对子函数进行内联扩展操作,其中,设定条件为:无已识别的全局函数名,在函数嵌入库中无嵌入向量;且,该子函数长度与对应函数长度的比值小于设定阈值,该子函数中只有一个基本块构成。
函数名在汇编代码中以地址的形式存在,从程序文件的导入导出表中,可以识别出部分标准库函数和系统调用,可以用具有全局唯一性的符号区分这类函数,表征模型也能够通过全局上下文预测其功能和语义,而不必关心其函数体的具体实现方法。但在采用静态调用的发行版程序中,更多的函数无法被识别,且地址具有随机性,难以通过有限的上下文预测其准确的功能和语义,此时需要对函数体作进一步分析。本文对基本块中未识别的子函数采取选择性内联操作,以部分恢复基本块内部的空间连续性。
该选择性内联的算法描述为:fS是函数f的一个子函数,用|f|表示f的长度,即包含的全部指令条数。当fS同时满足以下两个条件时,对fS做内联扩展:(i)fS无已识别的全局函数名,且在函数嵌入库中无嵌入向量;(ii)|fS|与|f|的比值小于0.5,且fs只有一个基本块构成。
优化后的函数CFG的节点,即程序基本块字节码,执行VEX-IR翻译(翻译过程可由PyVEX工具包自动完成,它提供了动态分析框架Valgrind使用的VEX中间表的翻译借口,由python语言编写)。
作为本发明实施例中基于神经网络的跨架构二进制函数相似性检测方法,进一步地,通过利用翻译工具并执行中间表达式翻译来获取中间表示,对中间表示应用自定义抽象规则,将抽象后的基本块中间表示代码同对应的基本块关联存储;并利用PV-DM模型为基本块中间表示代码生成语义嵌入向量,将该语义嵌入向量同对应的基本块关联存储。
关联存储中,删除基本块VEX-IR代码中的“=”,“()”,“,”,“:”运算符,并用空格分隔前后的标识符对象。用标签将基本块VEX-IR代码中相同类型的低频词汇做归一化处理,表2列出了抽象规则中超纲词类型与标签的对应关系。将VEX-IR代码视为一种特殊的语言,VEX-IR的指令和操作对象视为“单词”,由一条汇编指令翻译而来的一组VEX-IR视为“句子”,基本块中全部的指令序列视为“段落”,利用PV-DM模型为基本块VEX-IR代码生成语义嵌入向量,并将该向量同对应的基本块关联存储。
表2低频词汇抽象对照表
作为本发明实施例中的基于神经网络的跨架构二进制函数相似性检测方法,进一步地,针对PV-DM模型,采用二进制哈夫曼树结构的层次Softmax网络实现中心词预测的多分类问题。
PV-DM模型是著名的词嵌入模型CBOW(Continuous Bag-of-Words Model)的扩展。CBOW模型通过文本的上下文预测中心词的语义嵌入向量,在此基础上,PV-DM模型还引入了段落向量的概念并同时参与预测。可将VEX-IR代码视为一种特殊的语言,将VEX-IR的指令和操作对象视为“单词”,学习其词向量,将由一条汇编指令翻译而来的一组VEX-IR视为“句子”,基本块中全部的指令序列视为“段落”,从而预测基本块语义嵌入向量。
图4所示,为PV-DM模型的语义嵌入过程示意。针对函数的VEX-IR代码,在训练阶段,模型的初始化是将函数中的每个基本块映射为一个随机且唯一的p维段落向量d,对应N维段落向量矩阵D中的一个列向量,同时VEX-IR的每个token(指令或操作对象)也将被映射为一个随机且唯一的q维词向量w,对应M维词向量矩阵W中的一个列向量。
输入一条文本序列w1,w2,w3,…,wT,模型首先指定一个大小为k的窗口,从输入文本序列的头部开始,向尾部逐词滑动,每次选取由k个token构建的上下文,同时选择一个固定位置的token作为中心词,模型将尝试用上下文中其他token的词向量预测中心词的词向量。
模型先对输入层的向量做一次投影,即对窗口所处段落的段落向量d和除中心词外的其他词向量wt-k,…,wt+k进行连接(Concatenate)操作,构建一个新的向量传递给下一层。
模型将中心词预测视为一个多分类问题,通过Softmax激活函数实现。模型的目标函数是最大化如下形式的平均对数似然概率:
其中P(wt|Context(wt))表示在当前上下文中预测结果恰好为中心词的概率,其计算方法如下:
其中,yi表示输出的第i个词在未标准化对数概率之前的值,计算方法如下:
y=U·h(d,wt-k,…,wt+k;D,W)+b
其中,U,b是Softmax函数的参数,函数h()表示对当前的段落向量和上下文词向量作连接操作。
模型优化和训练方法:基本块语义嵌入模型在训练中,词汇表中词汇的数量对于softmax函数来说过多,将导致函数的计算量过大,采用一个二进制哈夫曼树(BinaryHuffman Tree)结构的层次Softmax(Hierarchical Softmax)网络进行优化。
可对从网上下载的开源项目的源代码,使用相同编译器,应用不同的优化配置(即O0,O1,O2),针对不同指令架构(即x86-64和AArch64),编译得到不同的二进制代码,用以构建VEX-IR语料库。
在训练过程中,采用负采样的方法加快模型的收敛过程,模型的参数通过随机梯度上升的方法进行更新,梯度通过反向传播获得,同时被更新的还有段落向量和词向量。在预测阶段,当输入新的基本块,模型的参数(U,b)和词汇表W固定不变,只需迭代计算新段落的段落向量即可。
作为本发明实施例中的基于神经网络的跨架构二进制函数相似性检测方法,进一步地,利用改进的Structure2vec模型学习函数控制流图的函数嵌入向量,其中,控制流图节点为基本块语义嵌入向量。进一步地,利用门控循环单元网络并结合Structure2vec模型构建孪生结构的图嵌入模型,随机选择训练样本中由同一源码翻译而来的不同二进制函数构建相似函数对及由不同标准库函数二进制代码构建相异函数对,采用有监督训练方法对图嵌入模型进行训练学习,以获取函数嵌入向量。
依据MPNN架构,在Structure2vec模型的基础上,用一个n层的全连接神经网络实现消息函数M,具体定义如下:
其中,Pi(i=1,…,n)为r×r维的参数矩阵,r为最终的CFG图嵌入向量的维度,W1为r×p维的参数矩阵。在更新函数U中,本案实施例中用GRU(GateRecurrent Unit)网络替换Structure2vec模型中的RNN网络,定义如下:
GRU是LSTM(Long-Short Term Memory)网络的改进,本质上也是一种RNN模型,在解决传统RNN网络在长期记忆和反向传播中的梯度问题的同时,还控制了参数的数量从而加快了训练速度。由公式可知,当经历T轮迭代后,节点v的状态将包含距离为T(即深度)的子节点信息。Xu等人在2018年关于GNN的研究中已经证明,sum函数用作读出函数R的效果最好,本案实施例可采纳这一方法,具体定义如下:
其中,W2是r×r维的参数矩阵。图5展示的是CFG图嵌入模型的整体架构。
模型优化和训练方法:用图5所示的嵌入模型组成孪生架构,两个孪生网络使用相同的超参数,并共享参数。模型采用有监督的训练方法,训练样本为带有指示相似性标签的样本对。随机选择两个由同一源码编译而来的不同二进制函数fn,fm,构建相似函数对<fn,fm,1>;随机选择不同标准库函数的二进制代码,构建相异函数对<fn,fm,-1>。
作为本发明实施例中基于神经网络的跨架构二进制函数相似性检测方法,进一步地,用训练集中样本对并通过反向传播和随机梯度下降来更新函数相似度度量模型参数,使其目标函数值最小化。利用更新后的度量模型来度量目标函数相似性。
函数相似度度量模型可定义如下:
给定一个拥有K个样本对的训练集F,fn,fm∈F,通过反向传播和随机梯度下降,更新模型的参数,使得目标函数(即交叉熵损失函数)的值最小化,具体形式如下:
计算两个函数的CFG图嵌入向量之间的余弦距离,将余弦距离度量两个二进制函数之间的语义相似性。其相似度具有如下规律:假设,给定两个二进制函数fn,fm,存在未知形式的判别式π,使π(fn,fm)=1代表它们是相似的,而π(fn,fm)=-1代表它们是相异的。它们的CFG图嵌入向量分别记作如果π(fn,fm)=1,则Sim(fn,fm)→1;而如果π(fn,fm)=-1,则Sim(fn,fm)→-1。
进一步地,基于上述的方法,本发明实施例还提供一种基于神经网络的跨架构二进制函数相似性检测系统,包含:代码处理模块、向量生成模块和相似度量模块,其中,
代码处理模块,用于针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;
向量生成模块,用于针对优化后的函数控制流图,翻译程序基本块字节码获取中间表示,并生成基本块代码的语义嵌入向量;利用广度优先图遍历算法提取优化后的函数控制流图节点,依据节点的语义嵌入向量和控制流信息获取函数嵌入向量;
相似度量模块,用于计算函数嵌入向量之间的余弦距离,利用该余弦距离来度量函数相似度。
参见图3所示,对二进制函数构建和优化CFG,将基本块字节码翻译为VEX-IR;对基本块VEX-IR做进一步抽象,利用PV-DM模型为基本块VEX-IR代码生成语义嵌入向量;,利用广度优先图遍历算法提取CFG的节点,将节点的语义嵌入向量依次输入到改进后的Structure2vec模型,获得函数嵌入向量;最后一步,通过计算函数嵌入向量间的余弦距离度量函数相似性。此外,系统还构建和维护了一个程序信息库,用于存储代码的相关信息、系统产生的中间数据和模型的嵌入向量。
本案实施例中,PV-DM模型通常被应用于自然语言处理,本发明将语言的概念引申到程序语言中,用自然语言模型学习动态分析的中间表示,即VEX IR代码。将VEX-IR的指令和操作对象视为“单词”,由一条汇编指令翻译而来的一组VEX-IR视为“句子”,基本块中全部的指令序列视为“段落”,为程序基本快的指令序列构建语义相似模型,生成语义嵌入向量。为使程序语言更加接近自然语言风格,利于表征模型的学习,提出了基本块合并和选择性内联的CFG结构优化方法,部分恢复了函数基本块内部的空间连续性。利用图神经网络的MPNN架构,改进了Structure2vec模型,在消息传递阶段,改进了CFG节点向量的初始化方法,即W1×映射过程,此外用GRU网络替代原模型中的RNN网络。虽然不同指令架构的二进制函数的汇编代码有较大差异,但翻译成VEX-IR代码后,能够消除不同指令架构之间的差异,从而降低跨架构的代码相似性检测的难度,同时降低了本发明方法扩展到其他指令架构的工作量和难度,可以提高相似性检测系统的可扩展性。优化后的函数CFG,结构更加简单,基本块内部顺序执行且空间连续,以及抽象后的VEX-IR代码,更利于PV-DM模型的学习。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
基于上述的系统,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的系统。
基于上述的系统,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的系统。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述系统实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述系统实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述系统实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、系统和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和系统,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述系统的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (5)
1.一种基于神经网络的跨架构二进制函数相似性检测方法,其特征在于,包含如下内容:针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;
针对优化后的函数控制流图,翻译程序基本块字节码,获取中间表示VEX-IR,并生成基本块代码的语义嵌入向量,即利用翻译工具对基本块字节码执行中间表达式翻译,获取中间表示VEX-IR;对中间表示VEX-IR应用自定义抽象规则,并将抽象后的基本块中间表示代码同对应的基本块关联存储;利用PV-DM模型为基本块中间表示代码生成语义嵌入向量,并将该语义嵌入向量同对应的基本块关联存储;
利用广度优先图遍历算法提取优化后的函数控制流图节点,依据节点的语义嵌入向量和控制流信息获取函数嵌入向量,即利用改进的Structure2vec模型学习函数控制流图的函数嵌入向量,其控制流图节点为基本块语义嵌入向量,其中,改进的Structure2vec模型中,利用门控循环单元网络并结合Structure2vec模型构建孪生结构的图嵌入模型,利用GRU网络替换Structure2vec模型中的RNN网络;随机选择训练样本中由同一源码翻译而来的不同二进制函数,构建相似函数对,以及由不同标准库函数二进制代码构建相异函数对,采用有监督训练方法对图嵌入模型进行训练学习,以获取函数嵌入向量;
计算函数嵌入向量之间的余弦距离,利用该余弦距离来度量函数相似度;
针对二进制文件函数列表中每个函数的控制流图,分别执行基本块合并和选择性内联操作来优化函数控制流图;对基本块中未识别的子函数采用选择性内联操作,以恢复基本块内部的空间连续性,该选择性内联操作包含如下内容:针对函数的子函数,当子函数满足设定条件时,对子函数进行内联扩展操作,其中,设定条件为:无已识别的全局函数名,在函数嵌入库中无嵌入向量;且,该子函数只有一个基本块构成,其长度与父函数长度的比值小于设定阈值。
2.根据权利要求1所述的基于神经网络的跨架构二进制函数相似性检测方法,其特征在于,基本块合并中,针对内存中非线性分布但顺序执行的连续基本块,依据基本块的出口和入口情形,在遍历函数的基本块过程中,将只有一个出口的基本块和该基本块后续中只有一个入口的基本块进行合并,若该基本块结尾是无条件跳转指令,则删除该跳转指令。
3.根据权利要求1所述的基于神经网络的跨架构二进制函数相似性检测方法,其特征在于,针对PV-DM模型解决中心词预测的多分类问题,实现基本块语义嵌入。
5.一种基于神经网络的跨架构二进制函数相似性检测系统,其特征在于,基于权利要求1所述的方法实现,包含:代码处理模块、向量生成模块和相似度量模块,其中,
代码处理模块,用于针对不同类型的二进制文件,遍历二进制文件函数列表,构建并优化函数控制流图;
向量生成模块,用于针对优化后的函数控制流图,翻译程序基本块字节码获取中间表示,并生成基本块代码的语义嵌入向量;利用广度优先图遍历算法提取优化后的函数控制流图节点,依据节点的语义嵌入向量和控制流信息获取函数嵌入向量;
相似度量模块,用于计算函数嵌入向量之间的余弦距离,利用该余弦距离来度量函数相似度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011163538.6A CN112308210B (zh) | 2020-10-27 | 2020-10-27 | 基于神经网络的跨架构二进制函数相似性检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011163538.6A CN112308210B (zh) | 2020-10-27 | 2020-10-27 | 基于神经网络的跨架构二进制函数相似性检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112308210A CN112308210A (zh) | 2021-02-02 |
CN112308210B true CN112308210B (zh) | 2023-04-07 |
Family
ID=74330889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011163538.6A Active CN112308210B (zh) | 2020-10-27 | 2020-10-27 | 基于神经网络的跨架构二进制函数相似性检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112308210B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861131B (zh) * | 2021-02-08 | 2022-04-08 | 山东大学 | 基于卷积自编码器的库函数识别检测方法及系统 |
CN113177191A (zh) * | 2021-04-16 | 2021-07-27 | 中国人民解放军战略支援部队信息工程大学 | 基于模糊匹配的固件函数相似性检测方法及系统 |
CN113240041B (zh) * | 2021-05-28 | 2022-11-08 | 北京理工大学 | 融合影响因子的二进制函数相似性检测方法 |
CN113312058B (zh) * | 2021-06-22 | 2022-09-02 | 哈尔滨工程大学 | 一种智能合约二进制函数的相似性分析方法 |
CN113254934B (zh) * | 2021-06-29 | 2021-09-24 | 湖南大学 | 基于图匹配网络的二进制代码相似性检测方法及系统 |
CN113572739B (zh) * | 2021-06-30 | 2023-02-24 | 中国人民解放军战略支援部队信息工程大学 | 一种网络有组织攻击入侵检测方法及装置 |
CN113554101A (zh) * | 2021-07-27 | 2021-10-26 | 哈尔滨理工大学 | 一种基于深度学习的二进制代码相似度检测方法 |
CN114047929B (zh) * | 2022-01-12 | 2022-05-03 | 广东省科技基础条件平台中心 | 基于知识增强的用户定义函数识别方法、装置及介质 |
CN114610606B (zh) * | 2022-02-25 | 2023-03-03 | 中国人民解放军国防科技大学 | 基于到达-定值分析的二进制模块相似性匹配方法及装置 |
KR102612695B1 (ko) * | 2022-10-20 | 2023-12-13 | 연세대학교 산학협력단 | 변동성 플로팅 포인트 뉴럴넷을 이동 표적으로 사용하여 바이너리 뉴럴넷을 학습하는 자기지도학습 방법 및 장치, 그리고 이를 이용한 테스트 방법 및 테스트 장치 |
CN115774565B (zh) * | 2023-02-10 | 2023-04-18 | 成都数联云算科技有限公司 | 一种单代码仓库建设方法及系统及装置及介质 |
CN116541273B (zh) * | 2023-04-13 | 2024-01-26 | 中国兵器工业信息中心 | 基于图注意力的二进制代码相似性检测方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110619127A (zh) * | 2019-08-29 | 2019-12-27 | 内蒙古工业大学 | 一种基于神经网络图灵机的蒙汉机器翻译方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10514909B2 (en) * | 2017-03-29 | 2019-12-24 | Technion Research & Development Foundation Limited | Similarity of binaries |
CN110287702B (zh) * | 2019-05-29 | 2020-08-11 | 清华大学 | 一种二进制漏洞克隆检测方法及装置 |
CN110943981B (zh) * | 2019-11-20 | 2022-04-08 | 中国人民解放军战略支援部队信息工程大学 | 基于层次学习的跨架构漏洞挖掘方法 |
CN110990058B (zh) * | 2019-11-28 | 2020-08-21 | 中国人民解放军战略支援部队信息工程大学 | 软件相似性度量方法及装置 |
CN111552969A (zh) * | 2020-04-21 | 2020-08-18 | 中国电力科学研究院有限公司 | 基于神经网络的嵌入式终端软件代码漏洞检测方法及装置 |
CN111639344B (zh) * | 2020-07-31 | 2020-11-20 | 中国人民解放军国防科技大学 | 一种基于神经网络的漏洞检测方法及装置 |
-
2020
- 2020-10-27 CN CN202011163538.6A patent/CN112308210B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110619127A (zh) * | 2019-08-29 | 2019-12-27 | 内蒙古工业大学 | 一种基于神经网络图灵机的蒙汉机器翻译方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112308210A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112308210B (zh) | 基于神经网络的跨架构二进制函数相似性检测方法及系统 | |
Tan et al. | Neural machine translation: A review of methods, resources, and tools | |
Jain et al. | Contrastive code representation learning | |
US11809842B2 (en) | Multi-lingual line-of-code completion system | |
JP6727610B2 (ja) | 文脈解析装置及びそのためのコンピュータプログラム | |
WO2021243706A1 (zh) | 一种跨语言生成提问的方法和装置 | |
Sellam et al. | Deepbase: Deep inspection of neural networks | |
US11829282B2 (en) | Automatic generation of assert statements for unit test cases | |
CN111475820A (zh) | 基于可执行程序的二进制漏洞检测方法、系统及存储介质 | |
EP4204968A1 (en) | Unit test case generation with transformers | |
CN116661805B (zh) | 代码表示的生成方法和装置、存储介质及电子设备 | |
CN112507337A (zh) | 基于语义分析的恶意JavaScript代码检测模型的实现方法 | |
CN110807335A (zh) | 基于机器学习的翻译方法、装置、设备及存储介质 | |
EP4272070A1 (en) | Multi-lingual code generation with zero-shot inference | |
Christopoulou et al. | Distantly supervised relation extraction with sentence reconstruction and knowledge base priors | |
CN115438709A (zh) | 基于代码属性图的代码相似性检测方法 | |
Balog et al. | Neural program synthesis with a differentiable fixer | |
US11620127B2 (en) | Measuring documentation completeness in multiple languages | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
Xu | Research on neural network machine translation model based on entity tagging improvement | |
CN114722843A (zh) | 一种基于Transformer模型优化的神经机器翻译方法 | |
CN113986251A (zh) | 基于卷积和循环神经网络的gui原型图转代码方法 | |
Yan et al. | LSTM-based with deterministic negative sampling for API suggestion | |
Bhatnagar et al. | Neural machine translation of Hindi and English | |
Wang et al. | The code generation method based on gated attention and interAction-LSTM |
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 |