具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面结合附图说明本发明提供的基于可解释性深度学习的恶意代码检测方法及装置。
图1为本发明提供的一种基于可解释性深度学习的恶意代码检测方法的流程示意图。可以理解,该基于可解释性深度学习的恶意代码检测方法可以由基于可解释性深度学习的恶意代码检测装置执行。其中,基于可解释性深度学习的恶意代码检测装置可以为一个计算机设备。
如图1所示,在一个实施例中,提出了一种基于可解释性深度学习的恶意代码检测方法,具体可以包括以下步骤:
步骤110,获取目标代码,并基于所述目标代码确定对应的灰度图。
其中,目标代码为待进行恶意代码检测的代码。
具体地,首先可以获取目标代码文件,对所述目标代码文件进行反编译,生成二进制文件;然后将所述二进制文件中的数据转化为十进制数据;最后,基于所述十进制数据生成灰度图。在将二进制文件中的数据转化为十进制数据时,以8个bit为一组,一组转化为一个十进制数据(字节),从而将所有二进制文件中的数据转化为十进制数据。在由十进制数据转化为灰度图时,固定宽度为256个字节,将一维向量转化为二维矩阵,从而生成灰度图。该部分可以参考现有技术,为了简洁,此处不再赘述。
步骤120,基于预训练好的重参数化的恶意代码分类模型、恶意代码分类检测的可解释性模型以及所述目标代码对应的灰度图,确定并显示所述目标代码对应的灰度图的可解释性的第一相关分数矩阵;其中,所述预训练好的重参数化的恶意代码分类模型为深度学习模型,用于提取所述目标代码对应的灰度图中的丰富的特征,并用于确定所述目标代码中的恶意代码的目标类型;所述恶意代码分类检测的可解释性模型中包括最大二叉堆模型和目标可解释性模型。
其中,所述第一相关分数矩阵用于表示所述目标代码对应的灰度图与重参数化的恶意代码分类模型中的输出层的输出之间的相关性。其中,重参数化的恶意代码分类模型中的输出层的输出表示目标代码对应的灰度图中对应部分为恶意代码的概率。
其中,重参数化的恶意代码分类模型是指骨干网络中出现在同一个层级出现多个并列的卷积层,并且对多个并列的卷积层的参数进行相加传递给下一层级作为下一层级的输入。具体地,可以参考图5的相关描述,为了简洁,此处先不做赘述。
可以理解,现有的恶意代码检测方法提取的特征维度单一,内部压缩信息及加密信息表现力差,容易造成“特征盲区”。本发明使用的重参数化的恶意代码分类模型,通过增加模型的深度,实现信息的高度抽象化,同时保留底层特征,能够提取目标代码对应的灰度图中的更加丰富的特征。同时,为了解决现有技术中恶意代码检测方法在内存访问成本及计算并行度上并没有过多的关注度,造成深度恶意代码分类模型实际生产环境中投产困难的问题,本发明通过采用重参数化的方式,将深度学习模型中的骨干层进行重参数化,在训练阶段采用多分支的方式进行特征的多维抽象,在推理阶段重参数化使模型呈链式结构,减少内存数据的访问量,从而减少每一个网络模块的并行计算度,提高内存的利用率。
还可以理解,通常情况下,恶意代码分类模型中都只关注于提高恶意代码检测的预测结果,却忽视了对模型本身推理的可解释性,导致研究人员在回顾分析恶意代码检测结果时,只能看到检测结果,而无法对深度学习模型如何推理出该预测结果的过程进行分析。在本发明中,恶意代码分类检测的可解释性模型确定对目标代码进行恶意代码检测的分类推导过程中的可解释性的第一相关分数矩阵,从而实现给出了对目标代码进行恶意代码检测的分类的推导解释,同时,采用最大二叉堆结合目标可解释性模型对图像提供推导解释,提高了目标可解释性模型的演算效率并减少缓存占用。
步骤130,基于所述第一相关分数矩阵、各种类型的恶意代码对应的模板图和所述恶意代码分类检测的可解释性模型,确定并显示所述目标代码对应的灰度图和各种类型的恶意代码对应的模板图之间的相似度。
其中,各种类型的恶意代码对应的模板图可以基于预训练好的重参数化的恶意代码分类模型确定。一种类型的恶意代码对应的模板图可以为基于预训练好的重参数化的恶意代码分类模型对训练样本集进行分类,得到的属于同一种类型的恶意代码的预测概率最高的一张图。例如,最终确定训练样本集中的灰度图a、灰度图b以及灰度图x均属于第一类别的恶意代码,灰度图a、灰度图b以及灰度图x属于第一类别的恶意代码的预测概率分别为0.87、0.65和0.98,则确定灰度图x为第一类别的恶意代码对应的模板图。
可以理解,通过提供目标代码对应的灰度图与各种类型的恶意代码对应的模板图之间的相似性对比,从而实现在原来给出了对目标代码进行恶意代码检测的分类的推导解释的基础上,进一步给出目标代码对应的灰度图与各种类型的恶意代码对应的模板图的对照解释,为研究人员在后续分析预测结果时提供了预测结果的判断依据,提高了恶意代码检测评估的准确性、可解释性和全面性,为模型的可信度提供了较高的保障能力。
本发明提供的基于可解释性深度学习的恶意代码检测方法,通过使用的重参数化的恶意代码分类模型,通过增加模型的深度,实现信息的高度抽象化,同时保留底层特征,能够提取目标代码对应的灰度图中的更加丰富的特征。此外,恶意代码分类检测的可解释性模型确定对目标代码进行恶意代码检测的分类推导过程中的可解释性的第一相关分数矩阵,从而实现给出了对目标代码进行恶意代码检测的分类的推导解释,同时,采用最大二叉堆结合目标可解释性模型对图像提供推导解释,提高了目标可解释性模型的演算效率并减少缓存占用。通过提供目标代码对应的灰度图与各种类型的恶意代码对应的模板图之间的相似性对比,从而实现在原来给出了对目标代码进行恶意代码检测的分类的推导解释的基础上,进一步给出目标代码对应的灰度图与各种类型的恶意代码对应的模板图的对照解释,为研究人员在后续分析预测结果时提供了预测结果的判断依据,提高了恶意代码检测评估的准确性、可解释性和全面性,为模型的可信度提供了较高的保障能力。也即,通过结合重参数化的恶意代码分类模型和恶意代码分类检测的可解释性模型,实现能够在保证学习得到较丰富的目标代码的图像纹理特征的同时,能够实现高效地对恶意代码检测的预测结果进行可解释性推理及展示。
在其中一个实施例中,所述预训练好的重参数化的恶意代码分类模型中包括预训练好的重参数化的特征提取模型,相应地,如图2所示,所述基于预训练好的重参数化的特征提取模型、恶意代码分类检测的可解释性模型以及所述目标代码对应的灰度图,确定并显示所述目标代码对应的灰度图的可解释性的第一相关分数矩阵,包括以下步骤:
步骤210,基于所述预训练好的重参数化的特征提取模型以及所述目标代码对应的灰度图,确定前向传播过程中所述重参数化的特征提取模型中每一层神经元提取的所述目标代码对应的灰度图的第一特征。
其中,所述预训练好的重参数化的特征提取模型可以为所述预训练好的重参数化的恶意代码分类模型中的骨干网络模型。
在其中一个实施例中,所述预训练好的重参数化的特征提取模型例如可以为预训练好的重参数化的VGG19骨干模型,所述VGG19骨干模型的每一卷积层由3x3卷积分支以及1x1卷积分支和恒等映射分支构成;其中,1x1卷积和恒等映射都为卷积核参数除中心位置外的其他位置取值均为0的卷积;之后根据卷积的可加性,将所述3x3卷积分支以及1x1卷积分支和恒等映射分支的卷积的参数相加,即可得到与原始VGG19骨干模型模型输出完全相同的仅包含一个3x3卷积的单路模型。具体地,所述重参数化的VGG19骨干模型的具体实例可参考图5,为了简洁,此处先不赘述。
可以理解,由于重参数化的特征提取模型中包括多层神经元,因此,预训练好的重参数化的特征提取模型中每一层神经元均可以提取得到目标代码对应的灰度图的第一特征。
步骤220,根据目标可解释性模型,基于上一层每个神经元对应的第一特征以及所述重参数化的特征提取模型中当前层各个神经元与上一层的每个神经元之间的权重,确定上一层的每个神经元的第一相关分数。
具体地,上一层的每个神经元的第一相关分数用公式表示即为
,其中,
表示第l层(上一层)的第i个神经元的相关分数,
表示第l+1层(当前层)的第j个神经元的相关分数,
表示第l层的第i个神经元输出的目标代码对应的灰度图的第一特征,
表示第l层(上一层)的第i个神经元与第l+1层(当前层)的第j个神经元之间的权重。
步骤230,基于反向传播过程、最大二叉堆模型以及上一层的神经元对应的第一相关分数向量,确定上一层的前n层的神经元的第二相关分数向量;其中,n为大于或等于1的整数。
可以理解,反向传播过程,上一层的前一层的神经元的参数可以基于上一层的神经元的参数确定,因此,结合步骤220,可以在确定上一层的每个神经元的第一相关分数后,进一步确定上一层的前一层以及前n层的神经元的第二相关分数向量。还可以理解,依次类推,即可确定输入层的多个神经元的相关分数向量。并且可以结合最大二叉堆模型,加快相关分数向量的计算速度。
在其中一个实施例中,可以基于所述最大二叉模型对上一层的神经元对应的第一相关分数向量进行排序,基于排序的第一相关分数向量中的排名超过预设阈值的第一相关分数,确定上一层的前一层的神经元对应的第二相关分数向量。具体地,例如可以基于第一相关分数向量中的排名靠前的50%的第一相关分数向量,确定上一层的前一层的神经元对应的第二相关分数向量。
步骤240,基于第二相关分数向量,确定并显示输入层中多个神经元对应的第一相关分数矩阵。
可以理解,由于可以逐层确定上一层的前n层的神经元的第二相关分数向量,且输入层为上一层的前n层中的一层,最终可以确定输入层中多个神经元对应的第一相关分数矩阵。还可以理解,在本发明中,输入层中多个神经元即对应目标代码对应的灰度图。
此外,在确定输入层中多个神经元对应的第一相关分数矩阵后,可以将输入层中多个神经元对应的第一相关分数矩阵进行标准化后,对其进行热力图展现,在“温度”最高的地方,即为重参数化的恶意代码分类模型推导出预测结果的主要依据部分。可以将该依据部分的索引找出,根据数据缩放找到目标代码中恶意操作的部分。
在其中一个实施例中,如图3所示,所述基于所述第一相关分数矩阵、各种类型的恶意代码对应的模板图和所述恶意代码分类检测的可解释性模型,确定并显示所述目标代码对应的灰度图和各种类型的恶意代码对应的模板图之间的相似度,包括以下步骤:
步骤310,基于恶意代码分类检测的可解释性模型,确定所述各种类型的恶意代码对应的模板图中的第二相关分数矩阵。
具体地,确定所述各种类型的恶意代码对应的模板图中的第二相关分数矩阵的过程可以参考前文中第一相关分数矩阵的确定过程,为了简洁,此处不再赘述。
步骤320,基于所述第一相关分数矩阵和所述第二相关分数矩阵,确定所述各种类型的恶意代码对应的模板图与所述目标代码对应的灰度图之间的相似度,并在所述各种类型的恶意代码对应的模板图与所述目标代码对应的灰度图中分别突出显示相似度高于预设阈值的地方。
具体地,可以通过计算所述第一相关分数矩阵和每种类型的恶意代码对应的模板图的第二相关分数矩阵之间的海塞向量积(Hessian Vector Product)来获取两个矩阵的相似度,并将该相似度作为每种类型的恶意代码对应的模板图与所述目标代码对应的灰度图之间的相似度,并将相似度分数较高的地方用红色连起来,线的红色越深则表示两者相似度越大。
在其中一个实施例中,所述预训练好的重参数化的恶意代码分类模型基于训练样本集训练得到,所述训练样本集中的训练样本基于恶意代码公开库、实际生产环境以及随机访问的网站中收集的代码文件确定,所述训练样本集中的训练样本的确定过程,包括:
从多个恶意公开库获取相应的第一恶意代码文件集合,并对所述第一恶意代码文件集合中的每一恶意代码标注相应的恶意代码类型标签;获取实际生产环境中的网络入侵代码并将其确定为第二恶意代码文件集合,并对所述第二恶意代码文件集合中的每一恶意代码标注相应的恶意代码类型标签;将所述第一恶意代码文件集合和所述第二恶意代码文件集合及其每一恶意代码对应的标签确定为恶意代码训练样本集;从随机访问的网站中分别收集正常代码文件作为正常代码训练样本集;将所述恶意代码训练样本集与所述正常代码训练样本集确定为初始训练样本集;其中,所述恶意代码训练样本集与所述正常代码训练样本集中样本数量的比例为1:1。
在其中一个实施例中,在基于所述训练样本集训练重参数化的恶意代码分类模型之前,所述方法还包括:
通过映射引擎,确定所述初始训练样本集中的每一代码文件对应的链接以及唯一索引号;
基于所述每一代码文件对应的链接以及唯一索引号确定代码文件库;并基于所述唯一索引号和每一代码文件对应的类型标签确定标记数据库;
基于所述代码文件库中的每个代码文件生成每个代码文件对应的灰度图;
从所述标记数据库中获取代码文件的类型标签,确定代码文件中代码对应的灰度图与类型标签的映射关系,并将所述灰度图和类型标签确定为最终的训练样本集。
如图4所示,本发明还提供了一种恶意代码分类模型的训练方法,所述方法包括:
步骤410,获取初始训练样本集,所述初始训练样本集中包括恶意代码文件、正常代码文件以及恶意代码和正常代码对应的类型标签文件。
首先,结合前文所述,可以从恶意代码公开库、实际生产环境以及随机访问的网站中收集恶意代码文件与正常代码文件,且恶意代码文件数量与正常代码文件数量比率为1:1,并通过映射引擎构建一个代码文件库与类型标签对应的标记数据库。其中,本发明分别从MalShare、MalwareBazaar、MalwareSamples Malware-Feed、Malware DB、VirusShare、Virus and Malware Samples、VirusSamples、VirusSign、MalShare、theZoo、MalwareArchive等公开库中收集以Web应用或浏览器为传播途径的恶意代码集,并为每份恶意代码标注其类型,如后门、僵尸网络、下载器、间谍软件、启动器、内核套件、蠕虫或计算机病毒等。同时,本发明也增加了实际生产环境中的网络入侵代码样本及其标签,扩充恶意代码的训练样本数,使其拥有更强的落地性。
步骤420,通过对恶意代码文件和正常代码文件中的恶意代码和正常代码进行预处理,得到恶意代码和正常代码分别对应的灰度图,基于所述灰度图和所述类型标签文件确定最终的训练样本集。
结合前文的描述,在确定代码文件库后,可以反编译代码文件库中的代码,生成二进制文件:对代码文件库中所有代码文件进行二进制编码,生成二进制文件,存入文件数据库中。然后可以通过提取出二进制文件,以8个bit为一组以此生成十进制文件,再次存入文件数据库内。并将十进制文件生成灰度图:提取出十进制文件,并转换为固定宽度为256的二维矩阵,从而形成灰度图,并从标记数据库中将代码文件的类型标签取出,形成代码对应灰度图与标签的映射关系,并将灰度图和标签做为训练样本集。
步骤430,基于所述最终的训练样本集训练重参数化的恶意代码分类模型,确定所述恶意代码分类模型的参数。
具体地,使用交叉熵损失函数计算损失,使用Adam算法进行梯度计算,基于所述训练样本集训练重参数化的恶意代码分类模型,确定所述恶意代码分类模型的参数。
图5为本发明提供的重参数化过程的示意图。如图5所示,通常情况下,VGG19骨干模型中是由多通道的3x3卷积以及批标准化层(batch normalization,BN)组成,而本发明为了实现在保证能够提取比较丰富的特征的前提下,进一步地减少内存数据的访问量,从而减少每一个网络模块的并行计算度,提高内存的利用率,因此在VGG19骨干模型的每一卷积层增加了1x1卷积分支和恒等映射分支。为了后续将多个分支的卷积核的参数进行合并,可以通过填充实现各个分支的卷积核的参数个数相等,即均为3x3的卷积。如图5所示,其中,可以对每个通道的1x1卷积等效为卷积核参数除中心位置外的其他位置取值均为0的卷积。可以理解,图5仅示例性的给出了4个通道下对应的各个分支的卷积情况。因此,如图5所示,在4通道的情况下,恒等映射分支对应的其中两通道的卷积核参数除中心位置外的其他位置取值均为0,另外两通道的卷积核各个位置的参数均为0。之后根据卷积的可加性,将填充后的3x3卷积分支以及1x1卷积分支和恒等映射分支的卷积的参数相加,即可得到与原始VGG19骨干模型模型输出完全相同的仅包含一个3x3卷积的单路模型。
图6为本发明提供的恶意代码分类检测的可解释性模型确定灰度图中恶意代码的可解释性的过程示意图。如图6所示,灰度图经过重参数化的VGG19网络,得到对应的输出结果,所述输出结果经过Botnet,通过恶意代码分类检测的可解释性模型以及反向传播过程确定输入(也即灰度图)对应的相关分数矩阵,根据相关分数矩阵通过热力图显示VGG19网络推导出预测结果的主要依据部分。
下面对本发明提供的基于可解释性深度学习的恶意代码检测装置进行描述,下文描述的基于可解释性深度学习的恶意代码检测装置与上文描述的基于可解释性深度学习的恶意代码检测方法可相互对应参照。
如图7所示,在一个实施例中,提供了一种基于可解释性深度学习的恶意代码检测装置,该基于可解释性深度学习的恶意代码检测装置可以包括:
第一获取模块710,用于获取目标代码,并基于所述目标代码确定对应的灰度图;
第一确定模块720,用于基于预训练好的重参数化的恶意代码分类模型、恶意代码分类检测的可解释性模型以及所述目标代码对应的灰度图,确定并显示所述目标代码对应的灰度图的可解释性的第一相关分数矩阵;其中,所述预训练好的重参数化的恶意代码分类模型为深度学习模型,用于提取所述目标代码对应的灰度图中的丰富的特征,并用于确定所述目标代码中的恶意代码的目标类型;所述恶意代码分类检测的可解释性模型中包括最大二叉堆模型和目标可解释性模型;
第二确定模块及显示模块730,用于基于所述第一相关分数矩阵、各种类型的恶意代码对应的模板图和所述恶意代码分类检测的可解释性模型,确定并显示所述目标代码对应的灰度图和各种类型的恶意代码对应的模板图之间的相似度。
在其中一个实施例中,所述第一确定模块720包括:
第一确定单元,用于基于所述预训练好的重参数化的特征提取模型以及所述目标代码对应的灰度图,确定前向传播过程中所述重参数化的特征提取模型中每一层神经元提取的所述目标代码对应的灰度图的第一特征;
第二确定单元,用于根据所述目标可解释性模型,基于上一层每个神经元对应的第一特征以及所述重参数化的特征提取模型中当前层各个神经元与上一层的每个神经元之间的权重,确定上一层的每个神经元的第一相关分数;
第三确定单元,用于基于反向传播过程,所述最大二叉堆模型以及上一层的神经元对应的第一相关分数向量,确定上一层的前n层的神经元的第二相关分数向量;其中,n为大于或等于1的整数;
第四确定单元,用于基于所述第二相关分数向量,确定并显示输入层中多个神经元对应的第一相关分数矩阵。
在其中一个实施例中,所述第三确定单元包括:
第五确定单元,用于基于所述最大二叉模型对上一层的神经元对应的第一相关分数向量进行排序,基于排序的第一相关分数向量中的排名超过预设阈值的第一相关分数,确定上一层的前一层的神经元对应的第二相关分数向量。
在其中一个实施例中,所述第二确定模块及显示模块730包括:
第六确定单元,用于基于恶意代码分类检测的可解释性模型,确定所述各种类型的恶意代码对应的模板图中的第二相关分数矩阵;
第七确定单元以及显示单元,用于基于所述第一相关分数矩阵和所述第二相关分数矩阵,确定所述各种类型的恶意代码对应的模板图与所述目标代码对应的灰度图之间的相似度,并在所述各种类型的恶意代码对应的模板图与所述目标代码对应的灰度图中分别突出显示相似度高于预设阈值的地方。
在其中一个实施例中,所述预训练好的重参数化的特征提取模型为预训练好的重参数化的VGG19骨干模型,所述VGG19骨干模型的每一卷积层由3x3卷积分支以及1x1卷积分支和恒等映射分支构成;其中,1x1卷积和恒等映射都为卷积核参数除中心位置外的其他位置取值均为0的卷积;之后根据卷积的可加性,将所述3x3卷积分支以及1x1卷积分支和恒等映射分支的卷积的参数相加,得到与原始VGG19骨干模型模型输出完全相同的仅包含一个3x3卷积的单路模型。
在其中一个实施例中,所述装置还包括:
第二获取模块,用于从多个恶意公开库获取相应的第一恶意代码文件集合,并对所述第一恶意代码文件集合中的每一恶意代码标注相应的恶意代码类型标签;获取实际生产环境中的网络入侵代码并将其确定为第二恶意代码文件集合,并对所述第二恶意代码文件集合中的每一恶意代码标注相应的恶意代码类型标签;将所述第一恶意代码文件集合和所述第二恶意代码文件集合及其每一恶意代码对应的标签确定为恶意代码训练样本集;
收集模块,用于从随机访问的网站中分别收集正常代码文件作为正常代码训练样本集;
第三确定模块,用于将所述恶意代码训练样本集与所述正常代码训练样本集确定为初始训练样本集;
其中,所述恶意代码训练样本集与所述正常代码训练样本集中样本数量的比例为1:1。
在其中一个实施例中,所述装置还包括:
第四确定模块,用于通过映射引擎,确定所述初始训练样本集中的每一代码文件对应的链接以及唯一索引号;
第五确定模块,用于基于所述每一代码文件对应的链接以及唯一索引号确定代码文件库;并基于所述唯一索引号和每一代码文件对应的类型标签确定标记数据库;
生成模块,用于基于所述代码文件库中的每个代码文件生成每个代码文件对应的灰度图;
第六确定模块,用于从所述标记数据库中获取代码文件的类型标签,确定代码文件中代码对应的灰度图与类型标签的映射关系,并将所述灰度图和类型标签确定为最终的训练样本集。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(communications interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行基于可解释性深度学习的恶意代码检测方法,该方法包括:获取目标代码,并基于所述目标代码确定对应的灰度图;基于预训练好的重参数化的恶意代码分类模型、恶意代码分类检测的可解释性模型以及所述目标代码对应的灰度图,确定并显示所述目标代码对应的灰度图的可解释性的第一相关分数矩阵;其中,所述预训练好的重参数化的恶意代码分类模型为深度学习模型,用于提取所述目标代码对应的灰度图中的丰富的特征,并用于确定所述目标代码中的恶意代码的目标类型;所述恶意代码分类检测的可解释性模型中包括最大二叉堆模型和目标可解释性模型;基于所述第一相关分数矩阵、各种类型的恶意代码对应的模板图和所述恶意代码分类检测的可解释性模型,确定并显示所述目标代码对应的灰度图和各种类型的恶意代码对应的模板图之间的相似度。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,randomaccess memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行本发明提供的基于可解释性深度学习的恶意代码检测方法,所述基于可解释性深度学习的恶意代码检测方法包括:获取目标代码,并基于所述目标代码确定对应的灰度图;基于预训练好的重参数化的恶意代码分类模型、恶意代码分类检测的可解释性模型以及所述目标代码对应的灰度图,确定并显示所述目标代码对应的灰度图的可解释性的第一相关分数矩阵;其中,所述预训练好的重参数化的恶意代码分类模型为深度学习模型,用于提取所述目标代码对应的灰度图中的丰富的特征,并用于确定所述目标代码中的恶意代码的目标类型;所述恶意代码分类检测的可解释性模型中包括最大二叉堆模型和目标可解释性模型;基于所述第一相关分数矩阵、各种类型的恶意代码对应的模板图和所述恶意代码分类检测的可解释性模型,确定并显示所述目标代码对应的灰度图和各种类型的恶意代码对应的模板图之间的相似度。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行本发明提供的基于可解释性深度学习的恶意代码检测方法,所述基于可解释性深度学习的恶意代码检测方法包括:获取目标代码,并基于所述目标代码确定对应的灰度图;基于预训练好的重参数化的恶意代码分类模型、恶意代码分类检测的可解释性模型以及所述目标代码对应的灰度图,确定并显示所述目标代码对应的灰度图的可解释性的第一相关分数矩阵;其中,所述预训练好的重参数化的恶意代码分类模型为深度学习模型,用于提取所述目标代码对应的灰度图中的丰富的特征,并用于确定所述目标代码中的恶意代码的目标类型;所述恶意代码分类检测的可解释性模型中包括最大二叉堆模型和目标可解释性模型;基于所述第一相关分数矩阵、各种类型的恶意代码对应的模板图和所述恶意代码分类检测的可解释性模型,确定并显示所述目标代码对应的灰度图和各种类型的恶意代码对应的模板图之间的相似度。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
可以理解,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。