Highliner:通过基于自然语言处理(NLP)的指令级检测技术提升C++内联函数的二进制分析效果
《ACM Transactions on Privacy and Security》:Highliner: Enhancing Binary Analysis through NLP-Based Instruction-Level Detection of C++ Inline Functions
【字体:
大
中
小
】
时间:2025年11月07日
来源:ACM Transactions on Privacy and Security
编辑推荐:
本文提出Highliner框架,通过NLP的序列标注技术解决编译优化中内联函数的指令级识别问题。基于PalmTree预训练Transformer和双向LSTM架构,在680个开源项目的测试数据上,实现内联指令分类F1-score达0.94,函数边界识别准确率初始边界0.82、终边界0.83。研究揭示了编译优化对逆向工程的影响,并验证了基于深度学习的细粒度识别方法的有效性。
在现代计算机安全领域,逆向工程是一项至关重要的技术,它对于理解可执行文件的行为、发现潜在漏洞以及进行恶意软件分析具有深远的意义。然而,编译器优化技术,特别是函数内联(function inlining),对逆向工程和二进制分析构成了显著的挑战。函数内联是一种常见的编译优化手段,它通过将函数调用替换为被调用函数的整个代码体,从而减少函数调用带来的执行开销,如栈操作和参数传递。这一过程导致函数边界变得模糊,使得传统的函数识别方法难以准确区分调用者与被调用者的代码部分,从而影响了后续的逆向分析过程。
现有的方法虽然在一定程度上能够识别内联函数,但大多数仅限于基本块(basic block)级别的识别,无法在指令层面精确判断哪些指令属于内联函数,哪些属于调用者函数。这种限制使得进一步的分析,如反编译和代码结构还原变得困难重重。因此,开发一种能够在指令层面识别内联函数的方法显得尤为重要。本文提出了一种名为Highliner的新方法,旨在解决这一问题。
Highliner采用了一种类似自然语言处理(NLP)中的序列标注技术,将内联函数的识别问题转化为对每条指令进行分类的任务。该方法首先构建了一个包含大量内联函数信息的标记数据集,利用DWARF调试信息作为标注依据,通过Angr等工具对二进制文件进行反汇编,提取出对应的内联代码块,并将这些代码块中的每条指令标记为“内联”或“非内联”。随后,Highliner使用预训练的PalmTree模型,该模型专门用于汇编语言的语义表示,能够生成具有丰富语义信息的指令嵌入(embeddings)。这些嵌入随后通过堆叠的双向长短期记忆网络(LSTM)进行处理,最终由全连接层和Sigmoid激活函数生成二进制分类结果。
在实验评估方面,Highliner在多个C++标准库类中表现优异,例如`std::vector`、`std::map`、`std::set`和`std::deque`。在这些类中,Highliner在内联指令识别任务中达到了0.94的F1分数,而在识别内联函数边界时,初始边界识别准确率为0.82,最终边界识别准确率为0.83。这些结果表明,Highliner在识别内联函数及其边界方面具有较强的性能。此外,Highliner在未见过的类别中也表现出良好的泛化能力,尽管某些类别的性能有所下降,但总体而言仍优于零模型(zero-rate classifier),即一个始终预测同一类别的模型。
尽管Highliner在多个方面展示了其优越性,但该方法仍存在一些局限性。例如,它依赖于现有的内联函数识别工具,这些工具的准确性可能影响Highliner的整体表现。此外,数据集中某些类别的样本数量不足,尤其是那些具有较多基本块的函数,这限制了模型在这些情况下的泛化能力。因此,未来的改进方向可能包括构建更全面的数据集,探索更复杂的模型架构以处理更长的序列,以及开发能够处理噪声标签和实现端到端内联识别的方法。
总的来说,Highliner为内联函数识别提供了一种新的解决方案,通过将问题转化为序列标注任务,利用预训练的汇编语言模型和深度学习技术,实现了在指令层面的准确识别。这一方法不仅提高了反编译的效率,还增强了对代码结构的理解,为逆向工程提供了有力的支持。随着更多数据和更先进的模型技术的应用,Highliner有望在未来的二进制分析和安全研究中发挥更大的作用。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号