CN117113351B - 一种基于多重多级预训练的软件分类方法及设备 - Google Patents
一种基于多重多级预训练的软件分类方法及设备 Download PDFInfo
- Publication number
- CN117113351B CN117113351B CN202311345558.9A CN202311345558A CN117113351B CN 117113351 B CN117113351 B CN 117113351B CN 202311345558 A CN202311345558 A CN 202311345558A CN 117113351 B CN117113351 B CN 117113351B
- Authority
- CN
- China
- Prior art keywords
- text
- function
- basic block
- statistical
- representation
- 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
- 238000012549 training Methods 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims abstract description 27
- 239000013598 vector Substances 0.000 claims abstract description 117
- 238000012512 characterization method Methods 0.000 claims abstract description 63
- 238000007781 pre-processing Methods 0.000 claims abstract description 10
- 238000007499 fusion processing Methods 0.000 claims abstract description 4
- 238000012216 screening Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 135
- 230000004927 fusion Effects 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 14
- 230000011218 segmentation Effects 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000008520 organization Effects 0.000 claims description 7
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 4
- 230000006872 improvement Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000006698 induction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- 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
-
- 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)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Virology (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于多重多级预训练的软件分类方法及设备,所述方法包括:对二进制软件进行反汇编得到反汇编代码文本;对反汇编代码文本进行预处理,并从预处理后的反汇编代码文本中筛选出用户定义函数,得到类反汇编代码文本并输入到文本表征生成模块,得到文本表征;基于二进制软件中的字节统计特征、PE文件统计特征,以及反汇编代码文本中的反汇编统计特征,确定统计特征向量并输入至统计表征生成模块,得到统计表征;对文本表征和统计表征进行融合处理,得到样本表征并输入至分类网络模型,得到二进制软件的代码分类识别结果。本发明能够实现高精度的软件分类。
Description
技术领域
本发明涉及计算机软件领域,尤其涉及一种基于多重多级预训练的软件分类方法及设备。
背景技术
在系统安全和软件工程领域,存在大量针对软件二进制代码的分析、检测和测试问题,包括针对可执行软件代码的作者组织分类问题,针对恶意代码的家族分类问题等。近年来,随着深度学习和BERT(Bidirectional Encoder Representation fromTransformers,基于Transformer的双向编码器表征)等语言模型在处理文本分类问题上取得显著成效,越来越多的技术开始使用深度学习语言模型来解决软件二进制代码的各种分类问题。
但是,现有技术中所使用的软件代码文本通常没有进行充分的标注,而且一般使用的面向软件代码文本的很多语言模型存在时间步较短、特征粒度较粗等问题,从而导致软件分类的精度不高。
发明内容
为了解决上述技术问题,本发明实施例提出了一种基于多重多级预训练的软件分类方法及设备,能够实现高精度的软件分类。
为了实现上述目的,本发明实施例提供了一种基于多重多级预训练的软件分类方法,包括:
获取待分类的二进制软件;
对所述二进制软件进行反汇编处理得到反汇编代码文本;
对所述反汇编代码文本进行预处理,并从预处理后的反汇编代码文本中筛选出用户定义函数,得到类反汇编代码文本;
将所述类反汇编代码文本输入到基于多重多级预训练任务的文本表征生成模块,得到所述文本表征生成模块输出的文本表征;其中,所述文本表征生成模块包括基本块表征子模块、函数表征子模块和文本表征子模块;
从所述二进制软件中提取字节统计特征以及PE文件统计特征,从所述反汇编代码文本中提取反汇编统计特征,并基于所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征,确定统计特征向量;
将所述统计特征向量输入至预设的统计表征生成模块,得到所述统计表征生成模块输出的统计表征;
根据预设的超参数,对所述文本表征和所述统计表征进行融合处理,得到样本表征,并将所述样本表征输入至预设的分类网络模型,得到所述分类网络模型输出的所述二进制软件的分类结果;
其中,所述分类结果包括代码分类识别结果,当所述二进制软件为恶意软件时,所述代码分类识别结果为所述恶意软件的组织分类识别结果。
进一步的,所述基本块表征子模块包括N1个编码器,所述函数表征子模块包括N2个编码器,所述文本表征子模块包括N3个编码器;
所述将所述类反汇编代码文本输入到基于多重多级预训练任务的文本表征生成模块,得到所述文本表征生成模块输出的文本表征,具体包括:
将所述类反汇编代码文本输入到所述基本块表征子模块,通过所述基本块表征子模块对所述类反汇编代码文本进行词嵌入,并根据N1个不同的第一预训练任务,采用所述N1个编码器分别对词嵌入后的所述类反汇编代码文本进行训练,得到N1个基本块编码向量,将N1个所述基本块编码向量融合为基本块编码融合向量;
将所述基本块编码融合向量输入到所述函数表征子模块,通过所述函数表征子模块在所述基本块编码融合向量前插入所述类反汇编代码文本中包含的函数起始标志,并根据N2个不同的第二预训练任务,采用所述N2个编码器分别对插入标志后的基本块编码融合向量进行训练,得到N2个函数编码向量,将N2个所述函数编码向量融合为函数编码融合向量;
将所述函数编码融合向量输入到所述文本表征子模块,通过所述文本表征子模块在所述函数编码融合向量前插入所述类反汇编代码文本对应的文本起始标志,并根据N3个不同的第三预训练任务,采用所述N3个编码器分别对插入标志后的函数编码融合向量进行训练,得到N3个文本编码向量,将N3个所述文本编码向量融合为所述文本表征;
其中,每一所述第一预训练任务对应于所述类反汇编代码文本的一个指令,每一所述第二预训练任务对应于所述类反汇编代码文本的一个基本块,每一所述第三预训练任务对应于所述类反汇编代码文本的一个函数,N1、N2和N3均为正整数。
进一步的,所述对所述反汇编代码文本进行预处理,具体包括:
将所述反汇编代码文本中的函数数量、基本块数量、指令数量分别与预设的函数数量均值、基本块数量均值、指令数量均值进行比较,根据比较结果确定所述反汇编代码文本对应的填充长度或截断长度;
对所述反汇编代码文本进行分词处理;
根据所述填充长度或所述截断长度,对分词后的所述反汇编代码文本进行填充或截断处理;其中,当进行填充处理时,基于所述填充长度,将预设的填充标志填充进分词后的所述反汇编代码文本;
针对填充或截断处理后的所述反汇编代码文本,在函数的起始位置插入所述反汇编代码文本对应的函数起始标志,并在基本块的起始位置插入所述反汇编代码文本对应的基本块起始标志,得到预处理后的反汇编代码文本。
进一步的,所述N1个不同的第一预训练任务包括如下至少一种:预测指令任务、预测操作码的操作类型、预测操作码的跳转类型、预测第一操作数的地址类型、预测第二操作数的地址类型、预测第一操作数的数据类型和预测第二操作数的数据类型;
所述N2个不同的第二预训练任务包括如下至少一种:预测基本块中是否包含输入寄存器、预测基本块中是否包含输出寄存器、预测基本块是否处于函数的结束位置和预测两个基本块在控制流图中是否有边;
所述N3个不同的第三预训练任务包括如下至少一种:预测函数是否调用用户定义函数、预测函数是否调用非用户定义函数、预测函数是否携带有返回值、预测函数中是否使用了ebp寄存器对栈执行读写操作、预测函数是否为静态函数和预测两个函数在函数调用图中是否有边。
进一步的,所述将N1个所述基本块编码向量融合为基本块编码融合向量,具体包括:通过预设的权重网络确定与N1个所述基本块编码向量对应的N1个第一权重,基于所述第一权重,对N1个所述基本块编码向量进行加权计算,得到所述基本块编码融合向量;
所述将N2个所述函数编码向量融合为函数编码融合向量,具体包括:通过预设的权重网络确定与N2个所述函数编码向量对应的N2个第二权重,基于所述第二权重,对N2个所述函数编码向量进行加权计算,得到所述函数编码融合向量;
所述将N3个所述文本编码向量融合为所述文本表征,具体包括:通过预设的权重网络确定与N3个所述文本编码向量对应的N3个第三权重,基于所述第三权重,对N3个所述文本编码向量进行加权计算,得到所述文本表征。
进一步的,所述基于所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征,确定统计特征向量,具体包括:
将所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征组合成软件统计特征;
将所述软件统计特征转换为统计特征向量。
进一步的,所述将所述统计特征向量输入至预设的统计表征生成模块,得到所述统计表征生成模块输出的统计表征,具体包括:
对所述统计特征向量进行重塑处理,得到矩阵向量;
将所述矩阵向量输入至所述统计表征生成模块中的编码器,得到所述统计表征生成模块中的编码器输出的统计表征。
进一步的,所述编码器包括交叉注意力网络和自注意力网络。
本发明实施例还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的基于多重多级预训练的软件分类方法的步骤。
综上,本发明具有以下有益效果:
(1)采用本发明实施例,在生成软件代码的文本表征过程中,应用多重多级预训练的思想,即分别从指令、基本块和函数角度执行预训练任务,不仅能够学习到二进制软件更细粒度的信息,还促使从软件的反汇编代码文本中逐步学习由简单到复杂的上下文信息;且在软件代码的文本表征的基础上,融合软件的其他表征,从而能够提高软件代码分类识别的性能,进而提高软件分类的性能。
(2)在获取到二进制软件及其反汇编代码文本后,处理和筛选得到类反汇编代码文本,进一步归纳得到统计特征,在此基础上执行本发明实施例的各个模块(文本表征生成模块中的基本块表征子模块、函数表征子模块、文本表征子模块,以及统计表征生成模块),得到文本表征和统计表征,最后根据超参数融合表征并输入到进行分类识别的网络模型中,输出软件代码的组织分类结果,特别地,可以应用于对恶意软件代码的组织分类识别当中,提高软件代码的分类识别准确率,尤其是对恶意软件的代码识别。
附图说明
图1是本发明提供的一种基于多重多级预训练的软件分类方法的一个实施例的流程示意图;
图2是本发明提供的一种基于多重多级预训练的软件分类方法的另一个实施例的流程示意图;
图3是本发明提供的基本块表征子模块的一个实施例的示意图;
图4是本发明提供的函数表征子模块的一个实施例的示意图;
图5是本发明提供的文本表征子模块的一个实施例的示意图;
图6是本发明提供的一种计算机设备的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请描述中,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
在本申请的描述中,需要说明的是,除非另有定义,本发明所使用的所有的技术和科学术语与属于本的技术领域的技术人员通常理解的含义相同。本发明中说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明,对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
需要说明的是,PE文件(PortableExecutable,可移植的可执行的文件)。
参见图1,是本发明提供的基于多重多级预训练的软件分类方法的一个实施例的流程示意图,该方法包括步骤S1至S7,具体如下:
S1,获取待分类的二进制软件;
S2,对所述二进制软件进行反汇编处理得到反汇编代码文本;
S3,对所述反汇编代码文本进行预处理,并从预处理后的反汇编代码文本中筛选出用户定义函数,得到类反汇编代码文本;
S4,将所述类反汇编代码文本输入到基于多重多级预训练任务的文本表征生成模块,得到所述文本表征生成模块输出的文本表征;其中,所述文本表征生成模块包括基本块表征子模块、函数表征子模块和文本表征子模块;
S5,从所述二进制软件中提取字节统计特征以及PE文件统计特征,从所述反汇编代码文本中提取反汇编统计特征,并基于所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征,确定统计特征向量;
S6,将所述统计特征向量输入至预设的统计表征生成模块,得到所述统计表征生成模块输出的统计表征;
S7, 根据预设的超参数,对所述文本表征和所述统计表征进行融合处理,得到样本表征,并将所述样本表征输入至预设的分类网络模型,得到所述分类网络模型输出的所述二进制软件的分类结果;
其中,所述分类结果包括代码分类识别结果,当所述二进制软件为恶意软件时,所述代码分类识别结果为所述恶意软件的组织分类识别结果。
在本发明实施例中,当二进制软件为PE恶意软件时,每个代码文本中均包含127个函数,每个函数都包含15个基本块(包括填充的基本块),每个基本块包含8条指令(包括填充的指令)。
需要说明的是,在步骤S5当中:
字节统计特征包括:0~255字节的统计信息和字节n-gram信息熵;
PE文件统计特征包括:文件大小的统计信息、节表的统计信息、导入/导出表的统计信息和PE文件头部的统计信息;
反汇编统计特征包括:操作数数据类型的统计信息、操作码的统计信息和各个操作码出现的次数;寄存器的统计信息、寻址类型的统计信息、常量的统计信息、函数类型的统计信息、跳转操作码的统计信息、寄存器运算类型的统计信息和图的统计信息。
作为上述方案的改进,所述基本块表征子模块包括N1个编码器,所述函数表征子模块包括N2个编码器,所述文本表征子模块包括N3个编码器;
所述将所述类反汇编代码文本输入到基于多重多级预训练任务的文本表征生成模块,得到所述文本表征生成模块输出的文本表征,具体包括:
将所述类反汇编代码文本输入到所述基本块表征子模块,通过所述基本块表征子模块对所述类反汇编代码文本进行词嵌入,并根据N1个不同的第一预训练任务,采用所述N1个编码器分别对词嵌入后的所述类反汇编代码文本进行训练,得到N1个基本块编码向量,将N1个所述基本块编码向量融合为基本块编码融合向量;
将所述基本块编码融合向量输入到所述函数表征子模块,通过所述函数表征子模块在所述基本块编码融合向量前插入所述类反汇编代码文本中包含的函数起始标志,并根据N2个不同的第二预训练任务,采用所述N2个编码器分别对插入标志后的基本块编码融合向量进行训练,得到N2个函数编码向量,将N2个所述函数编码向量融合为函数编码融合向量;
将所述函数编码融合向量输入到所述文本表征子模块,通过所述文本表征子模块在所述函数编码融合向量前插入所述类反汇编代码文本对应的文本起始标志,并根据N3个不同的第三预训练任务,采用所述N3个编码器分别对插入标志后的函数编码融合向量进行训练,得到N3个文本编码向量,将N3个所述文本编码向量融合为所述文本表征;
其中,每一所述第一预训练任务对应于所述类反汇编代码文本的一个指令,每一所述第二预训练任务对应于所述类反汇编代码文本的一个基本块,每一所述第三预训练任务对应于所述类反汇编代码文本的一个函数,N1、N2和N3均为正整数。
示例性的,参见图3,其中BSF编码向量为基本块编码向量,融合后的基本块编码向量为基本块编码融合向量;参见图4,其中FSF编码向量为函数编码向量,融合后的函数编码向量为函数编码融合向量;参见图5,其中TSF编码向量为文本编码向量。
示例性的,所述编码器为PerceiverIO编码器。
作为上述方案的改进,所述对所述反汇编代码文本进行预处理,具体包括:
将所述反汇编代码文本中的函数数量、基本块数量、指令数量分别与预设的函数数量均值、基本块数量均值、指令数量均值进行比较,根据比较结果确定所述反汇编代码文本对应的填充长度或截断长度;
对所述反汇编代码文本进行分词处理;
根据所述填充长度或所述截断长度,对分词后的所述反汇编代码文本进行填充或截断处理;其中,当进行填充处理时,基于所述填充长度,将预设的填充标志填充进分词后的所述反汇编代码文本;
针对填充或截断处理后的所述反汇编代码文本,在函数的起始位置插入所述反汇编代码文本对应的函数起始标志,并在基本块的起始位置插入所述反汇编代码文本对应的基本块起始标志,得到预处理后的反汇编代码文本。
可以理解的是,根据比较结果确定所述反汇编代码文本对应的填充长度或截断长度,从而使填充或截断处理后的反汇编代码文本的函数、基本块、指令各自的长度均能够尽可能接近各自的均值,进而统一反汇编代码文本的大小,方便后续的统一处理。
需要说明的是,在分词处理当中,具体为把其中的一条指令当成一个词。
作为上述方案的改进,所述N1个不同的第一预训练任务包括如下至少一种:预测指令任务、预测操作码的操作类型、预测操作码的跳转类型、预测第一操作数的地址类型、预测第二操作数的地址类型、预测第一操作数的数据类型和预测第二操作数的数据类型;
所述N2个不同的第二预训练任务包括如下至少一种:预测基本块中是否包含输入寄存器、预测基本块中是否包含输出寄存器、预测基本块是否处于函数的结束位置和预测两个基本块在控制流图中是否有边;
所述N3个不同的第三预训练任务包括如下至少一种:预测函数是否调用用户定义函数、预测函数是否调用非用户定义函数、预测函数是否携带有返回值、预测函数中是否使用了ebp寄存器对栈执行读写操作、预测函数是否为静态函数和预测两个函数在函数调用图中是否有边。
具体的:
在所述第一预训练任务当中:
预测指令任务,具体做法是从代码文本的基本块中随机选取所有指令的15%,在这15%的指令中,10%使用随机指令替换,80%使用MASK指令替换,10%保持不变;
预测操作码的操作类型,即预测操作码是否为算术指令(如sub/add/mul/div等)、逻辑指令(如and/or/not/xor等)、普通指令(如mov/call/lea/jmp等)、堆栈指令(如push/pop)的其中一种;
预测操作码的跳转类型,即预测是否为非跳转操作码、近距离跳转操作码和远距离跳转操作码的其中一种;
预测第一操作数和第二操作数的地址类型,即预测是否为空、立即寻址类型、寄存器寻址类型、内存寻址类型、基址变址寻址类型、相对基址变址寻址类型的其中一种;
预测第一操作数和第二操作数的数据类型,即预测是否为字节类型、双字类型、四字类型的其中一种。
在所述第二预训练任务当中:
预测基本块中是否包含输入寄存器,即预测在基本块的指令序列中,第一条指令的操作数寻址类型是否是寄存器寻址;
预测基本块中是否包含输出寄存器,即预测在基本块的指令序列中,最后一条指令的操作数寻址类型是否是寄存器寻址;
预测基本块是否处于函数的结束位置,即预测基本块中是否包含“retn”等代表函数返回的指令;
预测两个基本块在控制流图中是否有边。
在所述第三预训练任务当中:
预测函数是否调用用户定义函数,其中用户定义函数指二进制软件组织成员自己编写的函数;
预测函数是否调用非用户定义函数,其中非用户定义函数是指为使二进制软件正常运行而加入的函数;
预测函数是否携带有返回值;
预测函数中是否使用了ebp寄存器对栈执行读写操作;
预测函数是否为静态函数;
预测两个函数在函数调用图中是否有边,其中函数调用图是一个有向图,用于描述各个函数之间的执行逻辑关系。
可以理解的是,本实施例通过应用多重多级预训练的思想,即分别从指令、基本块和函数角度执行预训练任务,不仅能够学习到二进制软件更细粒度的信息,还促使从软件的反汇编代码文本中逐步学习由简单到复杂的上下文信息,从而能够提高软件代码分类识别的性能。
作为上述方案的改进,所述将N1个所述基本块编码向量融合为基本块编码融合向量,具体包括:通过预设的权重网络确定与N1个所述基本块编码向量对应的N1个第一权重,基于所述第一权重,对N1个所述基本块编码向量进行加权计算,得到所述基本块编码融合向量;
所述将N2个所述函数编码向量融合为函数编码融合向量,具体包括:通过预设的权重网络确定与N2个所述函数编码向量对应的N2个第二权重,基于所述第二权重,对N2个所述函数编码向量进行加权计算,得到所述函数编码融合向量;
所述将N3个所述文本编码向量融合为所述文本表征,具体包括:通过预设的权重网络确定与N3个所述文本编码向量对应的N3个第三权重,基于所述第三权重,对N3个所述文本编码向量进行加权计算,得到所述文本表征。
作为上述方案的改进,所述基于所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征,确定统计特征向量,具体包括:
将所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征组合成软件统计特征;
将所述软件统计特征转换为统计特征向量。
作为上述方案的改进,所述将所述统计特征向量输入至预设的统计表征生成模块,得到所述统计表征生成模块输出的统计表征,具体包括:
对所述统计特征向量进行重塑处理,得到矩阵向量;
将所述矩阵向量输入至所述统计表征生成模块中的编码器,得到所述统计表征生成模块中的编码器输出的统计表征。
作为上述方案的改进,所述编码器包括交叉注意力网络和自注意力网络。
示例性的,所述编码器为PerceiverIO编码器,由交叉注意力网络和自注意力网络组成。
本发明实施例还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的基于多重多级预训练的软件分类方法的步骤。
参见图6,该实施例的计算机设备包括:处理器301、存储器302以及存储在所述存储器302中并可在所述处理器301上运行的计算机程序,例如软件代码分类识别程序。所述处理器301执行所述计算机程序时实现上述各个基于多重多级预训练的软件分类方法实施例中的步骤,例如图1所示的步骤S1至S7。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器302中,并由所述处理器301执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机设备中的执行过程。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器301、存储器302。本领域技术人员可以理解,所述示意图仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器301可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器301、数字信号处理器301 (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器301可以是微处理器301或者该处理器301也可以是任何常规的处理器301等,所述处理器301是所述计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分。
所述存储器302可用于存储所述计算机程序和/或模块,所述处理器301通过运行或执行存储在所述存储器302内的计算机程序和/或模块,以及调用存储在存储器302内的数据,实现所述计算机设备的各种功能。所述存储器302可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器302可以包括高速随机存取存储器302,还可以包括非易失性存储器302,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器302件、闪存器件、或其他易失性固态存储器302件。
其中,所述计算机设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器301执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器302、只读存储器302(ROM,Read-OnlyMemory)、随机存取存储器302(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
综上,本发明具有以下有益效果:
(1)采用本发明实施例,在生成软件代码的文本表征过程中,应用多重多级预训练的思想,即分别从指令、基本块和函数角度执行预训练任务,不仅能够学习到二进制软件更细粒度的信息,还促使从软件的反汇编代码文本中逐步学习由简单到复杂的上下文信息;且在软件代码的文本表征的基础上,融合软件的其他表征,从而能够提高软件代码分类识别的性能,进而提高软件分类的性能。
(2)在获取到二进制软件及其反汇编代码文本后,处理和筛选得到类反汇编代码文本,进一步归纳得到统计特征,在此基础上执行本发明实施例的各个模块(文本表征生成模块中的基本块表征子模块、函数表征子模块、文本表征子模块,以及统计表征生成模块),得到文本表征和统计表征,最后根据超参数融合表征并输入到进行分类识别的网络模型中,输出软件代码的组织分类结果,特别地,可以应用于对恶意软件代码的组织分类识别当中,提高软件代码的分类识别准确率,尤其是对恶意软件的代码识别。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (8)
1.一种基于多重多级预训练的软件分类方法,其特征在于,包括:
获取待分类的二进制软件;
对所述二进制软件进行反汇编处理得到反汇编代码文本;
对所述反汇编代码文本进行预处理,并从预处理后的反汇编代码文本中筛选出用户定义函数,得到类反汇编代码文本;
将所述类反汇编代码文本输入到基于多重多级预训练任务的文本表征生成模块,得到所述文本表征生成模块输出的文本表征;其中,所述文本表征生成模块包括基本块表征子模块、函数表征子模块和文本表征子模块;
从所述二进制软件中提取字节统计特征以及PE文件统计特征,从所述反汇编代码文本中提取反汇编统计特征,并基于所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征,确定统计特征向量;
将所述统计特征向量输入至预设的统计表征生成模块,得到所述统计表征生成模块输出的统计表征;
根据预设的超参数,对所述文本表征和所述统计表征进行融合处理,得到样本表征,并将所述样本表征输入至预设的分类网络模型,得到所述分类网络模型输出的所述二进制软件的分类结果;
其中,所述分类结果包括代码分类识别结果,当所述二进制软件为恶意软件时,所述代码分类识别结果为所述恶意软件的组织分类识别结果;
其中,所述基本块表征子模块包括N1个编码器,所述函数表征子模块包括N2个编码器,所述文本表征子模块包括N3个编码器;
所述将所述类反汇编代码文本输入到基于多重多级预训练任务的文本表征生成模块,得到所述文本表征生成模块输出的文本表征,具体包括:
将所述类反汇编代码文本输入到所述基本块表征子模块,通过所述基本块表征子模块对所述类反汇编代码文本进行词嵌入,并根据N1个不同的第一预训练任务,采用所述N1个编码器分别对词嵌入后的所述类反汇编代码文本进行训练,得到N1个基本块编码向量,将N1个所述基本块编码向量融合为基本块编码融合向量;
将所述基本块编码融合向量输入到所述函数表征子模块,通过所述函数表征子模块在所述基本块编码融合向量前插入所述类反汇编代码文本中包含的函数起始标志,并根据N2个不同的第二预训练任务,采用所述N2个编码器分别对插入标志后的基本块编码融合向量进行训练,得到N2个函数编码向量,将N2个所述函数编码向量融合为函数编码融合向量;
将所述函数编码融合向量输入到所述文本表征子模块,通过所述文本表征子模块在所述函数编码融合向量前插入所述类反汇编代码文本对应的文本起始标志,并根据N3个不同的第三预训练任务,采用所述N3个编码器分别对插入标志后的函数编码融合向量进行训练,得到N3个文本编码向量,将N3个所述文本编码向量融合为所述文本表征;
其中,每一所述第一预训练任务对应于所述类反汇编代码文本的一个指令,每一所述第二预训练任务对应于所述类反汇编代码文本的一个基本块,每一所述第三预训练任务对应于所述类反汇编代码文本的一个函数,N1、N2和N3均为正整数。
2.如权利要求1所述的基于多重多级预训练的软件分类方法,其特征在于,所述对所述反汇编代码文本进行预处理,具体包括:
将所述反汇编代码文本中的函数数量、基本块数量、指令数量分别与预设的函数数量均值、基本块数量均值、指令数量均值进行比较,根据比较结果确定所述反汇编代码文本对应的填充长度或截断长度;
对所述反汇编代码文本进行分词处理;
根据所述填充长度或所述截断长度,对分词后的所述反汇编代码文本进行填充或截断处理;其中,当进行填充处理时,基于所述填充长度,将预设的填充标志填充进分词后的所述反汇编代码文本;
针对填充或截断处理后的所述反汇编代码文本,在函数的起始位置插入所述反汇编代码文本对应的函数起始标志,并在基本块的起始位置插入所述反汇编代码文本对应的基本块起始标志,得到预处理后的反汇编代码文本。
3.如权利要求1所述的基于多重多级预训练的软件分类方法,其特征在于,所述N1个不同的第一预训练任务包括如下至少一种:预测指令任务、预测操作码的操作类型、预测操作码的跳转类型、预测第一操作数的地址类型、预测第二操作数的地址类型、预测第一操作数的数据类型和预测第二操作数的数据类型;
所述N2个不同的第二预训练任务包括如下至少一种:预测基本块中是否包含输入寄存器、预测基本块中是否包含输出寄存器、预测基本块是否处于函数的结束位置和预测两个基本块在控制流图中是否有边;
所述N3个不同的第三预训练任务包括如下至少一种:预测函数是否调用用户定义函数、预测函数是否调用非用户定义函数、预测函数是否携带有返回值、预测函数中是否使用了ebp寄存器对栈执行读写操作、预测函数是否为静态函数和预测两个函数在函数调用图中是否有边。
4.如权利要求1所述的基于多重多级预训练的软件分类方法,其特征在于,所述将N1个所述基本块编码向量融合为基本块编码融合向量,具体包括:通过预设的权重网络确定与N1个所述基本块编码向量对应的N1个第一权重,基于所述第一权重,对N1个所述基本块编码向量进行加权计算,得到所述基本块编码融合向量;
所述将N2个所述函数编码向量融合为函数编码融合向量,具体包括:通过预设的权重网络确定与N2个所述函数编码向量对应的N2个第二权重,基于所述第二权重,对N2个所述函数编码向量进行加权计算,得到所述函数编码融合向量;
所述将N3个所述文本编码向量融合为所述文本表征,具体包括:通过预设的权重网络确定与N3个所述文本编码向量对应的N3个第三权重,基于所述第三权重,对N3个所述文本编码向量进行加权计算,得到所述文本表征。
5.如权利要求1所述的基于多重多级预训练的软件分类方法,其特征在于,所述基于所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征,确定统计特征向量,具体包括:
将所述字节统计特征、所述PE文件统计特征和所述反汇编统计特征组合成软件统计特征;
将所述软件统计特征转换为统计特征向量。
6.如权利要求1所述的基于多重多级预训练的软件分类方法,其特征在于,所述将所述统计特征向量输入至预设的统计表征生成模块,得到所述统计表征生成模块输出的统计表征,具体包括:
对所述统计特征向量进行重塑处理,得到矩阵向量;
将所述矩阵向量输入至所述统计表征生成模块中的编码器,得到所述统计表征生成模块中的编码器输出的统计表征。
7.如权利要求1或6所述的基于多重多级预训练的软件分类方法,其特征在于,所述编码器包括交叉注意力网络和自注意力网络。
8.一种计算机设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的基于多重多级预训练的软件分类方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311345558.9A CN117113351B (zh) | 2023-10-18 | 2023-10-18 | 一种基于多重多级预训练的软件分类方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311345558.9A CN117113351B (zh) | 2023-10-18 | 2023-10-18 | 一种基于多重多级预训练的软件分类方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117113351A CN117113351A (zh) | 2023-11-24 |
CN117113351B true CN117113351B (zh) | 2024-02-20 |
Family
ID=88800401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311345558.9A Active CN117113351B (zh) | 2023-10-18 | 2023-10-18 | 一种基于多重多级预训练的软件分类方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117113351B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
CN111753290A (zh) * | 2020-05-26 | 2020-10-09 | 郑州启明星辰信息安全技术有限公司 | 软件类型的检测方法及相关设备 |
CN112632537A (zh) * | 2020-12-23 | 2021-04-09 | 北京鸿腾智能科技有限公司 | 恶意代码检测方法、装置、设备及存储介质 |
CN113434858A (zh) * | 2021-05-25 | 2021-09-24 | 天津大学 | 基于反汇编代码结构和语义特征的恶意软件家族分类方法 |
CN113935033A (zh) * | 2021-09-13 | 2022-01-14 | 北京邮电大学 | 特征融合的恶意代码家族分类方法、装置和存储介质 |
CN115455382A (zh) * | 2022-08-11 | 2022-12-09 | 武汉大学 | 一种二进制函数代码的语义比对方法及装置 |
CN115630358A (zh) * | 2022-07-20 | 2023-01-20 | 哈尔滨工业大学(深圳) | 一种恶意软件分类方法、装置、计算机设备及存储介质 |
CN115795466A (zh) * | 2023-02-06 | 2023-03-14 | 广东省科技基础条件平台中心 | 一种恶意软件组织识别方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230161879A1 (en) * | 2021-11-23 | 2023-05-25 | Electronics And Telecommunications Research Institute | Malicious code detection method and apparatus based on assembly language model |
-
2023
- 2023-10-18 CN CN202311345558.9A patent/CN117113351B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
CN111753290A (zh) * | 2020-05-26 | 2020-10-09 | 郑州启明星辰信息安全技术有限公司 | 软件类型的检测方法及相关设备 |
CN112632537A (zh) * | 2020-12-23 | 2021-04-09 | 北京鸿腾智能科技有限公司 | 恶意代码检测方法、装置、设备及存储介质 |
CN113434858A (zh) * | 2021-05-25 | 2021-09-24 | 天津大学 | 基于反汇编代码结构和语义特征的恶意软件家族分类方法 |
CN113935033A (zh) * | 2021-09-13 | 2022-01-14 | 北京邮电大学 | 特征融合的恶意代码家族分类方法、装置和存储介质 |
CN115630358A (zh) * | 2022-07-20 | 2023-01-20 | 哈尔滨工业大学(深圳) | 一种恶意软件分类方法、装置、计算机设备及存储介质 |
CN115455382A (zh) * | 2022-08-11 | 2022-12-09 | 武汉大学 | 一种二进制函数代码的语义比对方法及装置 |
CN115795466A (zh) * | 2023-02-06 | 2023-03-14 | 广东省科技基础条件平台中心 | 一种恶意软件组织识别方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117113351A (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11599770B2 (en) | Methods and devices for programming a state machine engine | |
US9118327B2 (en) | Boolean logic in a state machine lattice | |
US10366009B2 (en) | Methods and systems for handling data received by a state machine engine | |
US10671295B2 (en) | Methods and systems for using state vector data in a state machine engine | |
CN114047929B (zh) | 基于知识增强的用户定义函数识别方法、装置及介质 | |
US11977902B2 (en) | Methods and systems for event reporting | |
US20170193351A1 (en) | Methods and systems for vector length management | |
US20170371811A1 (en) | Systems and devices for accessing a state machine | |
US20220261257A1 (en) | Systems and devices for accessing a state machine | |
CN115730313A (zh) | 一种恶意文档检测方法、装置、存储介质及设备 | |
US10929764B2 (en) | Boolean satisfiability | |
CN117113351B (zh) | 一种基于多重多级预训练的软件分类方法及设备 | |
CN111859933A (zh) | 马来语识别模型的训练方法、识别方法、装置、设备 | |
CN116910759A (zh) | 智能合约漏洞检测方法、装置及电子设备 | |
CN118538201A (zh) | 融合语境信息的端对端语音识别方法和装置 | |
CN116860641A (zh) | 目标对象的测试方法、装置及设备 | |
CN117611359A (zh) | 基于多标签学习的理赔方法、装置、设备及介质 | |
CN116110504A (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 |