第1章 软件逆向工程概论 1
1.1 软件逆向工程概述 1
1.2 反编译与二进制翻译 3
1.3 反编译过程的各个阶段 6
1.4 反编译技术相关研究 8
1.5 反编译的形式框架 13
1.6 本章小结 17
第2章 UQBT框架 19
2.1 UQBT框架 19
2.2 UQBT中间表示 21
2.3 UQBT前端模块 21
2.4 后端模块 22
2.5 实现效果 23
2.6 本章小结 24
第3章 硬件体系结构 25
3.1 CPU体系结构 25
3.2 IA-64体系结构 25
3.3 本章小结 29
第4章 ELF64文件装载 31
4.1 ELF64文件格式 31
4.2 ELF64文件MAIN函数定位 34
4.3 本章小结 41
第5章 反汇编 43
5.1 反汇编技术简介 43
5.2 自动反汇编构造工具NJMCT 44
5.3 IA-64反汇编器构造 47
5.4 本章小结 48
第6章 语义描述语言 49
6.1 语义描述语言 49
6.2 语义描述语言SSL 49
6.3 SSL文法的扩展 55
6.4 本章小结 57
第7章 IA-64指令语义抽象 59
7.1 概述 59
7.2 中间表示 59
7.3 基于SSL的IA-64指令语义抽象技术 65
7.4 基于模拟的IA-64指令语义抽象技术 69
7.5 本章小结 78
第8章 谓词消除 81
8.1 IA-64谓词执行 81
8.2 谓词执行的并行优化 82
8.3 谓词消除 84
8.4 谓词执行分析 85
8.5 谓词消除改进 90
8.6 本章小结 99
第9章 数据流分析 101
9.1 概述 101
9.2 简化的分析语言 101
9.3 数据流分析定义 102
9.4 数据流分析框架 105
9.5 数据流分析近似性对过程参数分析的影响 108
9.6 本章小结 115
第10章 低级C代码生成 117
10.1 中间表示的转换 117
10.2 过程处理 117
10.3 基本块处理 119
10.4 低级RT的转换 120
10.5 高级RT的转换 124
10.6 本章小结 125
第11章 间接跳转及switch语句恢复 127
11.1 概述 127
11.2 Branch语言指称语义 127
11.3 结合数据流分析构造控制流图 128
11.4 switch语句恢复算法 131
11.5 实验数据 137
11.6 本章小结 138
第12章 数据类型恢复 139
12.1 概述 139
12.2 基于指令语义的数据类型恢复 139
12.3 基于数据流的类型分析 142
12.4 本章小结 152
第13章 间接调用与动态地址解析 153
13.1 概述 153
13.2 间接过程调用 153
13.3 间接调用动态链接库函数 158
13.4 回调函数 164
13.5 动态地址解析 168
13.6 综合分析 173
13.7 本章小结 174
第14章 控制流代码恢复分析 175
14.1 基本块的划分及控制流图的构建 175
14.2 控制流恢复术语 179
14.3 高级控制流分析 183
14.4 结构化算法 188
14.5 本章小结 208
第15章 高级控制流代码恢复 211
15.1 概述 211
15.2 符号与约定 211
15.3 生成循环结构代码 213
15.4 生成TWO-WAY条件结构代码 216
15.5 生成N-WAY条件结构代码 219
15.6 生成ONE-WAY结构代码 220
15.7 完整的控制流代码生成算法 222
15.8 本章小结 224
参考文献 225
后记 235