Page 288 - 《软件学报》2026年第4期
P. 288
凌祥 等: RMDroid: 基于多模态融合学习的安卓恶意软件鲁棒检测 1729
3.1.4 对抗性恶意软件生成方法
为了充分地评估鲁棒性, 本文采用当前最先进的 3 种对抗攻击生成相应的对抗性安卓恶意软件.
(1) COPYCAT [73] 是当前最具代表性的针对 Windows PE 恶意软件中图像特征的对抗攻击方法. COPYCAT 首
先提取 Windows PE 恶意软件的图像特征, 然后利用图像领域的对抗攻击方法生成对抗图像样本, 接着将对抗图
像样本附加到原始图像样本末尾, 再逐字节还原为二进制文件从而生成相应的对抗性 PE 恶意软件. 由于 COPYCAT
原本针对的是 Windows PE 恶意软件, 因此本文进一步将 COPYCAT 适配到可以攻击安卓恶意软件, 并采用图像
领域当前最先进的 C&W [38] 作为核心的对抗攻击方法.
(2) GADGET [74] 是一种专门针对恶意软件中 API 调用序列特征而设计的对抗攻击方法, 该攻击方法在梯度的
引导下主要通过添加额外的 API 调用来生成相应的对抗性恶意软件.
(3) HRAT [17] 是 2021 年发表于 ACM CCS 上的一种专门针对恶意软件中 API 调用图特征而设计的对抗攻击
方法, 也是当前针对安卓恶意软件最先进的对抗攻击方法. 具体而言, HRAT 设计了 4 种 (插入节点、删除节点、
添加边、重新布线) 针对 API 调用图的操作方式, 并采用强化学习作为启发式优化算法, 从而生成相应的对抗性
安卓恶意软件.
3.1.5 实验环境及参数设置
在实验环境方面, 本文中所有实验均在一台使用 Ubuntu 20.04.1 LTS 操作系统的服务器上进行, 处理器为
Intel(R) Xeon(R) Gold 5218R, 内存为 64 GB, GPU 为 4 张 NVIDIA GeForce RTX 3090. 本文中代码实现所用的编
程语言为 Python 3.8.16, 其中所有神经网络的代码实现均采用 PyTorch 2.0.1 和 PyTorch_Geometric 2.3.1 深度学习
框架. 特别地, 本文利用 Androguard 逆向工具 [75] 对所有的实验数据集即安卓软件进行预处理, 从而得到相应的
API 调用序列信息和控制流图信息.
对于 IMCFN 而言, 在数据预处理阶段, 本文将安卓软件的 Dalvik 字节码以 8 bit 为单位连续编码为 0–255 之
间灰度值, 并根据表 4 中的规则确定灰度图的宽度, 将灰度值序列按照固定宽度排列为二维灰度矩阵, 并在不满足
宽度的最后一行填充 0 构造完整的灰度图像. 接着使用预训练的 VGG16 图像分类模型提取输入图像的特征, 然
后通过 1 层卷积层和 3 层全连接层逐层提取特征进行最终的恶意性预测. 本文使用初始学习率 1E–4、权重衰减
系数 1E–4 的 Adam 优化器训练 IMCFN, 训练 epoch 为 20.
表 4 灰度图像宽度与 Dalvik 字节码文件大小的对应关系
Dalvik文件大小 (KB) 图像宽度 (pixel)
<5 64
5–10 128
10–20 256
20–50 512
50–100 1 024
>100 2 048
对于 MaMaDroid 而言, 本文遵循原文的方法流程来提取安卓软件的调用图, 并从家族 (family) 和包 (package)
两个粒度抽象调用关系, 构建 family 和 package 粒度的特征, 使用决策树数量为 512 的随机森林进行拟合学习, 并
在实验中评估对比不同粒度特征下 MaMaDroid 的有效性. 对于 MalScan 而言, 本文同样遵循原文的方法, 首先提
取安卓软件的调用图特征, 然后计算调用图的 Harmonic 中心性, 最后基于预定义的敏感 API 列表获取敏感 API
的中心性分数, 所有敏感 API 的中心性分数构成安卓软件的特征向量. 模型选择方面, 本文首先使用少量训练集和
验证集对 MalScan 所使用的 KNN-1、KNN-3 和随机森林这 3 种模型进行预实验评估模型的性能, 最终本文选择
效果最稳定、性能最高的随机森林, 决策树数量设置为 100.
对于本文的 RMDroid 而言, 在参数设置方面, 默认情况下, 本文所实现及评估的各个子模态 (灰度图、API 调
d 均设置成 d = 300, 并且训练周期 epoch 设为 20, mini-batch
用序列和控制流图) 所学习的特征向量的维度 300, 即
设为 16, 优化算法选择 AdamW 优化器, 默认初始学习率为 1E–5, 默认权重衰减系数为 0.01. 其中, RMDroid 使用

