【技术实现步骤摘要】
一种Android恶意软件检测方法
本专利技术涉及Android平台上恶意代码检测研究领域,尤其涉及一种结合权限和API调用序列特征的Android恶意软件检测方法。
技术介绍
近些年来,随着移动设备的快速发展,移动应用软件在人们生活和工作中起到了越来越重要的作用。通常,用户期望使用的应用是安全的、可靠的,然而在种类繁多的应用软件中充斥着大量的恶意软件,不断威胁着用户的信息安全。恶意软件(俗称“流氓软件”)是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。在2017年第一季度,GDATA研究人员发现了大约750,000个新的恶意软件。同样地,卡巴斯基官方报告显示,在2020年第一季度已检测出1,152,662个恶意软件安装包,同比上一年新增171,669个。因此,对于恶意软件的有效检测是恶意代码检测研究领域中的重要研究问题。通常来说,恶意软件检测技术主要可以分为静态检测和动态检测这两类技术。静态检测技术是指在不运行代码的情况下,利用反编译技术,和代码控制流图分析、数据流分析等方法对软件代码进行检测。该方法具有安全性高、检测速度快、代码覆盖率高等优点,但检测的准确度较低。动态检测技术是指通过运行代码,并记录代码运行过程中的一系列程序行为,如函数调用顺序、文件访问、网络使用等等,并利用这些信息对软件代码进行检测。与静态检测技术相比,该方法优势在于检测恶意软件的准确度较高,但存在代码覆盖率低、检测效率低等缺点。
技术实现思路
为了克服现有技术的 ...
【技术保护点】
1.一种Android恶意软件检测方法,其特征在于包括如下步骤:/n步骤(1)给定n个Android应用软件安装包apk集合A=(A
【技术特征摘要】
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表示字典...
【专利技术属性】
技术研发人员:俞东进,俞海华,陈信,范旭麟,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。