摘要:安卓操作系统和恶意软件的持续进化导致现有检测方法的性能随时间大幅下降. 提出一种基于API聚类和调用图优化的安卓恶意软件检测方法DroidSA (droid slow aging). 首先, 在恶意软件检测之前进行API聚类, 生成代表API功能的聚类中心. 通过设计API句子概括API的名称、权限等重要特征并使用自然语言处理工具对API句子的语义信息进行挖掘, 获得更全面反映API语义相似性的嵌入向量, 使聚类结果更为准确. 然后, 为了确保提取到更能准确反映软件行为逻辑的API上下文信息, 采用调用图优化方法对从待检测软件中提取的函数调用图进行优化并得到优化后的调用图, 在删除图中难以识别的未知方法的同时保留API节点之间的连接性. 为了提高对安卓框架和恶意软件变化的适应性, DroidSA从优化后的调用图中提取函数调用对, 将调用对中的API抽象为API聚类时获得的聚类中心. 最后, 使用独热编码生成特征向量, 并从随机森林、支持向量机和K近邻算法中选择表现最好的分类器进行恶意软件检测. 实验结果表明, DroidSA的恶意软件检测平均F1值为96.7%; 在消除时间偏差的实验设置下, 经2012–2013年的软件样本集合训练后, DroidSA对2014–2018年的恶意软件样本的检测平均F1值达到82.6%. 与经典检测方法MaMaDroid和MalScan等相比, DroidSA始终能将各项检测指标稳定地维持在高水平且受到时间变化的影响较小, 能有效检测进化后的恶意软件.