预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN112487430A(43)申请公布日2021.03.12(21)申请号202011387081.7(22)申请日2020.12.01(71)申请人杭州电子科技大学地址310018浙江省杭州市钱塘新区白杨街道2号大街(72)发明人俞东进俞海华陈信范旭麟(74)专利代理机构浙江千克知识产权代理有限公司33246代理人周希良(51)Int.Cl.G06F21/56(2013.01)G06N3/04(2006.01)G06K9/62(2006.01)G06F9/48(2006.01)权利要求书2页说明书5页附图1页(54)发明名称一种Android恶意软件检测方法(57)摘要本发明公开了一种结合权限和API调用序列特征的Android恶意软件检测方法。本发明提出分别采用随机森林和卷积神经网络模型训练分类器,最后通过线性结合的方法计算最终的预测结果。本发明利用词嵌入技术(Skip‑gram)表示每个API,在降低表示向量维度的同时保留了API之间的语义信息,使得CNN模型可以捕获丰富的n‑gram特征;分别训练了两个分类器,并使用线性组合的方法综合得到最后的预测结果能够提高恶意软件检测的准确性。CN112487430ACN112487430A权利要求书1/2页1.一种Android恶意软件检测方法,其特征在于包括如下步骤:步骤(1)给定n个Android应用软件安装包apk集合A=(A1,A2,…An);将每个apk表示成Ai=<apkId,mainfest,dex,lable>,i=1,2…n;其中apkId表示apk编号,mainfest表示apk中的清单文件,dex表示apk中的.dex后缀文件,label表示apk的类别,即恶意或非恶意;步骤(2)对每个apk进行特征抽取从mainfest文件中抽取所有的请求的权限信息,记作permission=<per1,per2,…perk>,其中k表示该apk请求权限的个数;利用Androguard逆向工程工具反编译dex文件,识别每个指令代码并抽取所有的API调用序列,记作:sequence=<API1,API2,…APIm>每个API表示成:APIj=<packageName,className,functionName>其中packageName表示该API的包名,className表示该API的类名,functionName表示该API的函数名,j=1,2,…m;通过特征抽取后,每个apk进一步表示为:Ai=<apkId,permission,sequence,lable>,i=1,2…n;步骤(3)对于permission和sequence进行预处理;步骤(4)对权限特征进行向量化表示;步骤(5)对API调用序列特征进行向量化表示;步骤(6)数据集划分,将集合A分为训练集ξtrain和测试集ξtest;步骤(7)利用随机森林模型训练一个基于权限的分类器MRF;步骤(8)利用卷积神经网络模型训练一个基于API调用序列的分类器MCNN;步骤(9)根据MRF和MCNN对测试集ξtest预测,得到相应的预测结果RRF和RCNN后,通过线性结合的方法计算最终的检测结果。2.根据权利要求1所述的一种Android恶意软件检测方法,其特征在于步骤(3)具体如下:根据官方文档定义的权限列表,过滤permission中第三方或自定义的权限;通过识别API中的packageName,过滤sequence中非官方的API;经过预处理后,每个apk表示为:Ai=<apkId,prePermission,preSequence,lable>。3.根据权利要求2所述的一种Android恶意软件检测方法,其特征在于步骤(4)具体如下:将数据集中所有样本请求的不同权限构建成权限字典,其中一个apk文件代表一个样本;利用one‑hot编码方法将prePermission用向量形式表示,记作Vp=[x1,x2,…xc];其中c表示字典的大小,xi代表字典中的第i个权限,xi=0表示该prePermission中不包含该权限,xi=1则表示该prePermission中包含该权限。4.根据权利要求1或2所述的一种Android恶意软件检测方法,其特征在于步骤(5)具体2CN112487430A权利要求书2/2页如下:将每个API看作不同的单词,一个API序列则看作一个句子,合并集合A上所有预处理后的API调用序列preSequence,生成一个语料库:Q=(preSequence1,preSequence2,…preSequencen);利用Word2Vec中的Skip‑gram模型对Q中的单词进行训练,得到每个API的向量表示VAPI=