NeuDep:基于神经网络的二进制内存依赖分析
密码学与安全
2022-10-07 v1 机器学习
编程语言
软件工程
摘要
判定多条指令是否可访问同一内存位置是二进制分析中的一项关键任务。由于静态计算精确的别名信息在理论上不可判定,该问题颇具挑战性。在二进制层面,由于存在编译器优化且缺少符号与类型,问题进一步加剧。现有方法或因保守分析产生大量虚假依赖,或因难以扩展到复杂二进制而表现不佳。我们提出一种基于机器学习的新方法来预测内存依赖,其利用模型所学习的关于二进制程序如何执行的先验知识。我们的方法具有如下特点:(i) 自监督过程,预训练神经网络以推理二进制代码及其经内存地址的动态值流,随后 (ii) 监督微调以静态推断内存依赖。为便于高效学习,我们设计了专用神经架构,以特定模块编码异构输入(即来自迹的代码、数据值与内存地址)并通过组合学习策略融合它们。我们在NeuDep中实现了该方法,并在由2种编译器、4种优化级别和4种混淆处理编译的41个流行软件项目上进行了评估。我们证明NeuDep比当前最先进水平更精确(1.5倍)且更快速(3.5倍)。针对安全关键的逆向工程任务的大量探查研究表明,NeuDep能理解内存访问模式、学习函数签名并能够匹配间接调用。所有这些任务均辅助或受益于内存依赖推断。值得注意的是,NeuDep在这些任务上也优于当前最先进水平。
引用
@article{arxiv.2210.02853,
title = {NeuDep: Neural Binary Memory Dependence Analysis},
author = {Kexin Pei and Dongdong She and Michael Wang and Scott Geng and Zhou Xuan and Yaniv David and Junfeng Yang and Suman Jana and Baishakhi Ray},
journal= {arXiv preprint arXiv:2210.02853},
year = {2022}
}
备注
ESEC/FSE 2022