CN114047929A - 基于知识增强的用户定义函数识别方法、装置及介质 - Google Patents
基于知识增强的用户定义函数识别方法、装置及介质 Download PDFInfo
- Publication number
- CN114047929A CN114047929A CN202210029556.8A CN202210029556A CN114047929A CN 114047929 A CN114047929 A CN 114047929A CN 202210029556 A CN202210029556 A CN 202210029556A CN 114047929 A CN114047929 A CN 114047929A
- Authority
- CN
- China
- Prior art keywords
- text
- data set
- user
- word vectors
- disassembled
- 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.)
- Granted
Links
Images
Classifications
-
- 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/53—Decompilation; Disassembly
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Image Analysis (AREA)
- Character Discrimination (AREA)
Abstract
本发明公开了一种基于知识增强的用户定义函数识别方法、装置及介质,包括:对用户定义函数的反汇编文本进行预处理和划分处理,获得训练数据集;对其操作码进行词嵌入,生成词向量;将词向量输入Transformer模型,获取经过初始预训练过的Transformer模型;对预设数量阈值的词向量进行遮罩处理;将所有词向量输入到经过初始预训练过的Transformer模型,输出词向量的编码结果并将其作为反汇编文本的编码特征信息,将统计特征转换为三通道的图像以获取反汇编文本的统计特征信息,并将统计特征信息和编码特征信息进行拼接,输入全连接神经网络中,得到用户定义函数分类模型。本发明实施例能够准确识别用户定义函数。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于知识增强的用户定义函数识别方法、装置及介质。
背景技术
当前,绝大多数软件都是以可执行的二进制代码而非源代码的形式发布,可供手机、电脑等运行使用。二进制代码与源代码之间存在巨大的差异,不仅表现在二进制代码更缺乏可读性,还表现在对二进制代码进行逆向分析时,能挖掘出源代码中难以分析或无法发现的漏洞。然而,由于二进制代码漏洞的存在,软件极其容易遭到恶意攻击,这严重损害了软件的质量,特别是只公开了二进制代码的未开源软件,可能存在更多未被发现或修复的漏洞,有更高的安全隐患。因此,二进制代码漏洞的发现具有较高的实际应用价值,能够帮助软件开发者加固现有软件,保证软件质量。
二进制代码包括用户定义函数、库函数和编译器函数,与库函数、编译器函数相比,用户定义函数更容易出现代码漏洞问题,如堆栈溢出。因此,在分析某一个二进制代码是否存在漏洞时,需要着重关注并筛选出用户编写的函数即用户定义函数。然而,二进制代码通常由成百上千的函数组成,因此,从中准确识别出用户定义函数显得尤为重要。
发明内容
本发明实施例的目的是提供一种基于知识增强的用户定义函数识别方法、装置及介质,能够快速、准确识别用户定义函数,准确率较高。
为实现上述目的,本发明实施例提供了一种基于知识增强的用户定义函数识别方法,包括:
对软件样本进行反汇编处理,并从中提取所述软件样本的类型为用户定义函数的反汇编文本;其中,所述反汇编文本包括由操作码组成的操作码序列;
对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集;
对所述训练数据集中的操作码进行词嵌入,生成词向量;
将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型;
根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理;
将经过遮罩处理过的所述词向量和未经过遮罩处理过的所述词向量输入到所述经过初始预训练过的Transformer模型,输出所述词向量的编码结果并将所述词向量的编码结果作为所述反汇编文本的编码特征信息,以获取经过预训练过的Transformer模型;
获取所述反汇编文本的统计特征,并将所述统计特征转换为三通道的图像,输入至预先构建的Resnet 18模型中,输出所述反汇编文本的统计特征信息,并将所述统计特征信息和所述编码特征信息进行拼接,得到拼接特征信息;
将所述拼接特征信息输入预先构建的全连接神经网络中,并使用中心损失函数进行训练,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。
作为上述方案的改进,所述对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集,包括:
通过MD5信息摘要算法计算所述反汇编文本的MD5值,以剔除所述反汇编文本中相同的用户定义函数;
对剩余的操作码进行数量统计,以对统计个数最高的N个操作码进行编码,生成初始编码对照表;其中,N≥1,N为整数;
在所述初始编码对照表中加入预设的自定义词,得到中间编码对照表,并判断所述中间编码对照表中的操作码序列的长度是否大于S;其中,S≥1,S为整数;
若是,则进行操作码序列末尾截断操作,否则,使用自定义词PAD进行操作码序列填充操作,直至所述中间编码对照表中的操作码的长度一致得到最终编码对照表;
对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集。
作为上述方案的改进,在所述对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集之后,所述基于知识增强的用户定义函数识别方法还包括:
对所述训练数据集中的除了所述自定义词的操作码进行大写字母转为小写字母的处理。
作为上述方案的改进,所述对所述训练数据集中的操作码进行词嵌入,生成词向量,包括:
将所述训练数据集中的操作码输入预先构建的Embedding网络层中,并基于所述最终编码对照表,输出对应所述训练数据集中的操作码的词向量。
作为上述方案的改进,所述根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理,包括:
根据预先构建的掩码语言模型对15%的所述词向量进行遮罩处理,其中,所述15%的所述词向量中包括80%的词向量使用自定义词MASK遮罩、10%的词向量替换为所述最终编码对照表中的其他编码,10%的词向量不进行处理。
作为上述方案的改进,所述统计特征至少包括:寄存器数量统计特征、操作码数量统计特征、基本块的数量。
为实现上述目的,本发明实施例还提供了一种基于知识增强的用户定义函数识别装置,包括:
反汇编文本提取模块,用于对软件样本进行反汇编处理,并从中提取所述软件样本的类型为用户定义函数的反汇编文本;其中,所述反汇编文本包括由操作码组成的操作码序列;
训练数据集获取模块,用于对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集;
词向量生成模块,用于对所述训练数据集中的操作码进行词嵌入,生成词向量;
Transformer模型初始预训练模块,用于将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型;
遮罩处理模块,用于根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理;
Transformer模型预训练模块,用于将经过遮罩处理过的所述词向量和未经过遮罩处理过的所述词向量输入到所述经过初始预训练过的Transformer模型,输出所述词向量的编码结果并将所述词向量的编码结果作为所述反汇编文本的编码特征信息,以获取经过预训练过的Transformer模型;
拼接特征信息获取模块,用于获取所述反汇编文本的统计特征,并将所述统计特征转换为三通道的图像,输入至预先构建的Resnet 18模型中,输出所述反汇编文本的统计特征信息,并将所述统计特征信息和所述编码特征信息进行拼接,得到拼接特征信息;
函数类别识别模块,用于将所述拼接特征信息输入预先构建的全连接神经网络中,并使用中心损失函数进行训练,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。
为实现上述目的,本发明实施例还提供了一种电子装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如上述所述的基于知识增强的用户定义函数识别方法。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如上述所述的基于知识增强的用户定义函数识别方法。
与现有技术相比,本发明实施例提供的一种基于知识增强的用户定义函数识别方法、装置及介质,通过对Transformer模型进行初始训练和预训练,得到反汇编文本的编码特征信息,通过对Resnet 18模型进行训练,得到反汇编文本的统计特征信息,最后融合反汇编文本的统计特征信息和编码特征信息,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。由此可见,本发明实施例通过先后进行由易到难的知识增强预训练任务,模型能够逐步从函数的反汇编操作码序列中学习到由简单到复杂的上下文信息,提高了模型学习过程的可解释性,通过融合反汇编文本的统计特征信息和编码特征信息能够表达更丰富的函数信息,特征性更强,进而能够更准确识别用户定义函数,准确性高、效率快。
附图说明
图1是本发明实施例提供的一种基于知识增强的用户定义函数识别方法的流程图;
图2是本发明实施例提供的一种基于知识增强的用户定义函数识别方法的又一流程图;
图3是本发明实施例提供的一种基于知识增强的用户定义函数识别装置的结构框图;
图4是本发明实施例提供的一种电子装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1-2,是本发明实施例提供的一种基于知识增强的用户定义函数识别方法的流程图,所述基于知识增强的用户定义函数识别方法,包括:
S1、对软件样本进行反汇编处理,并从中提取所述软件样本的类型为用户定义函数的反汇编文本;其中,所述反汇编文本包括由操作码组成的操作码序列;
S2、对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集;
S3、对所述训练数据集中的操作码进行词嵌入,生成词向量;
S4、将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型;
S5、根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理;
S6、将经过遮罩处理过的所述词向量和未经过遮罩处理过的所述词向量输入到所述经过初始预训练过的Transformer模型,输出所述词向量的编码结果并将所述词向量的编码结果作为所述反汇编文本的编码特征信息,以获取经过预训练过的Transformer模型;
S7、获取所述反汇编文本的统计特征,并将所述统计特征转换为三通道的图像,输入至预先构建的Resnet 18模型中,输出所述反汇编文本的统计特征信息,并将所述统计特征信息和所述编码特征信息进行拼接,得到拼接特征信息;
S8、将所述拼接特征信息输入预先构建的全连接神经网络中,并使用中心损失函数进行训练,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。
可以理解的是,在本发明实施例中,用户定义函数指用户使用编程软件自行声明并定义的函数。
具体地,在步骤S1中,所述软件样本为形式为二进制可执行代码的软件样本,使用IDAPython对软件样本进行反汇编处理,得到反汇编文本。
具体地,在步骤S2中,对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集,包括:
S21、通过MD5信息摘要算法计算所述反汇编文本的MD5值,以剔除所述反汇编文本中相同的用户定义函数;
S22、对剩余的操作码进行数量统计,以对统计个数最高的N个操作码进行编码,生成初始编码对照表;其中,N≥1,N为整数;
S23、在所述初始编码对照表中加入预设的自定义词,得到中间编码对照表,并判断所述中间编码对照表中的操作码序列的长度是否大于S;其中,S≥1,S为整数;
S24、若是,则进行操作码序列末尾截断操作,否则,使用自定义词PAD进行操作码序列填充操作,直至所述中间编码对照表中的操作码的长度一致得到最终编码对照表;
S25、对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集。
值得说明的是,在步骤S21中,通过MD5信息摘要算法计算反汇编文本的MD5值,剔除了反汇编文本相同的函数,以防止训练数据集和测试数据集中出现相同的函数,其中,MD5的计算结果是通过Python编程语言的hashlib库的md5接口得到的,接口的输入为反汇编文本,接口的输出为长度128位的MD5值。
可选地,在步骤S22中,对统计个数最高的N个操作码从小标5开始编码,生成初始编码对照表。
可选地,在步骤S23中,所述预设的自定义词为PAD、CLS、UNK、SEP、MASK,其中,PAD表示填充,CLS表示起始标志,UNK表示编码对照表之外的词,SEP表示分隔符,MASK表示遮罩,对这5个自定义词进行编码,即从下标0开始对自定义词标号,并将这些编码加入至初始编码对照表中,得到中间编码对照表。
可选地,在步骤S24中,将最终编码对照表中不存在的词替换为自定义词UNK。
优选地,在步骤S25中,根据得到的最终编码对照表,按照9:1的比例划分出训练数据集与测试数据集。
可选地,在步骤S25所述对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集之后,所述基于知识增强的用户定义函数识别方法还包括:
S26、对所述训练数据集中的除了所述自定义词的操作码进行大写字母转为小写字母的处理。
具体地,在步骤S3中,所述对所述训练数据集中的操作码进行词嵌入,生成词向量,包括:
将所述训练数据集中的操作码输入预先构建的Embedding网络层中,并基于所述最终编码对照表,输出对应所述训练数据集中的操作码的词向量。
具体地,设置词向量的嵌入维度为d,向预先构建的Embedding网络层输入训练数据集中的操作码;其中,d≥1,d为整数;
根据所述最终编码对照表,所述Embedding网络层输出对应所述训练数据集中的操作码的词向量。
可以理解的是,在此步骤及之后的步骤中,将反汇编文本中的操作码视为词。
具体地,在步骤S4中,所述将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型,包括:
确定所述训练数据集中的操作码对应的第一类型;其中,所述第一类型包括普通指令、算数指令、逻辑指令、栈指令和其他类型;
确定所述训练数据集中的操作码的首字母、尾字母分别对应的第二类型;其中所述第二类型共27类,包括26个小写字母和其他类型;
利用预先构建的Transformer模型进行初始预训练任务,输入步骤S3得到的词向量,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果。
可以理解的是,在本发明实施例中,通过对词向量进行操作码类型预测、操作码首字母预测、操作码尾字母预测的知识增强预训练任务,得到经过初始预训练过的Transformer模型。
值得说明的是,预先构建的Transformer编码器模型由六层组成:输入层、位置编码层、自注意力层、归一化层、前向反馈层以及输出层。输入层接收词向量作为输入,位置编码层为词向量提供位置信息,自注意力层使用自注意力机制获取词与词之间的相互关注程度,归一化层进行层归一化操作,输出层输出训练数据集和测试数据集的词的编码结果。
具体地,在步骤S5中,所述根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理,包括:
根据预先构建的掩码语言模型对15%的所述词向量进行遮罩处理,其中,所述15%的所述词向量中包括80%的词向量使用自定义词MASK遮罩、10%的词向量替换为所述最终编码对照表中的其他编码,10%的词向量不进行处理。
可以理解的是,从步骤S3得到的词向量中随机取15%的编码,对这取出的15%编码中的80%编码使用自定义词MASK遮罩,10%编码替换为步骤2中生成的最终编码对照表中的其他编码,剩余的10%编码不进行处理。
可以理解的是,在步骤S6中,由于与词有关的预测任务要通过上下文信息来预测,因此输入到初始预训练过的Transformer模型的词向量是整个用户定义函数的词向量,里面有15%的词向量经过了遮罩处理,另外85%的词向量未经过遮罩处理;在本发明实施例中,通过对所有词向量进行反汇编操作码预测的知识增强预训练任务,即将所有词向量输入到经过初始预训练过的Transformer模型中,该模型输出的词向量的编码结果用于本步骤中的反汇编操作码预测的知识增强预训练任务,最终得到经过预训练的Transformer模型。
具体地,在步骤S7中,所述统计特征至少包括:寄存器数量统计特征、操作码数量统计特征、基本块的数量。
可以理解的是,所述反汇编文本的统计特征包括:寄存器数量统计特征、操作码数量统计特征以及其他特征(例如基本块的数量等)。
可以理解是,在步骤S8中,将融合了所述统计特征信息和所述编码特征信息输入到预先构建的全连接神经网络,并使用中心损失函数进行训练,以增大不同的类的样本间距离、减小相同的类的样本间距离,最终得到用户定义函数分类模型。
在一具体实施例中,采用测试数据集上的函数类别识别结果的准确率来评估本发明实施例的效果:本发明实施例在形式为二进制可执行代码的软件样本上进行实验以本发明实施例的效果,该数据集共含1323个样本文件,共提取得到63108个函数的反汇编文本,其中用户函数的反汇编文本共60249个,非用户函数的反汇编文本共2859个,符合在一般二进制代码中用户函数占比远高于非用户函数占比的情形。数据集分别按用户函数类别和非用户函数类别划分出90%的训练数据、10%的测试数据。经过100轮迭代后,仅使用反汇编文本的编码特征训练的Transformer编码器模型的测试数据集的函数类别识别准确率为95.85%。而本发明实施例提出的方法通过融合反汇编文本的统计特征信息和编码特征信息,能在同样的数据集上取得更好的准确率,测试数据集的函数类别识别准确率达到96.50%。
参见图3,图3是本发明实施例提供的一种基于知识增强的用户定义函数识别装置10的结构框图,所述基于知识增强的用户定义函数识别装置10,包括:
反汇编文本提取模块11,用于对软件样本进行反汇编处理,并从中提取所述软件样本的类型为用户定义函数的反汇编文本;其中,所述反汇编文本包括由操作码组成的操作码序列;
训练数据集获取模块12,用于对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集;
词向量生成模块13,用于对所述训练数据集中的操作码进行词嵌入,生成词向量;
Transformer模型初始预训练模块14,用于将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型;
遮罩处理模块15,用于根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理;
Transformer模型预训练模块16,用于将经过遮罩处理过的所述词向量和未经过遮罩处理过的所述词向量输入到所述经过初始预训练过的Transformer模型,输出所述词向量的编码结果并将所述词向量的编码结果作为所述反汇编文本的编码特征信息,以获取经过预训练过的Transformer模型;
拼接特征信息获取模块17,用于获取所述反汇编文本的统计特征,并将所述统计特征转换为三通道的图像,输入至预先构建的Resnet 18模型中,输出所述反汇编文本的统计特征信息,并将所述统计特征信息和所述编码特征信息进行拼接,得到拼接特征信息;
函数类别识别模块18,用于将所述拼接特征信息输入预先构建的全连接神经网络中,并使用中心损失函数进行训练,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。
优选地,所述对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集,包括:
通过MD5信息摘要算法计算所述反汇编文本的MD5值,以剔除所述反汇编文本中相同的用户定义函数;
对剩余的操作码进行数量统计,以对统计个数最高的N个操作码进行编码,生成初始编码对照表;其中,N≥1,N为整数;
在所述初始编码对照表中加入预设的自定义词,得到中间编码对照表,并判断所述中间编码对照表中的操作码序列的长度是否大于S;其中,S≥1,S为整数;
若是,则进行操作码序列末尾截断操作,否则,使用自定义词PAD进行操作码序列填充操作,直至所述中间编码对照表中的操作码的长度一致得到最终编码对照表;
对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集。
优选地,在所述对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集之后,所述基于知识增强的用户定义函数识别方法还包括:
对所述训练数据集中的除了所述自定义词的操作码进行大写字母转为小写字母的处理。
优选地,所述对所述训练数据集中的操作码进行词嵌入,生成词向量,包括:
将所述训练数据集中的操作码输入预先构建的Embedding网络层中,并基于所述最终编码对照表,输出对应所述训练数据集中的操作码的词向量。
优选地,所述根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理,包括:
根据预先构建的掩码语言模型对15%的所述词向量进行遮罩处理,其中,所述15%的所述词向量中包括80%的词向量使用自定义词MASK遮罩、10%的词向量替换为所述最终编码对照表中的其他编码,10%的词向量不进行处理。
优选地,所述统计特征至少包括:寄存器数量统计特征、操作码数量统计特征、基本块的数量。
值得说明的是,本发明实施例所述的基于知识增强的用户定义函数识别装置10中各个模块的工作过程可参考上述实施例所述的基于知识增强的用户定义函数识别方法的工作过程,在此不再赘述。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如上述实施例所述的基于知识增强的用户定义函数识别方法。
参见图4,图4是本发明实施例提供的一种电子装置20的结构框图,所述电子装置20包括:处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述基于知识增强的用户定义函数识别方法实施例中的步骤。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子装置20中的执行过程。
所述电子装置20可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述电子装置20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是电子装置20的示例,并不构成对电子装置20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子装置20还可以包括输入输出设备、网络接入设备、总线等。
所称处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述电子装置20的控制中心,利用各种接口和线路连接整个电子装置20的各个部分。
所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述电子装置20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述电子装置20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例所提供的一种基于知识增强的用户定义函数识别方法、装置及介质,通过对Transformer模型进行初始训练和预训练,得到反汇编文本的编码特征信息,通过对Resnet 18模型进行训练,得到反汇编文本的统计特征信息,最后融合反汇编文本的统计特征信息和编码特征信息,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果,具有如下有益效果:
(1)本发明实施例先采用操作码类型预测、操作码首字母预测、操作码尾字母预测的知识增强预训练任务,在此基础上再进行反汇编操作码预测的知识增强预训练任务,这样,能够让模型先学习到更容易学习的信息(例如首字母都是a且尾字母都是d的反汇编操作码add和and不属于同一种操作指令类型),在获取了一定的知识后再进行更加困难的学习任务,通过先后进行由易到难的知识增强预训练任务,使得模型逐步从函数的反汇编操作码序列中学习到由简单到复杂的上下文信息,提高模型学习过程的可解释性。
(2)本发明实施例使用融合了反汇编统计信息和反汇编文本信息的特征,能够表达更多的函数信息,提升模型的分类效果,准确性更高。
(3)本发明实施例提出的方法具有普适性,不仅仅针对于二进制用户定义函数识别,理论上能够获得相关文本特征的可执行代码均可使用本发明。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (9)
1.一种基于知识增强的用户定义函数识别方法,其特征在于,包括:
对软件样本进行反汇编处理,并从中提取所述软件样本的类型为用户定义函数的反汇编文本;其中,所述反汇编文本包括由操作码组成的操作码序列;
对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集;
对所述训练数据集中的操作码进行词嵌入,生成词向量;
将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型;
根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理;
将经过遮罩处理过的所述词向量和未经过遮罩处理过的所述词向量输入到所述经过初始预训练过的Transformer模型,输出所述词向量的编码结果并将所述词向量的编码结果作为所述反汇编文本的编码特征信息,以获取经过预训练过的Transformer模型;
获取所述反汇编文本的统计特征,并将所述统计特征转换为三通道的图像,输入至预先构建的Resnet 18模型中,输出所述反汇编文本的统计特征信息,并将所述统计特征信息和所述编码特征信息进行拼接,得到拼接特征信息;
将所述拼接特征信息输入预先构建的全连接神经网络中,并使用中心损失函数进行训练,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。
2.如权利要求1所述的基于知识增强的用户定义函数识别方法,其特征在于,所述对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集,包括:
通过MD5信息摘要算法计算所述反汇编文本的MD5值,以剔除所述反汇编文本中相同的用户定义函数;
对剩余的操作码进行数量统计,以对统计个数最高的N个操作码进行编码,生成初始编码对照表;其中,N≥1,N为整数;
在所述初始编码对照表中加入预设的自定义词,得到中间编码对照表,并判断所述中间编码对照表中的操作码序列的长度是否大于S;其中,S≥1,S为整数;
若是,则进行操作码序列末尾截断操作,否则,使用自定义词PAD进行操作码序列填充操作,直至所述中间编码对照表中的操作码的长度一致得到最终编码对照表;
对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集。
3.如权利要求2所述的基于知识增强的用户定义函数识别方法,其特征在于,在所述对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集之后,所述基于知识增强的用户定义函数识别方法还包括:
对所述训练数据集中的除了所述自定义词的操作码进行大写字母转为小写字母的处理。
4.如权利要求1所述的基于知识增强的用户定义函数识别方法,其特征在于,所述对所述训练数据集中的操作码进行词嵌入,生成词向量,包括:
将所述训练数据集中的操作码输入预先构建的Embedding网络层中,并基于所述最终编码对照表,输出对应所述训练数据集中的操作码的词向量。
5.如权利要求1所述的基于知识增强的用户定义函数识别方法,其特征在于,所述根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理,包括:
根据预先构建的掩码语言模型对15%的所述词向量进行遮罩处理,其中,所述15%的所述词向量中包括80%的词向量使用自定义词MASK遮罩、10%的词向量替换为所述最终编码对照表中的其他编码,10%的词向量不进行处理。
6.如权利要求1所述的基于知识增强的用户定义函数识别方法,其特征在于,所述统计特征至少包括:寄存器数量统计特征、操作码数量统计特征、基本块的数量。
7.一种基于知识增强的用户定义函数识别装置,其特征在于,包括:
反汇编文本提取模块,用于对软件样本进行反汇编处理,并从中提取所述软件样本的类型为用户定义函数的反汇编文本;其中,所述反汇编文本包括由操作码组成的操作码序列;
训练数据集获取模块,用于对所述反汇编文本进行预处理,得到最终编码对照表,对所述最终编码对照表中的操作码进行划分处理,获得训练数据集和测试数据集;
词向量生成模块,用于对所述训练数据集中的操作码进行词嵌入,生成词向量;
Transformer模型初始预训练模块,用于将所述词向量输入预先构建的Transformer模型中,输出操作码类型预测结果、操作码首字母预测结果、操作码尾字母预测结果,以获取经过初始预训练过的Transformer模型;
遮罩处理模块,用于根据预先构建的掩码语言模型对预设数量阈值的所述词向量进行遮罩处理;
Transformer模型预训练模块,用于将经过遮罩处理过的所述词向量和未经过遮罩处理过的所述词向量输入到所述经过初始预训练过的Transformer模型,输出所述词向量的编码结果并将所述词向量的编码结果作为所述反汇编文本的编码特征信息,以获取经过预训练过的Transformer模型;
拼接特征信息获取模块,用于获取所述反汇编文本的统计特征,并将所述统计特征转换为三通道的图像,输入至预先构建的Resnet 18模型中,输出所述反汇编文本的统计特征信息,并将所述统计特征信息和所述编码特征信息进行拼接,得到拼接特征信息;
函数类别识别模块,用于将所述拼接特征信息输入预先构建的全连接神经网络中,并使用中心损失函数进行训练,得到用户定义函数分类模型,以通过所述用户定义函数分类模型输出函数类别的识别结果。
8.一种电子装置,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1~6任一项所述的基于知识增强的用户定义函数识别方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1~6任一项所述的基于知识增强的用户定义函数识别方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210029556.8A CN114047929B (zh) | 2022-01-12 | 2022-01-12 | 基于知识增强的用户定义函数识别方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210029556.8A CN114047929B (zh) | 2022-01-12 | 2022-01-12 | 基于知识增强的用户定义函数识别方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114047929A true CN114047929A (zh) | 2022-02-15 |
CN114047929B CN114047929B (zh) | 2022-05-03 |
Family
ID=80196290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210029556.8A Active CN114047929B (zh) | 2022-01-12 | 2022-01-12 | 基于知识增强的用户定义函数识别方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114047929B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115358213A (zh) * | 2022-10-20 | 2022-11-18 | 阿里巴巴(中国)有限公司 | 模型数据处理及模型预训练方法、电子设备及存储介质 |
CN116108145A (zh) * | 2023-04-12 | 2023-05-12 | 山景智能(北京)科技有限公司 | 基于预训练的风控分析方法及装置 |
CN116662582A (zh) * | 2023-08-01 | 2023-08-29 | 成都信通信息技术有限公司 | 基于自然语言的特定领域业务知识检索方法及检索装置 |
CN118094255A (zh) * | 2024-04-29 | 2024-05-28 | 杭州默安科技有限公司 | 一种过滤函数的识别方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679495A (zh) * | 2013-12-02 | 2015-06-03 | 贝壳网际(北京)安全技术有限公司 | 软件识别方法及装置 |
US20200089882A1 (en) * | 2018-09-18 | 2020-03-19 | International Business Machines Corporation | System and method for machine based detection of a malicious executable file |
CN111651768A (zh) * | 2020-08-05 | 2020-09-11 | 中国人民解放军国防科技大学 | 计算机二进制程序的链接库函数名识别方法及装置 |
CN112308210A (zh) * | 2020-10-27 | 2021-02-02 | 中国人民解放军战略支援部队信息工程大学 | 基于神经网络的跨架构二进制函数相似性检测方法及系统 |
CN112668009A (zh) * | 2020-11-24 | 2021-04-16 | 暨南大学 | 一种基于层次注意力网络模型的恶意软件分类方法 |
CN112861131A (zh) * | 2021-02-08 | 2021-05-28 | 山东大学 | 基于卷积自编码器的库函数识别检测方法及系统 |
CN113900923A (zh) * | 2021-08-16 | 2022-01-07 | 中国人民解放军战略支援部队信息工程大学 | 一种跨指令集架构的二进制函数相似性检查系统及方法 |
-
2022
- 2022-01-12 CN CN202210029556.8A patent/CN114047929B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679495A (zh) * | 2013-12-02 | 2015-06-03 | 贝壳网际(北京)安全技术有限公司 | 软件识别方法及装置 |
US20200089882A1 (en) * | 2018-09-18 | 2020-03-19 | International Business Machines Corporation | System and method for machine based detection of a malicious executable file |
CN111651768A (zh) * | 2020-08-05 | 2020-09-11 | 中国人民解放军国防科技大学 | 计算机二进制程序的链接库函数名识别方法及装置 |
CN112308210A (zh) * | 2020-10-27 | 2021-02-02 | 中国人民解放军战略支援部队信息工程大学 | 基于神经网络的跨架构二进制函数相似性检测方法及系统 |
CN112668009A (zh) * | 2020-11-24 | 2021-04-16 | 暨南大学 | 一种基于层次注意力网络模型的恶意软件分类方法 |
CN112861131A (zh) * | 2021-02-08 | 2021-05-28 | 山东大学 | 基于卷积自编码器的库函数识别检测方法及系统 |
CN113900923A (zh) * | 2021-08-16 | 2022-01-07 | 中国人民解放军战略支援部队信息工程大学 | 一种跨指令集架构的二进制函数相似性检查系统及方法 |
Non-Patent Citations (3)
Title |
---|
AIZAZ SHARIF 等: "Function Identification in Android Binaries with Deep Learning", 《2019 SEVENTH INTERNATIONAL SYMPOSIUM ON COMPUTING AND NETWORKING (CANDAR)》 * |
孙玉霞 等: "一种面向传感器网络应用程序的有效测试方法", 《计算机学报》 * |
李宜卓: "基于机器学习的 ARM 平台二进制代码 函数识别研究", 《中国优秀硕士论文全文数据库(信息科技辑)》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115358213A (zh) * | 2022-10-20 | 2022-11-18 | 阿里巴巴(中国)有限公司 | 模型数据处理及模型预训练方法、电子设备及存储介质 |
CN116108145A (zh) * | 2023-04-12 | 2023-05-12 | 山景智能(北京)科技有限公司 | 基于预训练的风控分析方法及装置 |
CN116662582A (zh) * | 2023-08-01 | 2023-08-29 | 成都信通信息技术有限公司 | 基于自然语言的特定领域业务知识检索方法及检索装置 |
CN116662582B (zh) * | 2023-08-01 | 2023-10-10 | 成都信通信息技术有限公司 | 基于自然语言的特定领域业务知识检索方法及检索装置 |
CN118094255A (zh) * | 2024-04-29 | 2024-05-28 | 杭州默安科技有限公司 | 一种过滤函数的识别方法、装置、设备及存储介质 |
CN118094255B (zh) * | 2024-04-29 | 2024-07-30 | 杭州默安科技有限公司 | 一种过滤函数的识别方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114047929B (zh) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114047929B (zh) | 基于知识增强的用户定义函数识别方法、装置及介质 | |
CN109905385B (zh) | 一种webshell检测方法、装置及系统 | |
CN116361801B (zh) | 基于应用程序接口语义信息的恶意软件检测方法及系统 | |
Arakelyan et al. | Bin2vec: learning representations of binary executable programs for security tasks | |
CN115730313A (zh) | 一种恶意文档检测方法、装置、存储介质及设备 | |
CN114547315A (zh) | 一种案件分类预测方法、装置、计算机设备及存储介质 | |
CN107943788B (zh) | 企业简称生成方法、装置及存储介质 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN111488574A (zh) | 恶意软件分类方法、系统、计算机设备和存储介质 | |
Wang et al. | Gvd-net: Graph embedding-based machine learning model for smart contract vulnerability detection | |
CN110674497B (zh) | 一种恶意程序相似度计算的方法和装置 | |
CN112926647A (zh) | 模型训练方法、域名检测方法及装置 | |
CN111859933A (zh) | 马来语识别模型的训练方法、识别方法、装置、设备 | |
US20230130662A1 (en) | Method and apparatus for analyzing multimodal data | |
CN111191238A (zh) | 一种webshell检测方法、终端设备及存储介质 | |
CN108875374B (zh) | 基于文档节点类型的恶意pdf检测方法及装置 | |
CN116595537A (zh) | 一种基于多模态特征的生成式智能合约的漏洞检测方法 | |
CN115618019A (zh) | 知识图谱构建方法、装置及终端设备 | |
CN113836297B (zh) | 文本情感分析模型的训练方法及装置 | |
CN113434630B (zh) | 客服服务评估方法、装置、终端设备及介质 | |
CN117371447A (zh) | 命名实体识别模型的训练方法、装置及存储介质 | |
CN117113351B (zh) | 一种基于多重多级预训练的软件分类方法及设备 | |
CN113971282A (zh) | 一种基于ai模型的恶意应用程序检测方法及设备 | |
CN116578979B (zh) | 一种基于代码特征的跨平台二进制代码匹配方法及系统 | |
CN113139187B (zh) | 一种预训练语言模型的生成、检测方法及装置 |
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 |