[发明专利]一种基于半监督K-Means聚类算法的Android恶意软件检测方法有效
申请号: | 201910081131.X | 申请日: | 2019-01-28 |
公开(公告)号: | CN109670310B | 公开(公告)日: | 2023-04-18 |
发明(设计)人: | 刘雪娇;罗娟;胡芷琦 | 申请(专利权)人: | 杭州师范大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F18/23213 |
代理公司: | 杭州杭诚专利事务所有限公司 33109 | 代理人: | 尉伟敏 |
地址: | 310015 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 监督 means 算法 android 恶意 软件 检测 方法 | ||
1.一种基于半监督K-Means聚类算法的Android恶意软件检测方法,其特征在于,所述方法包括:
步骤S1、解析Android应用软件包:选择适量有标签的样本和两倍数量的无标签的样本,使用解压缩工具打开这些样本的Android应用软件包,得到classes.dex文件和AndroidManifest.xml文件,解析AndroidManifest.xml文件提取每个样本的权限的特征集合P1,反编译classes.dex文件提取调用的API,构建每个样本API对应的权限的特征集合P2,通过每个样本的权限集合P1和P2得到该样本的非过度申请的权限集合P3;
步骤S2、构建特征矩阵:通过信息增益算法得到不同权限的属性评分结果,统计每个样本的权限集合P1、P2、P3的评分结果为s1、s2、s3,选择适量有标签的样本构建成特征矩阵FN,
选择两倍数量的无标签的样本构建成特征矩阵FM;
步骤S3、恶意软件检测:运用半监督k-means算法对特征矩阵FN和特征矩阵FM中的样本进行恶意软件的检测。
2.根据权利要求1所述的一种基于半监督K-Means聚类算法的Android恶意软件检测方法,其特征是所述步骤S1中获取每个样本的权限特征集合的过程包括:
步骤S11、反编译classes.dex文件获取源代码,遍历所有源代码得到API集合,API集合对照公开的权限-函数映射关系表获得其对应的权限集合P2;
步骤S12、根据AndroidMainfest.xml文件解析得到的权限集合P1和权限集合P2得到非过度申请的权限集合P3,其中P3=P1∩P2。
3.根据权利要求1所述的一种基于半监督K-Means聚类算法的Android恶意软件检测方法,其特征是所述步骤S2中构建特征矩阵的过程包括:
步骤S21、通过信息增益算法处理多个非恶意软件和恶意软件得到不同权限的属性评分结果;定义权限变量Y为恶意软件中的权限,一共有n种权限,在恶意软件中每一种权限存在的概率为p(yi),在非恶意软件中每一种权限存在的概率为q(yi),计算Y的信息量为:计算权限y的信息增益为IG(y)=H(Y)-H(Y|y),IG(y)越大代表该权限对恶意软件和非恶意软件的区分度越大,将其作为权限y的属性评分结果;
步骤S22、根据步骤S21中得到的不同权限的属性评分结果,运用公式S=∑IG(y)(y∈P),计算每个样本的权限集合P1、P2以及P3的属性评分结果分别为s1、s2、s3;
步骤S23、选取m个有标签样本,构建有标签样本的特征向量V1,V1=(s1,s2,s3,type),type=0代表该样本为恶意软件,type=1代表该样本为非恶意软件,将有标签的样本集合集制成一个m×4特征矩阵FN;所述FN的表达式如下:
步骤S24、选n个无标签样本,构建无标签样本的特征向量V2,V2=(s1,s2,s3),将无签的样本集合集制成一个n×3特征矩阵FM;所述FM表达式如下:
4.根据权利要求1所述的一种基于半监督K-Means聚类算法的Android恶意软件检测方法,其特征是所述步骤S3中运用半监督k-means算法进行非恶意软件和恶意软件的检测过程包括:
步骤S31、根据特征矩阵FN将m个有标签样本表示成三维空间中的点{x(1),...,x(m)},其中x(i)=(ai1,ai2,ai3),样本x(i)的类别表示成c(i)=ai4,所有恶意样本构成恶意样本簇,所有非恶意样本构成非恶意样本簇,通过计算质心的方式分别得出恶意样本簇和非恶意样本簇的一个估计值,并将其作为初始聚类中心;
其中计算类别j初始聚类中心μ j 的公式是:
步骤S32、根据特征矩阵FM将n个无标签样本表示成三维空间中的点{x(m+1),...,x(m+n)},其中x(i)=(ai1,ai2,ai3),样本x(i)的类别表示成c(i)=-1,定义索引Index(i)=-1,定义标志位flag=true;
步骤S33、聚类过程:初始flag=false,对于每一个样本x(i)计算其索引Index(i)=argmnj||x(i)-μj||2,如果Index(i)=c(i),改变标志位flag=true,重置样本x(i)的类别c(i)=Index(i);
步骤S34、如果一次聚类结束后,标志位flag=true,对于恶意样本簇和非恶意样本簇,重新计算它们的聚类中心,重复聚类过程;
其中计算类别j聚类中心μj的公式是:
步骤S35、如果一次聚类结束后,flag=false,代表聚类结果不再发生变化,{c(1),...,c(m)}为特征矩阵FN的样本的最终的聚类结果,可用于计算该算法检测的准确率,{c(m+1),...,c(m+n)}为特征矩阵FM的样本的最终的聚类结果,c(i)=0代表待检测的无标签样本x(i)所代表的Android应用软件包的检测结果为恶意软件;c(i)=1代表待检测的无标签样本x(i)所代表的Android应用软件包的检测结果为非恶意软件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州师范大学,未经杭州师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910081131.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种检测文件的方法及装置
- 下一篇:基于高级语义的恶意代码分析与检测方法