编译与反编译技术实战
上QQ阅读APP看书,第一时间看更新

第2章
编译器实践概述

人与计算机之间的交流也是通过语言进行的,但人类能理解的语言与机器可以理解的语言是不同的,中间需要翻译,因此,相应的编译器诞生了。编译技术所讨论的问题就是如何把符合人类思维方式的意愿(即源程序)翻译成计算机能够理解和执行的形式(即目标程序),而实现从源程序到目标程序转换的程序被称为编译程序或编译器。最早的编译器是20世纪50年代后期的Fortran编译器,该编译器也为后续高级语言和编译器的涌现奠定了基础。与编译技术相反,反编译技术所讨论的问题就是如何把计算机能够理解和执行的形式(目标程序)翻译成符合人类便于理解的形式(源程序或流程图),实现从目标程序到便于人类理解的系列文档的转换程序被称为反编译程序或反编译器。反编译技术起源于20世纪60年代,虽然在时间上只比编译技术晚10年左右,但反编译技术的成熟度却远不如编译技术。半个世纪以来,也涌现了不少实验性的反编译器,如Dcc、Boomerang和IDA的反编译插件Hex_rays等。但这些反编译器都有这样或那样的缺陷,还不能像编译器那样强健。

本章仅对编译器实践方面的知识进行简要阐述,反编译实践方面的概要介绍将在后续章节给出。