CN110489968B - 基于RNN和CNN的Android恶意软件检测方法及系统 - Google Patents
基于RNN和CNN的Android恶意软件检测方法及系统 Download PDFInfo
- Publication number
- CN110489968B CN110489968B CN201910751207.5A CN201910751207A CN110489968B CN 110489968 B CN110489968 B CN 110489968B CN 201910751207 A CN201910751207 A CN 201910751207A CN 110489968 B CN110489968 B CN 110489968B
- Authority
- CN
- China
- Prior art keywords
- training
- neural network
- convolutional neural
- operation code
- code sequence
- 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
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Virology (AREA)
- Image Analysis (AREA)
Abstract
本发明提供了一种基于RNN和CNN的Android恶意软件检测方法及系统,检测方法包括:对训练样本的原始安装文件进行特征提取,获得操作码序列;利用操作码序列训练BLSTM网络;利用训练好的BLSTM网络将操作码序列提取为特征图片;利用特征图片训练卷积神经网络;对待检测Android应用,首先对其安装文件进行特征提取,获得其操作码序列;然后将该操作码序列输入训练好的BLSTM网络中,提取出特征图片;最后将该特征图片输入到训练好的卷积神经网络中,输出是否属于恶意软件的分类结果。本发明实现对Android平台下的善意软件和恶意软件的识别区分,提高Android软件平台的安全性。
Description
技术领域
本发明涉及恶意软件检测领域,具体涉及一种基于RNN和CNN的Android恶意软件检测方法及系统。
背景技术
现在,互联网是我们生活工作中非常重要的一部分。但是,基于恶意软件的网络攻击也是一个很严重的问题。随着科学技术的发展,恶意软件的种类以及复杂度越来越高,对恶意软件的识别也越来越具有难度,尤其是在移动领域平台。鉴于移动设备和手机应用商店的快速增长,新应用程序的数量太大而无法手动检查每个程序的恶意行为,恶意软件检测已经成为了现今移动互联网领域发展的重要技术保障。研究和实现高准确度的恶意软件检测系统具有很重要的现实意义,受到了相关学术界和业界的密切关注。
深度学习是近年来新兴起的一种新的机器学习领域,通过建立具有阶层结构的人工神经网络,在计算机系统中实现人工智能。其中多层神经元通过不同的权重和激活函数相互连接,以学习输入和输出之间的隐藏关系。深度学习被用于对复杂结构和大样本的高维数据进行学习,在人像识别、机器翻译、自动驾驶等现实问题中取得了成功。
Android恶意软件检测方法目前主要有两种,即静态分析和动态检测。静态分析是指通过分析程序代码来判断程序行为。动态分析是指在严格控制的环境下执行应用程序,尽可能的触发软件的全部行为并记录,以检测应用程序是否包含恶意行为。目前已有的静态分析方法有依赖于字节码和操作码的n-gram分析,该方法首先计算字节码的n-gram,然后根据KNN算法执行恶意软件检测。此外,还有一类恶意软件检测方法依赖于将恶意软件转换为图像。该方法将二进制字节码转换成灰度图像,并对图像进行模式识别。以上方法均达到了一定的检测精度。但是,随着恶意软件数量的急剧增加,用于训练模型的数据集的大小对检测精度和训练效率也有显著影响。虽然n-gram方法的检测精度很高,但是它需要大量的计算资源和时间来处理所需模型参数的动态增长。然而,CNN能够处理爆炸性的数据增长,因为参数数量的增加并不意味着计算资源和所需时间的增长。但是如果直接将操作码序列用one-hot编码转换成特征矩阵作为卷积神经网络的输入,就忽略了操作码序列的前后关联关系。
发明内容
为了解决现有技术问题,本发明提供一种基于RNN和CNN的Android恶意软件检测方法及系统,实现对Android平台下的善意软件和恶意软件的识别区分,具有识别精度高的特点,提高Android软件平台的安全性。
为解决上述技术问题,本发明所采取的技术方案是:
一种基于RNN和CNN的Android恶意软件检测方法,包括以步骤:
S1,对训练样本的原始安装文件进行特征提取,获得操作码序列;
S2,利用操作码序列训练BLSTM网络,得到训练好的BLSTM网络;
S3,利用训练好的BLSTM网络将操作码序列提取为特征图片;
S4,利用特征图片训练卷积神经网络,得到训练好的卷积神经网络;
S5,对待检测Android应用,首先对其安装文件进行特征提取,获得其操作码序列;然后将该操作码序列输入步骤S2获得的训练好的BLSTM网络中,提取出特征图片;最后将该特征图片输入到步骤S4中训练好的卷积神经网络中,输出是否属于恶意软件的分类结果。
进一步的,所述步骤S1具体包括以下处理:
S1-1,解压缩训练样本的.apk安装文件,获取.apk安装文件包含的class.dex文件;
S1-2,对class.dex文件进行反编译,获取Android应用的.smali文件;
S1-3,舍弃.smali文件中的操作数,得到操作码序列。
进一步的,所述步骤S2具体包括以下处理:
S2-1,BLSTM网络参数和权重随机初始化;
S2-2,将操作码序列输入BLSTM网络,进行训练;
S2-3,通过对比当前神经元的输出向量和下一神经元的输入向量计算损失函数,通过反向传播算法更新参数和权重;循环执行S2-2至S2-3,直至BLSTM满足条件或训练周期结束。
进一步的,所述步骤S3具体包括以下处理:
S3-1,对照Dalvik指令表对操作码序列进行one-hot编码后再输入到训练好的BLSTM网络中;
S3-2,提取每个隐藏层的输出向量{h1,h2,…,hL};
S3-3,利用将L个隐藏层的输出向量分成N个向量组,对每个向量组求平均,得到N个特征向量;其中,fk是固定长度向量序列的一个元素,L是操作码序列的长度,N是特征图片的高度,pk是第k个向量组的最后一个数字;
S3-4,将N个特征向量拼在一起构成N*W的特征矩阵F:
S3-5,用sigmoid函数将特征矩阵F中的元素转化为[0,1],再乘255以形成256级灰色图片,得到尺寸为N*256的特征图片。
进一步的,所述步骤S4具体包括以下处理:
S4-1,卷积神经网络参数和权重随机初始化;
S4-2,将尺寸为N*256的特征图片输入卷积神经网络,进行训练;
S4-3,根据神经网络的误测精度反向传播进行权重和参数的调整,直至CNN满足条件或训练周期结束。
一种基于RNN和CNN的Android恶意软件检测系统,所述系统包括:
训练样本获取模块:用于获取训练样本,所述训练样本为已知类型的软件的执行程序,所述类型包括良性和恶意;
训练样本处理模块:用于对所述训练样本进行解压、反编译和one-hot编码处理,得到所述训练样本处理后的操作码序列;
BLSTM训练模块:用于以编码后的操作码序列为输入的向量序列,训练BLSTM网络,当所述BLSTM网络输出的预测下一输入序列的准确度没有达到设定值时,则根据下一输入序列调整训练过程中的权重参数,继续训练BLSTM网络;当所述BLSTM网络预测下一输入向量的准确度达到设定值时,停止训练BLSTM网络,最终得到输出为预测的下一输入序列的BLSTM网络;
特征图片提取模块:用于利用训练好的BLSTM网络对操作码序列进行特征提取,得到特征图片;
卷积神经网络训练模块:用于以提取出的特征图片为输入矩阵,训练卷积神经网络,当所述卷积神经网络输出的恶意概率或非恶意概率的准确度没有达到设定值时,则根据所述卷积神经网络输出的恶意概率或非恶意概率的准确度调整训练过程中的权重参数,继续训练卷积神经网络;当所述卷积神经网络输出的准确度达到设定值时,停止训练卷积神经网络,最终得到输出为准确度的卷积神经网络;
准确度判断模块:用于判断所述BLSTM网络预测下一输入向量的准确度和所述卷积神经网络输出的恶意概率或非恶意概率的准确度是否达到设定值;
识别模块:用于利用训练好的卷积神经网络对待检测Android应用进行检测,输出该Android应用是否属于恶意软件的识别结果。
进一步的,所述训练样本处理模块具体包括:解压单元:用于对获取的训练样本进行解压,获得class.dex文件;反编译单元:用于对class.dex文件进行反编译,获得含有操作码的.smali文件;编码处理单元:用于提取.smali文件中的操作码,并对照Dalvik指令表对操作码进行one-hot编码,获得操作码序列。
进一步的,所述特征图片提取模块具体包括:特征向量提取单元:用于将操作码序列输入BLSTM网络中,提取每一个隐藏层的输出向量;固定尺寸单元:用于将l个向量序列分成N份,对每份向量组求平均,形成N个特征向量;向量拼接单元:用于将得到的N个特征向量拼在一起,形成固定尺寸的特征图片。
进一步的,所述卷积神经网络训练模块具体包括:参数设置单元:用于设置卷积神经网络的内层参数top K,K=3;训练单元:用于以提取的特征图片为输入矩阵,训练卷积神经网络。
进一步的,所述识别模块具体包括:待检测软件获取单元:用于获取待检测Android应用的安装文件;待检测软件处理单元:用于对待检测Android应用的安装文件进行解压、反编译和one-hot编码处理,得到待检测Android应用处理后的操作码序列;待检测软件特征图片提取单元:用于将待检测Android应用的操作码序列输入训练好的BLSTM网络中,提取特征图片;识别单元:用于将所述待检测Android应用提取出的特征图片作为特征矩阵输入卷积神经网络,进行识别。
采用上述技术方案所产生的有益效果在于:
本发明提供的基于RNN和CNN的Android恶意软件检测方法及系统,采用软件的操作码为识别对象,通过BLSTM作为特征提取器来提取特征图片,BLSTM的正向能保留操作码序列和上文的关系,反向能保留操作码序列和下文的关系,因此能更好的提取操作码的相关特征。此外,本发明对卷积神经网络的trunk k层进行了分块处理,保留了更多的特征值。对操作码的特征提取以及对trunk k层的分块处理,使得本发明的Android恶意软件检测方法及系统具有识别精度高的特点。而且,相比于传统的手动识别,本发明操作更加简便。
附图说明
图1是本发明基于RNN和CNN的Android恶意软件检测流程图;
图2为本发明提出的特征提取的方法;
图3是本发明基于RNN和CNN的Android恶意软件检测系统结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明提供了一种基于RNN和CNN的Android恶意软件检测方法及系统,用于实现对Android平台下的善意软件和恶意软件进行识别区分,以提高Android软件平台的安全性。
如图1所示,本发明的基于RNN和CNN的Android恶意软件检测方法,包括以下步骤:
S1,对训练样本的原始安装文件进行特征提取,获得操作码序列;
步骤S1具体包括以下处理:
S1-1,采用7-zip工具解压缩训练样本的.apk安装文件,获取.apk安装文件包含的class.dex文件;
S1-2,采用.apktool反编译程序对class.dex文件进行反编译,获取Android应用的操作码清单.smali文件;
S1-3,舍弃.smali文件中的操作数,得到操作码序列。
S2,利用操作码序列训练BLSTM网络,得到训练好的BLSTM网络;
步骤S2具体包括以下处理:
S2-1,BLSTM网络参数和权重随机初始化;
S2-2,将操作码序列输入BLSTM网络,进行训练;
遗忘门:ft=σ(Wf·[ht-1,xt]+bf),其中σ为sigmoid函数;
输入门:it=σ(Wi·[ht-1,xt]+bi);
输出门:ot=σ(Wo·[ht-1,xt]+bo),其中ht=ot*tanh(Ct);
S2-3,通过对比当前神经元的输出向量和下一神经元的输入向量计算损失函数,通过反向传播算法更新参数和权重;循环执行S2-2至S2-3,直至特征提取模型BLSTM满足条件或训练周期结束,得到训练好的BLSTM网络。
S3,利用训练好的BLSTM网络将操作码序列提取为特征图片;
如图2所示,步骤S3具体包括以下处理:
S3-1,对照Dalvik指令表对操作码序列进行one-hot编码后再输入到训练好的BLSTM网络中;
S3-2,提取每个隐藏层的输出向量{h1,h2,…,hL};
S3-3,利用将L个隐藏层的输出向量分成N个向量组,对每个向量组求平均,得到N个特征向量,以实现将不定长的操作码序列转换为固定尺寸的特征图片;其中,fk是固定长度向量序列的一个元素,L是操作码序列的长度,N是特征图片的高度,pk是第k个向量组的最后一个数字;
S3-4,将N个特征向量拼在一起构成N*W的特征矩阵F:
S3-5,用sigmoid函数将特征矩阵F中的元素转化为[0,1],再乘255以形成256级灰色图片,得到特征图片。
S4,利用特征图片训练卷积神经网络,得到训练好的卷积神经网络;
步骤S4具体包括以下处理:
S4-1,卷积神经网络参数和权重随机初始化;
S4-2,将尺寸为N*256的特征图片输入卷积神经网络,进行训练;
Embedding Layer:将N*256的矩阵乘以256*8的权重矩阵得到N*8的矩阵;
Reshape层:将N*8的矩阵变为1*N*8*1的矩阵;
卷积层:将1*N*8*1的矩阵经过k*8*64的卷积核得到1*(N-k+1)*1*64的矩阵;
trunk k层(将卷积层输出的矩阵分为k块,本发明选的是三块,以保留更多特征):将卷积层输出的矩阵平均分为三份,在每份中取最大的三个值(top 3),得到1*9*1*64的矩阵;
Reshape层:将1*9*1*64的矩阵变成9*64的矩阵;
全连接层:用1*9的全连接权重矩阵乘以上一步得到的9*64的矩阵变成1*64的矩阵;
全连接层:将1*64的矩阵乘以64*16的全连接权重矩阵变成1*16的矩阵;
全连接层:将1*16的矩阵乘以16*2的全连接矩阵变成1*2的矩阵获得最终解果(x,y)即预测应用是恶意和非恶意的概率;
S4-3,根据神经网络的误测精度反向传播进行权重和参数的调整,直至CNN满足条件或训练周期结束,得到训练好的卷积神经网络。
S5,对待检测的Android应用,首先对其安装文件进行特征提取,获得其操作码序列;然后将该操作码序列输入步骤S2获得的训练好的BLSTM网络中,提取出特征图片;最后将该特征图片输入到步骤S4中训练好的卷积神经网络中,输出是否属于恶意软件的分类结果。
如图3所示,本发明的基于RNN和CNN的Android恶意软件检测系统,包括训练样本获取模块、训练样本处理模块、BLSTM训练模块、特征图片提取模块、卷积神经网络训练模块、准确度判断模块和识别模块。
其中,训练样本获取模块用于获取训练样本,所述训练样本为已知类型的软件的执行程序,所述类型包括良性和恶意;训练样本处理模块用于对所述训练样本进行解压、反编译和one-hot编码处理,得到所述训练样本处理后的操作码序列;BLSTM训练模块用于以编码后的操作码序列为输入的向量序列,训练BLSTM网络,当所述BLSTM网络输出的预测下一输入序列的准确度没有达到设定值时,则根据下一输入序列调整训练过程中的权重参数,继续训练BLSTM网络;当所述BLSTM网络预测下一输入向量的准确度达到设定值时,停止训练BLSTM网络,最终得到输出为预测的下一输入序列的BLSTM网络。
特征图片提取模块用于利用训练好的BLSTM网络对操作码序列进行特征提取,得到特征图片;卷积神经网络训练模块用于以提取出的特征图片为输入矩阵,训练卷积神经网络,当所述卷积神经网络输出的恶意概率或非恶意概率的准确度没有达到设定值时,则根据所述卷积神经网络输出的恶意概率或非恶意概率的准确度调整训练过程中的权重参数,继续训练卷积神经网络;当所述卷积神经网络输出的准确度达到设定值时,停止训练卷积神经网络,最终得到输出为准确度的卷积神经网络;
准确度判断模块用于判断所述BLSTM网络预测下一输入向量的准确度和所述卷积神经网络输出的恶意概率或非恶意概率的准确度是否达到设定值;识别模块用于利用训练好的卷积神经网络对待检测Android应用进行检测,输出该Android应用是否属于恶意软件的识别结果。
训练样本处理模块具体包括解压单元、反编译单元和编码处理单元。其中,解压单元用于对获取的训练样本进行解压,获得class.dex文件;反编译单元用于对class.dex文件进行反编译,获得含有操作码的.smali文件;编码处理单元用于提取.smali文件中的操作码,并对照Dalvik指令表对操作码进行one-hot编码,获得操作码序列。
特征图片提取模块具体包括特征向量提取单元、固定尺寸单元和向量拼接单元。其中,特征向量提取单元用于将操作码序列输入BLSTM网络中,提取每一个隐藏层的输出向量;固定尺寸单元用于将l个向量序列分成N份,对每份向量组求平均,形成N个特征向量;向量拼接单元用于将得到的N个特征向量拼在一起,形成固定尺寸的特征图片。
卷积神经网络训练模块具体包括参数设置单元和训练单元。其中,参数设置单元用于设置卷积神经网络的内层参数top K,K=3;训练单元用于以提取的特征图片为输入矩阵,训练卷积神经网络。
识别模块具体包括待检测软件获取单元、待检测软件处理单元、待检测软件处理单元、待检测软件特征图片提取单元和识别单元。其中,待检测软件获取单元用于获取待检测Android应用的安装文件;待检测软件处理单元用于对待检测Android应用的安装文件进行解压、反编译和one-hot编码处理,得到待检测Android应用处理后的操作码序列;待检测软件特征图片提取单元用于将待检测Android应用的操作码序列输入训练好的BLSTM网络中,提取特征图片;识别单元用于将所述待检测Android应用提取出的特征图片作为特征矩阵输入卷积神经网络,进行识别。
为了提取操作码序列中隐含的前后关系,本发明引入了BLSTM模型,这是双向循环神经网络(BRNN)的一种,这种网络的内部状态可以展示动态时序行为,可以利用它内部的记忆来处理任意时序的输入序列。每一个训练序列向前和向后分别是两个循环神经网络(RNN),而且这两个都连接着一个输出层。这个结构提供给输出层输入序列中每一个点的完整的过去和未来的上下文信息。
本发明首先使用操作码序列训练BLSTM网络,再利用BLSTM网络作为特征提取器,将操作码序列转化为图片,然后使用该图片作为输入对卷积神经网络进行训练,最后卷积神经网络输出待检测Android应用的恶意概率和非恶意概率。
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (9)
1.一种基于RNN和CNN的Android恶意软件检测方法,其特征在于:包括以下步骤:
S1,对训练样本的原始安装文件进行特征提取,获得操作码序列;
S2,利用操作码序列训练BLSTM网络,得到训练好的BLSTM网络;
S3,利用训练好的BLSTM网络将操作码序列提取为特征图片;
所述步骤S3具体包括以下处理:
S3-1,对照Dalvik指令表对操作码序列进行one-hot编码后再输入到训练好的BLSTM网络中;
S3-2,提取每个隐藏层的输出向量{h1,h2,…,hL};
S3-3,利用将L个隐藏层的输出向量分成N个向量组,对每个向量组求平均,得到N个特征向量;其中,fk是固定长度向量序列的一个元素,L是操作码序列的长度,N是特征图片的高度,pk是第k个向量组的最后一个数字;
S3-4,将N个特征向量拼在一起构成N*W的特征矩阵F:
S3-5,用sigmoid函数将特征矩阵F中的元素转化为[0,1],再乘255以形成256级灰色图片,得到尺寸为N*256的特征图片;
S4,利用特征图片训练卷积神经网络,得到训练好的卷积神经网络;
S5,对待检测Android应用,首先对其安装文件进行特征提取,获得其操作码序列;然后将该操作码序列输入步骤S2获得的训练好的BLSTM网络中,提取出特征图片;最后将该特征图片输入到步骤S4中训练好的卷积神经网络中,输出是否属于恶意软件的分类结果。
2.根据权利要求1所述的基于RNN和CNN的Android恶意软件检测方法,其特征在于:所述步骤S1具体包括以下处理:
S1-1,解压缩训练样本的.apk安装文件,获取.apk安装文件包含的class.dex文件;
S1-2,对class.dex文件进行反编译,获取Android应用的.smali文件;
S1-3,舍弃.smali文件中的操作数,得到操作码序列。
3.根据权利要求1所述的基于RNN和CNN的Android恶意软件检测方法,其特征在于:所述步骤S2具体包括以下处理:
S2-1,BLSTM网络参数和权重随机初始化;
S2-2,将操作码序列输入BLSTM网络,进行训练;
S2-3,通过对比当前神经元的输出向量和下一神经元的输入向量计算损失函数,通过反向传播算法更新参数和权重;循环执行S2-2至S2-3,直至BLSTM满足条件或训练周期结束。
4.根据权利要求1所述的基于RNN和CNN的Android恶意软件检测方法,其特征在于:所述步骤S4具体包括以下处理:
S4-1,卷积神经网络参数和权重随机初始化;
S4-2,将尺寸为N*256的特征图片输入卷积神经网络,进行训练;
S4-3,根据神经网络的误测精度反向传播进行权重和参数的调整,直至CNN满足条件或训练周期结束。
5.一种基于RNN和CNN的Android恶意软件检测系统,其特征在于:是根据权利要求1-4任一项所述的基于RNN和CNN的Android恶意软件检测方法实现的,所述系统包括:
训练样本获取模块:用于获取训练样本,所述训练样本为已知类型的软件的执行程序,所述类型包括良性和恶意;
训练样本处理模块:用于对所述训练样本进行解压、反编译和one-hot编码处理,得到所述训练样本处理后的操作码序列;
BLSTM训练模块:用于以编码后的操作码序列为输入的向量序列,训练BLSTM网络,当所述BLSTM网络输出的预测下一输入序列的准确度没有达到设定值时,则根据下一输入序列调整训练过程中的权重参数,继续训练BLSTM网络;当所述BLSTM网络预测下一输入向量的准确度达到设定值时,停止训练BLSTM网络,最终得到输出为预测的下一输入序列的BLSTM网络;
特征图片提取模块:用于利用训练好的BLSTM网络对操作码序列进行特征提取,得到特征图片;
卷积神经网络训练模块:用于以提取出的特征图片为输入矩阵,训练卷积神经网络,当所述卷积神经网络输出的恶意概率或非恶意概率的准确度没有达到设定值时,则根据所述卷积神经网络输出的恶意概率或非恶意概率的准确度调整训练过程中的权重参数,继续训练卷积神经网络;当所述卷积神经网络输出的准确度达到设定值时,停止训练卷积神经网络,最终得到输出为准确度的卷积神经网络;
准确度判断模块:用于判断所述BLSTM网络预测下一输入向量的准确度和所述卷积神经网络输出的恶意概率或非恶意概率的准确度是否达到设定值;
识别模块:用于利用训练好的卷积神经网络对待检测Android应用进行检测,输出该Android应用是否属于恶意软件的识别结果。
6.根据权利要求5所述的基于RNN和CNN的Android恶意软件检测系统,其特征在于:所述训练样本处理模块具体包括:
解压单元:用于对获取的训练样本进行解压,获得class.dex文件;
反编译单元:用于对class.dex文件进行反编译,获得含有操作码的.smali文件;
编码处理单元:用于提取.smali文件中的操作码,并对照Dalvik指令表对操作码进行one-hot编码,获得操作码序列。
7.根据权利要求5所述的基于RNN和CNN的Android恶意软件检测系统,其特征在于:所述特征图片提取模块具体包括:
特征向量提取单元:用于将操作码序列输入BLSTM网络中,提取每一个隐藏层的输出向量;
固定尺寸单元:用于将l个向量序列分成N份,对每份向量组求平均,形成N个特征向量;
向量拼接单元:用于将得到的N个特征向量拼在一起,形成固定尺寸的特征图片。
8.根据权利要求5所述的基于RNN和CNN的Android恶意软件检测系统,其特征在于:所述卷积神经网络训练模块具体包括:
参数设置单元:用于设置卷积神经网络的内层参数top K,K=3;
训练单元:用于以提取的特征图片为输入矩阵,训练卷积神经网络。
9.根据权利要求5所述的基于RNN和CNN的Android恶意软件检测系统,其特征在于:所述识别模块具体包括:
待检测软件获取单元:用于获取待检测Android应用的安装文件;
待检测软件处理单元:用于对待检测Android应用的安装文件进行解压、反编译和one-hot编码处理,得到待检测Android应用处理后的操作码序列;
待检测软件特征图片提取单元:用于将待检测Android应用的操作码序列输入训练好的BLSTM网络中,提取特征图片;
识别单元:用于将所述待检测Android应用提取出的特征图片作为特征矩阵输入卷积神经网络,进行识别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910751207.5A CN110489968B (zh) | 2019-08-15 | 2019-08-15 | 基于RNN和CNN的Android恶意软件检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910751207.5A CN110489968B (zh) | 2019-08-15 | 2019-08-15 | 基于RNN和CNN的Android恶意软件检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489968A CN110489968A (zh) | 2019-11-22 |
CN110489968B true CN110489968B (zh) | 2021-02-05 |
Family
ID=68550947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910751207.5A Active CN110489968B (zh) | 2019-08-15 | 2019-08-15 | 基于RNN和CNN的Android恶意软件检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489968B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400713B (zh) * | 2020-03-31 | 2023-05-19 | 玉溪师范学院 | 基于操作码邻接图特征的恶意软件族群分类方法 |
CN112182571A (zh) * | 2020-07-21 | 2021-01-05 | 浙江工商大学 | 一种基于神经网络不变量的安卓恶意应用检测系统 |
CN113761528A (zh) * | 2020-08-07 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 恶意软件检测方法和装置 |
CN112417447B (zh) * | 2020-11-11 | 2021-07-20 | 北京京航计算通讯研究所 | 一种恶意代码分类结果的精确度验证方法及装置 |
CN112464234B (zh) * | 2020-11-21 | 2024-04-05 | 西北工业大学 | 一种云平台上基于svm的恶意软件检测方法 |
CN112464233B (zh) * | 2020-11-21 | 2023-04-07 | 西北工业大学 | 一种云平台上基于rnn的恶意软件检测方法 |
CN114707154B (zh) * | 2022-04-06 | 2022-11-25 | 广东技术师范大学 | 一种基于序列模型的智能合约可重入漏洞检测方法及系统 |
CN114896598B (zh) * | 2022-05-11 | 2024-05-21 | 武汉科技大学 | 一种基于卷积神经网络的恶意代码检测方法 |
CN116089951B (zh) * | 2023-02-24 | 2023-07-14 | 山东云天安全技术有限公司 | 一种恶意代码检测方法、可读存储介质及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985055B (zh) * | 2018-06-26 | 2020-08-28 | 东北大学秦皇岛分校 | 一种恶意软件的检测方法及系统 |
CN108920954B (zh) * | 2018-06-28 | 2020-08-04 | 中国科学院软件研究所 | 一种恶意代码自动化检测平台及方法 |
CN109165510B (zh) * | 2018-09-04 | 2021-03-26 | 中国民航大学 | 基于双通道卷积神经网络的Android恶意应用程序检测方法 |
CN109858250B (zh) * | 2019-02-20 | 2023-01-03 | 哈尔滨工程大学 | 一种基于级联分类器的安卓恶意代码检测模型方法 |
-
2019
- 2019-08-15 CN CN201910751207.5A patent/CN110489968B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110489968A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489968B (zh) | 基于RNN和CNN的Android恶意软件检测方法及系统 | |
CN109766992B (zh) | 基于深度学习的工控异常检测及攻击分类方法 | |
CN111723368A (zh) | 基于Bi-LSTM和自注意力的恶意代码检测方法及系统 | |
CN110472417B (zh) | 基于卷积神经网络的恶意软件操作码分析方法 | |
CN113691542B (zh) | 基于HTTP请求文本的Web攻击检测方法及相关设备 | |
CN110059625B (zh) | 一种基于mixup的人脸训练与识别方法 | |
CN113806746A (zh) | 基于改进cnn网络的恶意代码检测方法 | |
CN115168856B (zh) | 二进制代码相似性检测方法及物联网固件漏洞检测方法 | |
CN112364974B (zh) | 一种基于激活函数改进的YOLOv3算法 | |
CN112905997A (zh) | 面向深度学习模型中毒攻击的检测方法、装置及系统 | |
CN111401473A (zh) | 基于注意力机制卷积神经网络的红外目标分类方法 | |
CN113723070A (zh) | 文本相似度模型训练方法、文本相似度检测方法及装置 | |
CN117113163A (zh) | 基于双向时域卷积网络和特征融合的恶意代码分类方法 | |
CN116432184A (zh) | 基于语义分析和双向编码表征的恶意软件检测方法 | |
CN114692156A (zh) | 内存片段恶意代码入侵检测方法、系统、存储介质及设备 | |
CN115439708A (zh) | 一种图像数据处理方法和装置 | |
CN114826681A (zh) | 一种dga域名检测方法、系统、介质、设备及终端 | |
CN113904844A (zh) | 基于跨模态教师-学生网络的智能合约漏洞检测方法 | |
CN110197068B (zh) | 基于改进灰狼算法的Android恶意应用检测方法 | |
CN115017015B (zh) | 一种边缘计算环境下程序异常行为检测方法及系统 | |
CN111488574A (zh) | 恶意软件分类方法、系统、计算机设备和存储介质 | |
CN116467720A (zh) | 一种基于图神经网络的智能合约漏洞检测方法及电子设备 | |
CN115713669A (zh) | 一种基于类间关系的图像分类方法、装置、存储介质及终端 | |
CN114724162A (zh) | 文本识别模型的训练方法、装置、计算机设备及存储介质 | |
CN114091021A (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 |