Page 289 - 《软件学报》2025年第8期
P. 289
3712 软件学报 2025 年第 36 卷第 8 期
种恶意软件分类工作 [14–19] , 并展现出优秀的性能. 基于图像转换的方法直接处理原始二进制文件, 不需要特定的专
业知识来提取特征, 并且有许多经过广泛验证的高性能图像分类算法可以迁移应用.
基于图像转换的方法存在很多缺点, 例如将二进制恶意样本转换为图像不可避免需要引入新的超参数 (例如
图像宽度), 这可能会在像素之间引入原本样本特征中不存在的空间相关性, 从而影响分类效果 [1] . 此外, 由于恶意
软件被整体转换为图像, 其中必然会包含许多冗余信息, 这会使分类器难以识别出与任务目标最相关的特征.
1.2 基于字节流分析技术的恶意软件分类
基于字节流分析的方法将恶意软件的二进制流视为序列信息, 并使用序列模型 (例如 NLP 中的学习模型) 对
其进行处理, 然后进行分类. Moskovitch 等人 [20] 提出基于文本分类技术的恶意软件分类方法. 通过对训练数据提
取 n-gram, 然后根据自定义的文档频率分数选择最佳的 5 500 个词作为特征, 然后使用学习模型进行分类. Jain 等
人 [21] 使用类别文档频率技术来减少特征空间大小并改进分析方法. Zhang 等人 [22] 利用信息增益来过滤 K 个 n-gram
作为特征, 但随着 n 值的增加其计算成本呈指数增长. Raff 等人 [9] 将整个二进制文件作为输入, 使用端到端的浅层
卷积神经网络模型进行恶意软件分类. 但由于其对内存的需求较大, 因此处理能力受到限制. Qiao 等人 [8] 将恶意样
本的二进制流按字节取值, 转换为 256 个单词并结合 Word2Vec 模型 [23] 将程序嵌入为词嵌入矩阵, 然后使用多层
感知器 (MLP) 进行恶意软件分类.
基于字节流序列的分析方法在一定程度上考虑了程序的上下文信息, 但由于程序并不总是顺序执行而是不断
跳转的, 因此二进制流的上下文信息并不总是相关的. 此外基于字节流分析的方法还需要消耗大量系统资源, 因为
恶意软件字节序列可能是非常庞大且冗余的 [23] , 这阻碍了恶意软件关键特征提取和复杂环境的分析稳定性.
1.3 基于反汇编特征的恶意软件分类
基于反汇编的方法通过对恶意软件二进制文件进行反汇编分析, 从静态反汇编结果中人工提取特征信息然后
用于恶意软件家族分类. Ahmadi 等人 [24] 开发了一个多模态恶意软件分类系统, 使用从 50 万个恶意软件样本中提
取的 API 调用频率进行分类. SimHash [25] 和 MinHash [26] 哈希算法也被尝试用于将操作码序列投影转换为向量, 然
后将其转化为图像进行分类. Awad 等人 [27] 将每个反汇编文件的操作码序列视为一个文档, 并使用 Word2Vec 生
成文档的向量表示, 然后使用词移距离 (WMD) [28] 和 K 近邻算法对表征恶意样本的文档进行分类. 然而, 这些方法
缺乏对程序行为信息的关注, 缺少对程序语义的挖掘. Kinable 等人 [6] 使用图匹配技术计算两个程序的函数调用图
(FCG) 之间的相似度得分, 并将其作为恶意软件分类的依据. 后来, Kong 等人 [7] 将恶意软件抽象为属性函数调用
图 (AFCG), 以更细粒度的方式进行相似距离匹配. 然而, 这些方法都是计算密集型的, 而且泛化能力不够强. Hassen
[5]
等人 采用 MinHash 算法对相似恶意软件的函数调用图进行聚类, 然后将图特征转换为向量并使用深度学习算法进
行分类. 类似地, Yan 等人 对从反汇编文件中提取的 AFCG 进行特征转换然后利用深度图卷积神经网络 (DGCNN) [30]
[29]
进行分类, 并表现出良好的性能.
然而, 基于反汇编分析的方法需要专业领域知识和人工指导, 如汇编语言和反汇编分析方法. 此外, 基于反汇
编的方法分类性能很大程度上受到从反汇编结果中人工选择的特征向量的影响, 因此很难发现潜在的程序上下文
语义信息.
2 背景知识和威胁模型
本文的主要目标是通过对恶意软件二进制字节流进行反汇编分析, 结合自然语言处理技术进行深层程序上下
文语义理解和任务相关的有效特征提取来实现高准确率和鲁棒的恶意软件分类, 优化分类方法在概念漂移场景下
的表现. 所提方法用到的模型和算法理论主要基于 BERT、瓶颈自编码器和几何中位数子空间. 下面就相关知识
和威胁模型予以介绍.
2.1 BERT (Transformer 的双向编码器表示)
BERT 是一种用于自然语言处理 (NLP) 的深度学习模型. 它是一种基于转换器 (Transformer) 架构的预训练文

