Page 298 - 《软件学报》2025年第7期
P. 298
杨宏宇 等: 基于 API 聚类和调用图优化的安卓恶意软件检测 3219
中心, 将其他函数抽象为包, 生成聚类中心调用对. 调用对抽象将频繁变化的 API 抽象为 API 聚类中心, 使检测方
法适应安卓框架和恶意软件的变化.
(5) 特征嵌入: 首先使用独热编码对软件样本集的聚类中心调用对进行特征嵌入; 然后使用主成分分析 [29] 将高
维特征向量线性映射到低维空间, 生成软件样本集的特征向量集合.
(6) 分类器检测: 分类器检测包括样本集划分、训练和检测这 3 部分. 首先使用十折交叉验证法将特征向量集
合划分为训练集和测试集; 然后使用训练集训练 K 近邻 (k nearest neighbor, KNN)、支持向量机 (support vector
machine, SVM) [32] 和随机森林 (random forest, RF) [33] 这 3 种分类算法; 最后将测试集输入训练好的分类器进行恶意
软件检测, 选择检测平均 F1 值最高的分类算法作为最终检测结果.
6 实验及结果分析
在实验中, 从恶意软件检测的有效性方面对本文提出的 DroidSA 进行验证评测. 在有效性测试实验中, 首先验
证 DroidSA 能否实现恶意软件检测; 然后验证 DroidSA 能否有效检测观念迁移样本; 最后分别评估 API 聚类和调
用图优化对 DroidSA 检测性能的影响.
6.1 实验设置
实验中使用的软件样本集如表 3 所示, 该软件样本集包括 42 450 个恶意软件样本和 42 154 个良性软件样本,
时间跨度为 7 年. 恶意软件来源于 AndroZoo [34] 、VirusTotal [35] 和 AMD 软件样本集 [36] , 在 VirusTotal 中至少被 15
个反病毒引擎标记为恶意. 良性软件来源于 Google Play 商店 [37] , 通过 AndroZoo 下载, 被 VirusTotal 中所有反病毒
引擎标记为良性.
表 3 实验软件样本集
年份 良性软件 (B) 恶意软件 (M) M + B M / (M + B) (%) 平均大小 (MB)
2012 4 418 4 624 9 042 51.1 2.23
2013 6 488 6 519 13 007 50.1 2.65
2014 6 364 6 409 12 773 50.2 4.58
2015 6 506 6 494 13 000 50.0 5.08
2016 6 474 6 449 12 923 49.9 5.09
2017 5 348 5 388 10 736 50.2 7.79
2018 6 556 6 567 13 123 50.0 6.95
总计 42 154 42 450 84 604 50.2 4.96
在训练和测试过程中, 采用十折交叉验证法对 DroidSA 进行评估. 具体方法为: 将软件样本集分为 10 份, 其
中 9 份用于训练模型, 剩下一份用作测试进行模型评估, 重复 10 次直至每一份软件样本都经过测试评估. 最后,
对 10 次的测试结果取平均值, 得到评估结果. 采用精确度 (precision, Pre)、召回率 (recall, Rec)、F1 值 (F1-Measure)
和准确率 (accuracy, Acc) 指标衡量 DroidSA 的检测效果.
6.2 恶意软件检测
为验证本文 DroidSA 对恶意软件的检测能力, 采用 DroidSA、MalSan [12] 和 MaMaDroid [13] 这 3 种方法进行检
测对比实验. 对表 3 中 2012–2018 这 7 年软件样本分别进行十折交叉验证测试, 得到上述 3 种方法对恶意软件的
4 个检测性能指标, 实验结果如表 4 所示.
由表 4 可见, 在支持向量机、随机森林和 K 近邻 3 种分类算法中, DroidSA 使用随机森林时检测效果最好, 取
得 96.7% 的平均 F1 值, 与 MaMaDroid 和 MalScan 相比分别提升 4.3% 和 6.4%. DroidSA 的平均准确率为 96.7%,
与 MaMaDroid 和 MalScan 相比分别提升 4.3% 和 6.1%; 精确率为 98.5%, 与 MaMaDroid 和 MalScan 相比分别提
升 5.5% 和 5.6%; 召回率为 94.8%, 与 MaMaDroid 和 MalScan 相比分别提升 3.2% 和 6.2%.
由表 4 可见, MaMaDroid 的各项指标随时间推移缓慢提升, MalScan 在 2012–2014 年间精确率较高, 召回率较

