[发明专利]一种基于改进stacking算法的Android恶意软件检测方法有效
| 申请号: | 202010166372.7 | 申请日: | 2020-03-11 |
| 公开(公告)号: | CN111310185B | 公开(公告)日: | 2022-10-04 |
| 发明(设计)人: | 张高峰;鲍旭丹;徐本柱;郑利平;史骏;夏雪晗;刘恩生;徐立强 | 申请(专利权)人: | 合肥工业大学 |
| 主分类号: | G06F21/56 | 分类号: | G06F21/56;G06N3/04;G06N3/08 |
| 代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉 |
| 地址: | 230009 安*** | 国省代码: | 安徽;34 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 改进 stacking 算法 android 恶意 软件 检测 方法 | ||
1.一种基于改进Stacking算法的Android恶意软件检测方法,其特征包括以下步骤:
步骤一:特征向量构建:
步骤1.1:根据Android软件的权限特征和Intent意图特征分别构建包含m个权限特征的权限列表项listP和包含n个Intent特征的意图列表项listI;
步骤1.2:获取T个Android软件样本,并对第t个Android软件样本进行解压,得到第t个样本的AndroidManifest.xml清单文件,再对第t个AndroidManifest.xml清单文件进行扫描,并获取第i个权限特征和第j个Intent意图特征,判断所述第i个权限特征是否属于权限列表项listP,若是,则将第t个样本的第i个权限特征记作“1”,否则,记作“0”;判断第j个Intent特征是否属于意图列表项listI,若是,则将第t个样本的第j个Intent特征记作“1”,否则,记作“0”;从而遍历T个样本后,得到权限特征向量和Intent特征向量
步骤1.3:将所述权限特征向量P和Intent特征向量I进行并集操作,得到样本总体特征向量X=[x1,...,xt,...,xT],xt表示第t个样本的总体特征;
步骤二:特征向量处理:
步骤2.1:利用局部线性嵌入算法对所述样本总体特征向量X=[x1,...,xt,...,xT]进行降维处理:
步骤2.2.1、根据欧式距离,计算到第t个样本xt最近的k个近邻点(xt1,xt2,...,xtk);
步骤2.2.2、利用式(1)构建损失函数并通过最小化获得局部重构权值矩阵
式(1)中,xd为第t个样本xt的第d个近邻点,wtd为第t个样本xt在对应第d个近邻点xd的权重系数;
步骤2.2:利用式(2)构建所有样本从原始高维空间映射到低维空间中的损失函数Φ(Y):
式(2)中,yt为第t个样本xt在低维空间中对应的投影点,yd为投影点yt的第d个近邻点,E为κ×κ阶单位阵,κ为低维空间的维数,κ<<m+n;
步骤2.3、通过最小化损失函数Φ(Y)获得降维后的特征向量Y=[y1,...,yt,...,yT];
步骤三:Android恶意软件检测:
步骤3.1:划分降维后的特征向量Y=[y1,...,yt,...,yT]为训练集Ytra和测试集Ytst,并用ltra和ltst表示所述训练集Ytra和测试集Ytst的真实标签,用Ntra和Ntst表示训练集Ytra和测试集Ytst的数量;设置交叉验证折数为n,即将所述训练集Ytra分为n份,以每n-1份作为子训练集,剩余的1份作为子测试集;
步骤3.2:在Stacking算法的第1层中,通过交叉验证的方法将所述训练集Ytra分别输入S个基学习器中,得到S个最优模型及其相应的预测结果,其中,任意第s个最优模型记为Nets,所述第s个最优模型Nets的预测结果包含:每份子测试集的预测结果的合并值As以及对所述测试集Ytst的预测结果的求和平均值Bs;
步骤3.3:利用式(3)计算预测结果与所述训练集Ytra的真实标签ltra的误报率FPRs:
式(3)中,FPRs表示合并值As与训练集Ytra的真实标签ltra的误报率,FPs表示合并值As中正常软件被检测为恶意软件的数量,TPs表示合并值As中恶意软件被检测为恶意软件的数量;
步骤3.4:在Stacking算法的第2层中,利用式(4)计算合并值As的加权值ws:
式(4)中,用(1-FPRs)λ表示第s个最优模型Nets的反误报分量,λ为调整参数;
步骤3.5:利用式(5)得到合并值As的加权结果Cs:
Cs=wsAs (5)
将加权结果Cs配合所述训练集Ytra的真实标签ltra作为新的训练集,并输入Stacking算法第2层中的元学习器进行训练,得到训练好的元学习器,用于对所述求和平均值Bs进行预测,从而得到新的训练集的分类结果
步骤3.6:利用式(6)计算新的训练集的分类结果与所述测试集Ytst的真实标签ltst的均方误差值
步骤3.7:对所述调整参数λ进行更新,使得所述误差值最小化,从而得到最优元学习器并用于实现对未知Android软件的检测。
2.根据权利要求1所述的Android恶意软件检测方法,其特征是,所述步骤3.2中的基学习器为深度神经DNN网络,并按如下步骤得到第s个最优模型Nets:
步骤一:参数初始化:
步骤1.1:自底向上逐层堆叠多个受限玻尔兹曼机RBM,从而构建深度信念网络DBN模型;
步骤1.2:在深度信念网络DBN模型的最后一层采用softmax激活函数;
步骤1.3:将所述训练集Ytra输入所述深度信念网络DBN模型中并得到预训练结果,从而实现对深度神经网络DNN中的参数的初始化;
步骤1.4:将所述训练集Ytra输入初始化后的深度神经DNN网络中,得到预测值
步骤二:参数调优:
步骤2.1:利用反向传播BP算法进行参数调优:
对深度神经网络DNN中的第1个到第Rs个隐层使用Sigmod函数作为激活函数,输出层使用softmax激活函数;
利用式(8)计算训练集Ytra的真实标签ltra与所述预测值的交叉熵损失函数
式(8)中,表示经交叉验证后输入到初始化后的深度神经网络DNN中的子训练集数量,为当前模型Net预测Android软件是正常样本的概率,σsoftmax(·)表示softmax函数,output(Rs)表示最后一个隐层的输出;
步骤2.2:利用随机梯度下降法对交叉熵损失函数进行迭代优化,并利用式(9)更新深度神经网络DNN中的第r个隐层的权值和偏置值从而得到第s个最优模型Nets:
式(9)中,η为学习率,“←”表示赋值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工业大学,未经合肥工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010166372.7/1.html,转载请声明来源钻瓜专利网。





