利索能及
我要发布
收藏
专利号: 2019107512075
申请人: 东北大学秦皇岛分校
专利类型:发明专利
专利状态:已下证
更新日期:2024-12-10
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

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:其中W是BLSTM中隐藏层的维度,Dalvik指令共256个,故W=256;

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应用提取出的特征图片作为特征矩阵输入卷积神经网络,进行识别。