作者:Xin Jin, Kexin Pei, Jun Yeon Won, Zhiqiang Lin
单位:The Ohio State University, Columbia University
出处:CCS 2022
原文:https://dl.acm.org/doi/pdf/10.1145/3548606.3560612
Contributor: FRH
笔记:https://jbox.sjtu.edu.cn/l/h14FR3
预测被去除符号信息的二进制文件(stripped binary)中的函数名对许多具体的安全应用都有帮助,包括恶意软件分析、漏洞识别、二进制代码加固等。作为具体的例子,Mandiant等安全公司投入大量资源开发各种逆向工具用于符号恢复、函数标注、二进制代码匹配等,从而帮助开发人员更高效地分析恶意软件的功能,并进一步追溯其来源。然而,构建有意义的函数名是非常有挑战的任务。函数名提供了函数行为的高层次总结,预测函数名需要理解函数的具体操作,并将其组合、映射到自然语言中。然而,不同的编译器方言(idioms)、优化、混淆以及不同操作系统的ABIs、不同架构的硬件规格导致相同语义的代码存在多样的二进制表示,为预测带来困难。这篇文章中,作者提出SYMLM(Symbol name prediction and binary Language Modeling)这一框架,利用神经网络技术,通过对调用上下文和指令的联合建模来理解函数语义,最终实现预测。作者在27个流行开源项目(1,431,169个函数)上针对4种不同的架构(x64、x86、ARM和MIPS)、4种优化(O0-O3)、4种混淆进行实验。SYMLM相较于SOTA工具在精度、召回率和F1-score上分别有15.4%、59.6%和35.0%的提升。同时,作者的消融实验证明其框架各个组件的必要性。最后,作者进行案例分析,进一步证明了SYMLM可以用于分析实际的固件。