1.一种基于映射关系的对抗性Android恶意软件检测方法,其特征在于,包括以下步骤:步骤1:编写python文件,对Android软件进行特征提取:步骤1‑1:判断Android软件的加固情况,如果文件被加固过,则利用脱壳和重打包工具对Android软件进行脱壳重打包;
步骤1‑2:利用解压工具对Android软件进行解压,保存解压后的文件;
步骤1‑3:查找解压后的文件中后缀为.dex的文件,使用baksmali工具将.dex文件转换为.smali文件,并保存;
步骤1‑4:遍历保存的.smali文件,搜集Android软件的使用的API信息;
步骤1‑5:查找解压后的文件中名为AndroidManifest.xml的文件,使用aapt工具将AndroidManifest.xml文件转换为AndroidManifest.txt文件,并保存;
步骤1‑6:根据AndroidManifest.txt文件,获取Android软件中申明的权限和硬件信息;
步骤2:编写python文件,对Android软件特征进行预处理:步骤2‑1:将从多个Android软件中获取到的API进行整理,根据API的危险级别和出现的频率建立敏感API库:D={d1,d2,...,dm};
步骤2‑2:将从多个Android软件中获取到的权限进行整理,根据权限的危险级别和出现的频率建立敏感权限库:P={p1,p2,...,pn};
步骤2‑3:根据权限控制相关API的机制,建立敏感权限和敏感API的映射关系库,权限控制相关API的机制为:A={(pi,dj)|pi∈P,dj∈D,pi控制dj};
步骤2‑4:将从多个Android软件中获取到的硬件进行整理,将所有出现过的硬件申请均加入硬件库;
步骤2‑5:将从Android软件中提取到的特征与映射关系库、硬件库进行对比,生成one‑hot编码,即将每个Android软件转换为二进制向量;
步骤2‑6:将步骤2‑5中的二进制向量每8位进行分割,转换为灰度图;
步骤3:对数据集进行选择与分割:
步骤3‑1:将从步骤2‑6中获得的灰度图按照标签类型分成normal_data,malware_data;
步骤3‑2:从normal_data、malware_data中分别进行随机抽取,用于构建训练集train_data、验证集validation_data、测试集test_data;
步骤4:搭建CNN模型进行训练:
步骤4‑1:搭建CNN,使用relu函数作为激活函数,采用adam优化器进行优化,最后使用softmax函数作为分类器;
步骤4‑2:分类精度的评价指标使用Accuracy与Error_rate表示:式中,P代表正例总数、N代表负例总数;TP表示真实类别为正例,预测类别为正例;TN表示真实类别为负例,预测类别为负例;FP表示真实类别为负例,预测类别为正例;FN表示真实类别为正例,预测类别为负例;
步骤4‑3:使用train_data对搭建的模型进行训练;
步骤4‑4:在训练过程中,使用validation_data对模型进行验证,并保存最佳模型:步骤5:加载最佳的训练模型,对test_data进行测试,对软件进行检测,并计算其精度。
2.如权利要求1所述的一种基于映射关系的对抗性Android恶意软件检测方法,其特征在于:步骤3‑1中的标签类型分为正常软件:0和恶意软件:1。
3.如权利要求1所述的一种基于映射关系的对抗性Android恶意软件检测方法,其特征在于:步骤3‑2中的训练集train_data、验证集validation_data、测试集test_data分别占normal_data、malware_data的70%、20%、10%。