Page 282 - 《软件学报》2026年第4期
P. 282
凌祥 等: RMDroid: 基于多模态融合学习的安卓恶意软件鲁棒检测 1723
为每一个节点初始化一个特征向量. 如表 2 所示, 本文从 Dalvik 指令的操作码和操作数两方面统计控制流图中每
{ }
cfg (0) i=n z cfg (0)
个节点的数值统计特征, 最终得到向量化之后的控制流图特征 x z = {h } i=0 ,E z , 其中 h v i 表示控制流图中节点 v i
v i
(0) i=n z
的初始化特征向量, n z cfg 表示控制流图中节点的总数量, {h } cfg 表示控制流图中所有节点初始化特征向量的集合,
v i i=0
E z 则表示控制流图中表示节点邻居关系的边集.
表 2 控制流图中每个节点的初始化特征
种类 基于操作码的节点特征 特征描述
move 数据操作指令总数量
ret 返回或终止指令总数量
monitor 锁指令总数量
inst 类实例操作指令总数量
array 数组操作指令总数量
jmp 跳转指令总数量
操作码特征
comp 比较指令总数量
field 字段操作总数量
call 方法调用指令总数量
trans 数据转换指令总数量
arith 数据运算指令总数量
logic 逻辑运算指令总数量
string 字符串常量总数量
操作数特征
const 数字常量总数量
2.3 基于深度学习模型的多模态特征学习
api
z 的多模态初始化特征信息 img x z 、控制
在提取到待测安卓软件 (灰度图模态特征 x z 、API 调用序列模态特征
x z ) 的基础上, 为了充分地学习待测安卓软件 中每一种模态特征的深层语义信息, 本文利用深度
cfg
流图模态特征 z
{ img api cfg } img api cfg
⃗
⃗
⃗
学习模型来学习相应多模态特征向量集 H z = h z ,h z ,h z , 其中 ⃗ h z 、 ⃗ h z 和 ⃗ h z 分别代表所学习得到的灰度图模
态特征向量、API 调用序列模态特征向量和控制流图模态特征向量. 下面将分别介绍利用深度学习模型学习灰度
图、API 调用序列和控制流图这 3 种模态特征向量的具体实现方法.
2.3.1 基于卷积神经网络的灰度图特征学习方法
img
为了充分地学习待测安卓软件 z 在灰度图模态 x z 上的深层语义信息, 本文采用图像识别领域最常用且最经
img
典的深度残差网络 ResNet 来学习相应的灰度图特征向量 ⃗ h z . 深度残差网络 ResNet 是由微软研究院提出的一种
基于卷积神经网络的残差神经网络架构, 不仅通过增加深度学习网络深度来提高准确性, 而且可以缓解深度神经
网络中增加网络深度带来的梯度消失和梯度爆炸问题, 在多项计算机视觉竞赛任务中取得优异的成绩 [62] .
此外, 安卓软件的代码规模会影响所提取灰度图的尺寸, 因此, 为了避免灰度图尺寸过大而导致的训练效率下
降以及尺寸过小导致特征信息不足的问题, 如公式 (1) 所示, 本文首先利用 ZeroPS 函数将待测安卓软件 的灰度
z
img 512×512
图模态特征 x z 进行标准化补零和归一化处理, 并将最大维度设置为 512 (即 max = 512), 从而得到维度为 R
img
的标准灰度图形式 ¯ x z .
img
¯ x img = ZeroPS(x ;max = 512) ∈ R 512×512 (1)
z z
img
⃗ img = ResNet34(¯ x ;c = 1,odim = d) ∈ R d (2)
h
z z
接着, 如公式 (2) 所示, 进一步将标准灰度图 ¯ x z img 输入到相应的 ResNet34 网络中, 从而能够学习得到最终的灰
⃗ h z . 值得注意的是, 由于所提取的是灰度图而非彩色图, 因此将 网络中卷积层的通道数
img
度图特征向量 ResNet34
设置为 1 (即设置 c = 1), 并进一步修改 ResNet34 网络中最后一层全连接层的输出维度为 d (即设置 odim = d), 从
⃗ img d
而使得学习得到的灰度图特征向量 h z 的维度为 R .

