arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2108.06363cs.SEcs.PL
收藏

用学习的变量名和类型扩充反编译器输出

Augmenting Decompiler Output with Learned Variable Names and Types

Qibin Chen, Jeremy Lacomis, Edward J. Schwartz, Claire Le Goues, Graham Neubig, Bogdan Vasilescu

摘要:

反编译器是安全专业人员用于对在野外发现的二进制文件进行逆向工程的一个常用工具。反编译器尝试反向编译,将二进制文件转换为更高级的语言,如C。高级语言通过提供有用的抽象(如循环、类型化变量和注释)来简化对程序的推理,但这些抽象在编译过程中会丢失。反编译器能够确定性地重构代码的结构属性,但是注释、变量名和自定义变量类型在技术上是不可能恢复的。在本文中,我们提出了DIRTY(DecompIled variable ReTYper),一种新的技术,用于提高反编译器输出的质量,自动生成有意义的变量名称和类型。对从GitHub挖掘的C代码的新数据集的实证评估表明,DIRTY的性能远远优于以前的工作方法,66.4%的时间恢复了开发人员编写的原始名称,75.8%的时间恢复了原始类型。

英文摘要:

A common tool used by security professionals for reverse-engineering binaries found in the wild is the decompiler. A decompiler attempts to reverse compilation, transforming a binary to a higher-level language such as C. High-level languages ease reasoning about programs by providing useful abstractions such as loops, typed variables, and comments, but these abstractions are lost during compilation. Decompilers are able to deterministically reconstruct structural properties of code, but comments, variable names, and custom variable types are technically impossible to recover. In this paper we present DIRTY (DecompIled variable ReTYper), a novel technique for improving the quality of decompiler output that automatically generates meaningful variable names and types. Empirical evaluation on a novel dataset of C code mined from GitHub shows that DIRTY outperforms prior work approaches by a sizable margin, recovering the original names written by developers 66.4% of the time and the original types 75.8% of the time.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑