A Taxonomy of C Decompiler Fidelity Issues
Usenix security 2024
Carnegie Mellon University
Intro
反编译是分析编译程序并恢复表现相同行为的源代码程序的过程,是计算机安全领域中的关键工具。它使安全从业者能够更快速地深入了解编译程序的行为,尤其在分析恶意软件和商业现成软件(COTS)等安全场景中,源代码可能不可用的情况下。通过将可执行文件转换为可读的类C代码,反编译使安全从业者能够更有效地理解和应对恶意软件等威胁[36]。例如,在ˇDurfina等人的研究中,分析人员使用反编译器分析Psyb0t蠕虫,这是一种感染路由器以构建僵尸网络的恶意软件。
分析和理解可执行代码的行为比分析源代码困难得多,因为在编译过程中会删除信息。高级编程语言包含有助于人类编写和理解代码的抽象和结构,如变量名、类型、注释和控制流结构[34],而可执行程序则没有这些。这些抽象对于可执行程序运行并不是必需的,因此它们被编译器丢弃、简化或优化,以减小可执行文件的大小并最大化执行速度。
----编译过程会丢弃非必需信息
这意味着当分析