一种基于深度学习的Android恶意程序检测方法技术

技术编号:36093205 阅读:16 留言:0更新日期:2022-12-24 11:10
本发明专利技术公开了一种基于深度学习的Android恶意程序检测方法,步骤包括:收集Android恶意AKP样本和正常AKP样本,通过反编工具输出反编译文件,提取反编译文件权限特征、API特征和3

【技术实现步骤摘要】
一种基于深度学习的Android恶意程序检测方法


[0001]本专利技术属于深度学习和恶意程序检测
,涉及一种基于深度学习的Android恶意程序检测方法。

技术介绍

[0002]随着互联网技术的不断发展以及智能手机的更新换代,手机慢慢地从奢侈品变成了人手一部的大众消费品,成为了一个集上网浏览、聊天视讯、拍照听歌、行程健康码等多种功能为一体的便携式智能移动设备,Android操作系统的智能手机更是因其较高的性价比而广受人们的欢迎。在Android操作系统快速增长的同时,恶意应用软件也层出不穷,攻击者利用Android系统的开源性以及应用市场的不规范性等,开发出可以进行盗取隐私、话费扣取、远程控制等的恶意软件,严重损坏用户利益。因此,高效准确的Android恶意程序检测具有重要意义。
[0003]为提升Android恶意软件检测准确率,精确的特征提取和适配的深度学习算法是训练模型的关键。apk特征包含静态特征和动态特征,静态特征可以直接从反编译后的apk文件中提取,它的检测速度较快,但是对于进行了代码混淆以及使用错误格式的数字签名的Android软件来说,它的检测准确率不高;动态特征需要在软件运行过程中提取软件行为特征,它可以提取到多种多样的数据且不受代码混淆等技术的影响,但是检测速度较慢,因此需要选取合适的具有代表性的特征。机器学习作为常用的分类方法,常用于Android恶意程序检测中,如随机森林(Random Forest)、支持向量机(SVM)等,但机器学习在训练和测试模型时需要分析的特征较少,获取的是样本的浅层特征,并且需要手动提取特征再进行优化处理,在特征分析时只关注于特征本身而忽略了上下文关系,虽然机器学习的计算速度较快,但这些问题导致了机器学习算法的检测准确率不高。
[0004]单个的CNN模型挖掘的是样本的局部特征,并未考虑单词和语境之间的关系,且没有根据特征对分类的重要程度分配不同的注意力,使得模型的效率和分类准确率下降。

技术实现思路

[0005]本专利技术的目的是提供一种基于深度学习的Android恶意程序检测方法,解决了使用单特征导致的覆盖面不够广泛的问题,采用了多模型混合的深度学习技术,在提取样本局部特征的同时也能提取全局上下文特征,注意力机制的引入可以为不同的特征信息分配不同程度的注意力,提高模型的预测准确率。
[0006]本专利技术所采用的技术方案是:
[0007]一种基于深度学习的Android恶意程序检测方法,具体步骤为:
[0008]步骤1,收集Android恶意AKP样本和正常AKP样本,通过反编工具输出反编译文件;
[0009]步骤2,提取反编译文件中的权限特征、API特征和3

Gram特征,并转化为特征向量;
[0010]步骤3,建立CNN

BiLSTM

Attention模型,采用步骤2得到的特征向量作为样本集
对CNN

BiLSTM

Attention模型进行训练;
[0011]CNN

BiLSTM

Attention模型包括输入层、词嵌入层、融合注意力机制的双向长短期记忆(BiLSTM)模块、卷积层、全连接层、Softmax层;在训练模型时首先需要在词嵌入层使用Word2vec进行特征向量化处理,CNN会对特征向量矩阵进行卷积操作,使用max

pooling提取最大值并重新组成特征向量得到局部特征;然后使用BiLSTM捕获双向依赖,对特征向量矩阵提取全局上下文信息,并使用注意力机制Attention突出重要特征;计算最终输出首先要计算出上下文隐状态,再使用它和上一时刻的隐状态得出注意力概率,通过概率对上下文隐状态加权求和并经过变换后得到最终输出;将两个模型中的特征融合,为了使该网络也能表达非线性映射,需要引入激活函数,并使用Softmax实现对应用样本的分类;
[0012]步骤4,对于待检测的程序,采用步骤2方法得到特征向量并输入至训练好的CNN

BiLSTM

Attention模型中进行检测,得到检测结果。
[0013]本专利技术的特点还在于:
[0014]步骤1具体为反编译命令apktool.bat d

f[apk文件路径][输出文件夹路径]生成包括AndroidManifest.xml文件、smali文件的反编译文件。
[0015]权限特征的提取方法为:AndroidManifest.xml文件的<uses

permission>标签中提取包含.permission.的语句即为权限特征;API特征的提取方法为:smali文件中遍历以“invoke
‑”
开头的行进行提取;3

Gram特征的提取方法为:smali文件中使用Dalvik指令分类规则,去除对分类结果无影响的指令,简化为可以表达出语义的指令,根据指令的功能进行分类,将功能相同或相近的指令分为一类,并用七种字母标签代表精简后的一类指令。使用3

Gram模型中长度为3的滑动窗口来获取数据,将一条语句变为多个长度为N的片段,即为3

Gram特征。
[0016]CNN

BiLSTM

Attention模型的训练过程为:
[0017]首先,将样本集作为输入,然后使用Word2vec在嵌入层将样本特征转化为特征向量;其次,卷积神经网络选用3、4、5三种大小的卷积核各128个,在卷积层中对特征向量矩阵进行卷积处理,使用最大池化法(max

pooling)提取最大值并重新组成特征向量得到局部特征C
ccn
;采用对特征向量输入引入注意力机制的BiLSTM网络得到全局上下文信息特征C
blistm
,最后再全连接层将两个特征进行融合引入激活函数,采用梯度下降算法Adam进行训练,使用Softmax实现对应用样本的分类。
[0018]在卷积神经网络训练的过程中,假设卷积核大小为h
×
v,h为卷积核高度,v为词向量维度,w为权重矩阵,X
n+h
‑1为向量矩阵,b为偏置项,f为激活函数,卷积计算公式为:
[0019]C
i
=f(w*X
i:i+h
‑1+b)
[0020]经CNN卷积处理最大池化法(max

pooling)选取特征向量的最大值,最大池化计算公式为:
[0021]C
cnn
=max{C
i
}。
[0022]使用双向长短期记忆网络(BiLSTM)模型来提取全局上下文信息的过程为:若为正序LSTM,为逆序LSTM,则BiLSTM的输出状态本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习的Android恶意程序检测方法,其特征在于,具体步骤为:步骤1,收集Android恶意AKP样本和正常AKP样本,通过反编工具输出反编译文件;步骤2,提取反编译文件中的权限特征、API特征和3

Gram特征,并转化为特征向量;步骤3,建立CNN

BiLSTM

Attention模型,采用步骤2得到的特征向量作为样本集对CNN

BiLSTM

Attention模型进行训练;所述CNN

BiLSTM

Attention模型包括输入层、词嵌入层、融合注意力机制的双向长短期记忆(BiLSTM)模块、卷积层、全连接层、Softmax层;在训练模型时首先需要在词嵌入层使用Word2vec进行特征向量化处理,CNN会对特征向量矩阵进行卷积操作,使用max

pooling提取最大值并重新组成特征向量得到局部特征;然后使用BiLSTM捕获双向依赖,对特征向量矩阵提取全局上下文信息,并使用注意力机制Attention突出重要特征;计算最终输出首先要计算出上下文隐状态,再使用它和上一时刻的隐状态得出注意力概率,通过概率对上下文隐状态加权求和并经过变换后得到最终输出;将两个模型中的特征融合,为了使该网络也能表达非线性映射,需要引入激活函数,并使用Softmax实现对应用样本的分类;步骤4,对于待检测的程序,采用步骤2方法得到特征向量并输入至训练好的CNN

BiLSTM

Attention模型中进行检测,得到检测结果。2.如权利要求1所述的一种基于深度学习的Android恶意程序检测方法,其特征在于,所述步骤1具体为反编译命令apktool.bat d

f[apk文件路径][输出文件夹路径]生成包括AndroidManifest.xml文件、smali文件的反编译文件。3.如权利要求2所述的一种基于深度学习的Android恶意程序检测方法,其特征在于,所述权限特征的提取方法为:AndroidManifest.xml文件的<uses

permission>标签中提取包含.permission.的语句即为权限特征;所述API特征的提取方法为:所述smali文件中遍历以“invoke
‑”
开头的行进行提取;所述3

Gram特征的提取方法为:所述smali文件中使用Dalvik指令分类规则,去除对分类结果无影响的指令,简化为可以表达出语义的指...

【专利技术属性】
技术研发人员:孙钦东王艳王伟杨志海许航
申请(专利权)人:西安理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1