前 言
“编译技术”是从事软件开发和信息安全相关工作的技术人员必须掌握的基础性技术,也是高等院校计算机科学与技术和软件专业的一门必修专业课,这是理论与实践结合非常强的领域,对提升开发人员的技术水平和大学生科学思维的养成、解决实际问题能力具有重要作用。“反编译技术”则是近几年发展起来的新兴技术,许多计算机软件或信息安全从业者非常关心该技术的发展,但目前这方面的书籍较少,与“编译技术”结合起来讲解的书也很少,从实践角度来剖析的更是少见。本书就是在这种需求以及作者在这两方面的科研实践的驱动下诞生的,目的是为计算机软件和信息安全从业者提供编译与反编译技术方面的知识和实战技巧。
本书的编写得到了解放军信息工程大学和机械工业出版社的大力支持,在此表示诚挚的谢意。本书中的一些材料来自本书主编主持的国家自然科学基金(项目编号:61472447)、国家“863”(项目编号:2006AA01Z408)、国家重大专项某子课题等项目的研究成果,在此对这些课题的支持表示衷心的感谢!
本书是机械工业出版社2016年4月出版的《编译与反编译技术》(ISBN 978-7-111-53412-9)一书的姊妹篇,配合学习和使用效果更佳。在本书中,作者着力阐述编译与反编译技术及实战方面的相关知识和实战技巧,力图使用通用的语言讲述抽象的原理、技术和实战技能,但限于作者水平,书中难免有错误与欠妥之处,恳请读者批评指正。
作者
2017年3月
目 录
第1章 实践的环境与工具
1.1 实践环境概述
1.2 词法分析生成器LEX
1.3 语法分析生成器YACC
1.4 编译器GCC
1.5 编译器LLVM
1.6 反汇编工具IDA
1.7 反汇编工具OllyICE
1.8 仿真与分析工具QEMU
1.9 动态分析工具TEMU
1.10 本章小结
第2章 编译器实践概述
2.1 编译器、解释器及其工作方式
2.2 编译器的结构
2.3 编译器的设计与实现概述
2.3.1 利用Flex和Bison实现词法和语法分析
2.3.2 利用LLVM实现代码优化和代码生成
2.4 本章小结
第3章 词法分析器的设计与实现
3.1 词法分析器的设计
3.1.1 词法分析器的功能
3.1.2 输入及其处理
3.2 词法分析器的手工实现
3.3 词法分析器的LEX实现
3.3.1 LEX源文件结构
3.3.2 LEX系统中的正规式
3.3.3 LEX 的使用方式
3.3.4 LEX 源文件示例——C语言词法分析器
3.4 本章小结