[论文解读] XFL: Naming Functions in Binaries with Extreme Multi-label Learning
本文提出 XFL,一种极端多标签学习框架,通过利用 Dexter——一种结合静态分析、调用图上下文和全局二进制特征的新颖函数嵌入——来预测剥离二进制文件中的函数名标记。XFL 在包含 10,047 个二进制文件的 Debian 数据集上实现了 83.5% 的精确率,通过在标记级别进行建模,有效缓解了罕见函数名的问题,显著优于先前方法。
Reverse engineers benefit from the presence of identifiers such as function names in a binary, but usually these are removed for release. Training a machine learning model to predict function names automatically is promising but fundamentally hard: unlike words in natural language, most function names occur only once. In this paper, we address this problem by introducing eXtreme Function Labeling (XFL), an extreme multi-label learning approach to selecting appropriate labels for binary functions. XFL splits function names into tokens, treating each as an informative label akin to the problem of tagging texts in natural language. We relate the semantics of binary code to labels through DEXTER, a novel function embedding that combines static analysis-based features with local context from the call graph and global context from the entire binary. We demonstrate that XFL/DEXTER outperforms the state of the art in function labeling on a dataset of 10,047 binaries from the Debian project, achieving a precision of 83.5%. We also study combinations of XFL with alternative binary embeddings from the literature and show that DEXTER consistently performs best for this task. As a result, we demonstrate that binary function labeling can be effectively phrased in terms of multi-label learning, and that binary function embeddings benefit from including explicit semantic features.
研究动机与目标
- 解决在缺乏源代码和调试信息的情况下,预测剥离二进制文件中有意义函数名的挑战。
- 克服传统函数命名模型在罕见或未见函数名上失败的根本局限,这些失败源于类别不平衡和标签空间无界的问题。
- 通过将函数名分解为可重用的描述性标记,实现对从未见过的函数的准确命名预测。
- 开发一种鲁棒的函数嵌入(Dexter),整合静态分析、本地调用图上下文和全局二进制结构,以提升语义表征能力。
- 证明使用受控标签词汇的多标签学习在二进制函数命名任务中优于整体名称分类。
提出的方法
- 将函数名拆分为独立标记(例如,'make_smooth_colormap' → {make, smooth, color, map}),将问题转化为多标签分类。
- 提出 Dexter,一种函数嵌入,结合低层级静态分析特征(如指令模式、寄存器使用)与本地调用图上下文及全局二进制级统计信息。
- 使用 Dexter 嵌入训练极端多标签学习(XML)模型,以预测每个函数的相关标签标记集合。
- 采用半监督学习策略处理标签的长尾分布,即使在标签高度稀疏的情况下,也能确保每个标签有足够的训练样本。
- 在来自 Debian 的 10,047 个剥离二进制文件数据集上评估模型,以精确率为标签预测的主要指标。
- 将 Dexter 与现有二进制代码嵌入(如 Asm2Vec、SAFE、PalmTree)进行对比,证明其在函数名标记预测中始终具有优越性。
实验结果
研究问题
- RQ1将函数名分解为标记是否能缓解二进制函数命名中的类别不平衡问题,并提升模型泛化能力?
- RQ2结合静态分析、本地调用上下文和全局二进制结构的函数嵌入,在多大程度上能提升函数名预测性能?
- RQ3在名称分布高度不平衡的二进制文件中,极端多标签学习是否优于传统的单标签分类方法用于函数命名?
- RQ4与现有二进制代码嵌入相比,所提出的 Dexter 嵌入在函数名标记预测的预测性能方面表现如何?
- RQ5该模型能否泛化到预测训练集中未出现过的函数的函数名,特别是具有独特或罕见名称的函数?
主要发现
- XFL 在 10,047 个二进制文件的 Debian 数据集上实现了 83.5% 的精确率,显著优于当前最先进的函数名预测方法。
- 标记化后的标签分布相比整体函数名分类更加均衡,有效缓解了长尾问题。
- Dexter 嵌入在预测函数名标记方面,始终优于所有评估的基线二进制代码嵌入(如 Asm2Vec、SAFE、PalmTree)。
- Dexter 中将静态分析特征与本地和全局上下文相结合,生成的函数表征比仅基于语法或原始指令的嵌入更具语义意义。
- XFL 能够成功预测训练集中未出现的函数的函数名标记,证明了其对未见函数名的泛化能力。
- 只要语义和语法特征得到充分保留,该模型对常见混淆技术(改变函数结构)仍保持鲁棒性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。