一种基于神经网络的程序反编译器(2019)

2020-09-01 16:06:40

下载PDF摘要:二进制可执行文件的逆向工程是计算机安全领域的一个关键问题。一方面,恶意方可能会从软件产品中找回可解释的源代码,以获取商业优势。另一方面,二进制反编译可用于代码漏洞分析和恶意软件检测。然而,高效的二进制反编译是具有挑战性的。传统的反编译器有以下主要局限性:(I)它们只适用于特定的源-目标语言程序,因此为新的语言任务带来了不必要的开发成本;(Ii)它们输出的高级代码不能有效地保持输入二进制代码的正确功能;(Iii)它们的输出程序没有捕获输入的语义,反向程序很难解释。针对上述问题,我们提出了第一个端到端的基于神经网络的代码反编译框架Coda。Coda将反编译任务分解为两个关键阶段:第一,Coda采用指令类型感知编码器和ATree解码器在代码草图生成阶段生成具有注意力反馈的抽象语法树(AST)。其次,Coda然后使用由集成神经误差预测器引导的迭代纠错机来更新代码草图。通过找到一个很好的近似候选者,然后将其修正为完美,与基线方法相比,Coda实现了卓越的性能。我们通过在各种基准上进行广泛的实验来评估尾巴的性能。评估结果表明,Coda在不可见的二进制样本上的程序恢复准确率平均为82,而现有的反编译器的准确率为0。此外,CODA在关注程序准确率方面比顺序到序列模型高出70%.