更新时间:2019-01-04 20:52:56
封面
版权信息
前言
第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 本章小结
第4章 语法分析器的设计与实现
4.1 自上而下的语法分析器的设计与实现
4.2 自下而上的语法分析器的设计与实现
4.3 语法分析器的生成器
4.3.1 YACC的源文件结构
4.3.2 YACC和LEX的接口
4.3.3 YACC源程序示例——简单的台式计算器
4.4 本章小结
第5章 GCC编译器分析与实践
5.1 GCC编译器概述
5.2 GCC编译器的系统结构
5.3 GCC编译器的分析程序
5.4 GCC编译器的中间语言及其生成
5.5 GCC编译器的优化
5.6 GCC编译器的目标代码生成
5.7 本章小结
第6章 LLVM编译器分析与实践
6.1 LLVM编译器概述
6.1.1 起源
6.1.2 相关项目
6.2 经典编译器概述
6.2.1 经典编译器设计的启示
6.2.2 现有编译器的实现
6.3 LLVM的设计
6.3.1 LLVM中间表示
6.3.2 LLVM库文件
6.4 LLVM前端
6.4.1 前端库文件
6.4.2 词法分析
6.4.3 语法分析
6.4.4 语义分析
6.4.5 LLVM IR代码生成
6.5 LLVM的中间表示
6.5.1 LLVM IR语法
6.5.2 LLVM IR优化实例
6.6 LLVM后端
6.6.1 后端库文件
6.6.2 LLVM目标架构描述文件
6.7 应用实例
6.7.1 代码插桩
6.7.2 代码保护
6.8 本章小结
第7章 多样化编译实践
7.1 软件多样化的机会
7.1.1 应用层的多样化机会
7.1.2 Web服务层的多样化机会
7.1.3 操作系统层的多样化机会
7.1.4 组合后的多样化机会
7.1.5 虚拟层的多样化机会
7.2 多样化带来的管理复杂性
7.3 多样化编译技术
7.3.1 随机化技术
7.3.2 代码混淆技术
7.3.3 与堆栈相关的多样化技术
7.4 多样化编译的应用
7.4.1 多样化编译在安全防御方面的应用
7.4.2 多样化编译工具的结构组成及原理
7.5 本章小结
第8章 反编译的对象——可执行文件格式分析
8.1 可执行文件格式
8.1.1 PE可执行文件格式
8.1.2 ELF可执行文件格式
8.2 main函数的识别
8.2.1 程序启动过程分析
8.2.2 startup函数解析
8.2.3 main()函数定位
8.3 本章小结
第9章 反编译的基础——指令系统和反汇编