Page 297 - 《软件学报》2025年第7期
P. 297
3218 软件学报 2025 年第 36 卷第 7 期
如图 3(a) 所示, 未知函数节点在函数调用图中占大部分, 严重影响了 API 上下文信息的提取. 调用图优化删
除了图中所有难以识别的未知函数节点, 同时保留 API 节点之间的连接性, 使检测方法能提取到更多更准确反映
软件行为逻辑的 API 上下文信息.
恶意软件 de.android_telefonie.super.appmanager(md5:79a58748d8e346af229c60a6ed529ab8) 的函数调用图和优
化后的调用图如图 4 所示.
(a) 函数调用图 (b) 优化后的调用图
图 4 恶意软件 de.android_telefonie.super.appmanager 的调用图优化
函数调用图中大量 API 节点的前驱节点是未知函数节点, 即软件的大部分 API 由未知函数调用. 这说明软件
中实现系统功能的敏感 API, 其局部上下文信息大多都是检测过程中难以识别的未知方法, 这给提取软件的行为
特征造成严重困难. 本文提出的调用图优化方法在保留图中 API 节点连接性的同时, 删除图中所有的未知函数节
点. 优化后的调用图增加了许多反映软件行为逻辑的 API 调用对, 这些新增的 API 调用对大多与线程活动相关,
而恶意软件常常伪装成良性软件, 通过多线程活动实施恶意行为. 这说明调用图优化能使检测方法提取到更多用
于区分软件类别的关键特征.
5 恶意软件检测
本文提出一种能有效检测观念迁移样本的安卓恶意软件检测方法. 该方法属于静态检测方法, 使用软件的
API 上下文信息作为特征. 恶意软件检测过程如图 5 所示.
调用图提取 调用对提取 特征嵌入
独热编码 RF
SVM
主成分分析
KNN
调用图优化 调用图抽象 分类器检测
图 5 恶意软件检测过程
恶意软件检测的具体过程如下.
(1) 调用图提取: 使用静态分析工具 FlowDroid [31] 从软件样本集的 APK 文件中提取函数调用图.
(2) 调用图优化: 对函数调用图进行优化, 删除图中无法识别的未知函数节点并保留 API 节点之间的连接性,
生成优化后的函数调用图.
(3) 调用对提取: 从优化后的调用图中提取函数调用对, 调用对包括调用函数和被调用函数.
(4) 调用对抽象: 对函数调用对中的节点进行抽象, 将调用对中的 API 抽象为 API 聚类部分获得的 API 聚类

