BLens: Contrastive Captioning of Binary Functions using Ensemble Embedding

TL;DR

BLens通过对比学习生成二进制函数名称,F1分数提升至0.79。

cs.LG 🔴 高级 2024-09-12 5 次浏览
Tristan Benoit Yunru Wang Moritz Dannehl Johannes Kinder
对比学习 二进制分析 函数命名 多模态学习 机器学习

核心发现

方法论

BLens采用多模态学习,将二进制函数嵌入与名称表示对齐,通过对比学习生成函数名称。使用COMBO预训练阶段结合CLAP、PALMTREE和DEXTER嵌入,LORD解码器通过MLM任务进行微调。

关键结果

  • 在跨二进制设置中,BLens的F1分数达到0.79,相较于现有方法的0.70有显著提升。
  • 在跨项目设置中,BLens的F1分数为0.46,而现有方法仅为0.29,显示出更好的泛化能力。
  • 在严格设置中,BLens的F1分数为0.32,优于现有方法的0.19。

研究意义

BLens在二进制逆向工程领域提供了新的方法论,将图像字幕生成的进展应用于函数命名,显著提高了模型的泛化能力和准确性。这一方法解决了现有模型在跨项目应用中的局限性,推动了自动化逆向工程的发展。

技术贡献

BLens通过多模态学习和对比学习将二进制代码与文本对齐,提出了COMBO和LORD两个关键组件,显著提高了函数命名的精度和泛化能力。与现有方法相比,BLens在处理分布偏移时表现更为出色。

新颖性

BLens首次将图像字幕生成的对比学习方法应用于二进制函数命名,提出了新的多模态嵌入对齐方法,与传统的翻译类方法相比,提供了更细粒度的语义捕捉。

局限性

  • BLens在处理非常短的函数名称时可能不够精确,因其依赖于上下文信息。
  • 模型在极端分布偏移情况下的表现仍有待提高。

未来方向

未来研究可以探索更复杂的多模态对齐方法,进一步提高模型的泛化能力。此外,扩展数据集规模和多样性也可能带来性能提升。

AI 总览摘要

在二进制逆向工程中,函数名称的缺失是一个长期存在的问题,现有的机器学习方法在跨项目应用中表现不佳。BLens通过多模态学习和对比学习,将二进制代码与函数名称对齐,显著提高了命名精度。

BLens的核心技术包括COMBO预训练阶段和LORD解码器。COMBO结合了CLAP、PALMTREE和DEXTER嵌入,利用对比学习对齐二进制代码和文本。LORD解码器通过MLM任务微调,提高了函数名称生成的精度。

实验结果显示,BLens在多个设置中均优于现有方法,特别是在跨项目设置中表现突出。这一研究为自动化逆向工程提供了新的思路,尽管仍需解决一些局限性,但其潜在应用前景广阔。

深度分析

研究背景

二进制逆向工程是安全审计和恶意软件分析中的关键技术。传统方法依赖于手动标记函数名称,而机器学习方法则尝试自动化这一过程。然而,现有模型在跨项目应用中表现不佳,难以应对分布偏移。

核心问题

函数名称预测的核心问题在于如何在缺乏上下文信息的情况下,准确生成具有语义意义的名称。这一问题的难点在于二进制代码的复杂性和多样性,以及分布偏移带来的挑战。

核心创新

BLens的创新之处在于将图像字幕生成的对比学习方法应用于二进制函数命名。通过多模态学习,BLens能够更好地捕捉二进制代码与函数名称之间的语义关系,显著提高了模型的泛化能力。

方法详解

  • �� 使用COMBO预训练阶段结合多种嵌入方法
  • �� 通过对比学习对齐二进制代码和文本
  • �� 使用LORD解码器进行MLM任务微调
  • �� 采用灵活的自回归过程生成函数名称

实验设计

实验使用多个数据集进行评估,包括跨二进制和跨项目设置。基线方法包括现有的翻译类模型,评估指标为F1分数、RougeL、Bleu等。关键超参数包括嵌入维度和对比学习温度。

结果分析

BLens在跨二进制设置中F1分数达到0.79,在跨项目设置中达到0.46,均显著优于现有方法。严格设置下,BLens的F1分数为0.32,显示出更好的泛化能力。

应用场景

BLens可用于自动化逆向工程中的函数命名,适用于安全审计和恶意软件分析。其高精度和泛化能力使其在工业界具有广泛应用前景。

局限与展望

BLens在处理非常短的函数名称时可能不够精确,模型在极端分布偏移情况下的表现仍需改进。未来研究可探索更复杂的多模态对齐方法。

通俗解读 非专业人士也能看懂

想象你在厨房里做饭,BLens就像一个聪明的助手,可以根据食材和步骤自动给菜品命名。它通过对比学习,将食材(代码)与菜名(函数名称)对齐,确保每道菜都有一个准确的名字。即使是不同风格的菜系,它也能识别出相似的味道(语义),给出合适的名称。

简单解释 像给14岁少年讲一样

嘿,小伙伴!想象你在玩一个游戏,BLens就像一个超级智能的NPC,能够根据你的操作自动给出技能名称。它通过学习不同的技能组合,确保每个技能都有一个酷炫的名字。即使是你从未见过的技能,它也能快速识别并命名,是不是很厉害?

术语表

BLens

一种通过对比学习生成二进制函数名称的模型。

用于自动化逆向工程中的函数命名。

对比学习

一种通过比较不同输入之间相似性来学习表示的方法。

用于对齐二进制代码和函数名称。

多模态学习

结合多种数据模式(如图像和文本)进行学习的方法。

用于将二进制代码与文本对齐。

COMBO

BLens中的预训练阶段,结合多种嵌入方法。

用于生成函数名称的初始嵌入。

LORD

BLens中的解码器,通过MLM任务微调。

用于提高函数名称生成的精度。

开放问题 这项研究留下的未解疑问

  • 1 如何在极端分布偏移情况下提高模型的泛化能力?现有方法在此类场景中表现不佳。
  • 2 如何处理非常短的函数名称?现有模型在此类情况下可能不够精确。

应用场景

近期应用

安全审计

BLens可用于自动化安全审计中的函数命名,提高效率和准确性。

远期愿景

恶意软件分析

通过提高函数命名的精度,BLens可帮助识别和分析复杂的恶意软件。

原文摘要

Function names can greatly aid human reverse engineers, which has spurred the development of machine learning-based approaches to predicting function names in stripped binaries. Much current work in this area now uses transformers, applying a metaphor of machine translation from code to function names. Still, function naming models face challenges in generalizing to projects unrelated to the training set. In this paper, we take a completely new approach by transferring advances in automated image captioning to the domain of binary reverse engineering, such that different parts of a binary function can be associated with parts of its name. We propose BLens, which combines multiple binary function embeddings into a new ensemble representation, aligns it with the name representation latent space via a contrastive learning approach, and generates function names with a transformer architecture tailored for function names. Our experiments demonstrate that BLens significantly outperforms the state of the art. In the usual setting of splitting per binary, we achieve an $F_1$ score of 0.79 compared to 0.70. In the cross-project setting, which emphasizes generalizability, we achieve an $F_1$ score of 0.46 compared to 0.29. Finally, in an experimental setting reducing shared components across projects, we achieve an $F_1$ score of $0.32$ compared to $0.19$.

cs.LG cs.CR