《逆向与漏洞分析》魏强【扫描版_PDF电子书_推荐】
内容简介:
本书旨在培养学生动手实践逆向和漏洞分析的技能,由浅入深,从基础工具使用讲起,逐步过渡到相对复杂的漏洞挖掘工具使用,最后介绍真实的漏洞分析案例,可以综合训练学生的漏洞分析思维。本书的亮点是漏洞挖掘工具的使用,分别介绍与污点分析、符号执行、模糊测试这三种技术相关的主流工具,通过实例来介绍其具体的使用方法和过程。
目 录:
1章 逆向与漏洞分析概述 1
1.1 逆向概述 1
1.1.1 基本概念 1
1.1.2 基本流程 2
1.1.3 作用 3
1.2 漏洞的概念 3
1.2.1 漏洞的基本定义 4
1.2.2 漏洞的*征 5
1.2.3 漏洞分类 6
1.2.4 漏洞分 8
1.3 漏洞的影响及发展历程 11
1.3.1 漏洞的影响 11
1.3.2 漏洞发展历程 13
1.3.3 漏洞分析技术发展脉络 14
1.4 本章小结 15
1.5 *题 16
2章 逆向分析基础 17
2.1 软件*护方法 17
2.1.1 *止调试 17
2.1.2 *止分析 18
2.1.3 *止修改 22
2.1.4 其他*护方法 22
2.2 程序预处理 22
2.2.1 软件脱壳 22
2.2.2 程序入口定位 24
2.2.3 实例分析 25
2.3 基本数据类型逆向 27
2.3.1 整数 27
2.3.2 浮点数 27
2.3.3 字符和字符串 28
2.3.4 内存地址和指针 28
2.3.5 常量 28
2.3.6 数组 29
2.3.7 实例分析 30
2.4 表达式逆向 32
2.4.1 算术运算 32
2.4.2 关系与逻辑运算 33
2.4.3 实例分析 33
2.5 控制语句逆向 35
2.5.1 分支类语句 36
2.5.2 循环类语句 37
2.5.3 实例分析 38
2.6 函数逆向 43
2.6.1 栈帧 43
2.6.2 函数参数 43
2.6.3 函数返回值 43
2.6.4 实例分析 44
2.7 代码*化 48
2.7.1 表达式*化 48
2.7.2 代码结构*化 48
2.8 本章小结 50
2.9 *题 50
3章 漏洞分析基础 51
3.1 缓冲区溢出漏洞 51
3.1.1 基本概念 51
3.1.2 栈溢出漏洞机理 51
3.2 格式化字符串漏洞 57
3.2.1 基本概念 57
3.2.2 漏洞机理 57
3.3 整型溢出漏洞 59
3.3.1 基本概念 59
3.3.2 漏洞机理 59
3.4 提权漏洞 60
3.4.1 基本概念 60
3.4.2 漏洞机理 61
3.5 UAF 漏洞 62
3.5.1 基本概念 62
3.5.2 漏洞机理 63
3.6 本章小结 67
3.7 *题 67
4章 数据流分析技术 68
4.1 概念与作用 68
4.1.1 基本概念 68
4.1.2 数据流分析的作用 70
4.2 基本分析模型 70
4.2.1 代码基本块 70
4.2.2 抽象语法树 71
4.2.3 三地址码 72
4.2.4 静态单赋值 73
4.2.5 控制流图 75
4.2.6 其他代码模型 77
4.3 数据流分析原理 82
4.3.1 程序建模 82
4.3.2 函数内分析 84
4.3.3 函数间分析 89
4.3.4 漏洞规则分析 93
4.4 数据流分析的应用 94
4.4.1 辅助程序*化 94
4.4.2 检测程序漏洞 97
4.5 本章小结 99
4.6 *题 99
5章 污点分析技术 101
5.1 污点分析概述 101
5.1.1 基本概念 101
5.1.2 动、静态污点分析的异同 103
5.2 静态污点分析 105
5.2.1 正向静态污点分析 105
5.2.2 反向静态污点分析 108
5.2.3 静态污点分析的应用 108
5.3 动态污点分析 109
5.3.1 动态污点分析过程 110
5.3.2 动态污点分析应用 122
5.4 本章小结 123
5.5 *题 124
6章 符号执行技术 125
6.1 符号执行概述 125
6.1.1 基本概念 125
6.1.2 发展脉络 126
6.2 符号执行的原理 129
6.2.1 正向符号执行 129
6.2.2 逆向符号执行 134
6.3 符号执行的应用 136
6.3.1 使用符号执行检测程序漏洞 136
6.3.2 使用符号执行构造测试用例 136
6.3.3 使用离线符号执行生成Exploit 137
6.4 实例分析 138
6.4.1 检测缓冲区溢出漏洞 138
6.4.2 构造测试用例 140
6.5 其他符号执行 142
6.5.1 动态符号执行 142
6.5.2 组合符号执行 144
6.5.3 选择符号执行 146
6.5.4 混合符号执行 148
6.5.5 并行符号执行 149
6.6 符号执行存在的难题及缓解措施 150
6.6.1 路径*炸问题 150
6.6.2 约束求解问题 151
6.6.3 外*函数调用问题 152
6.6.4 浮点指针计算问题 152
6.6.5 循环处理 153
6.7 本章小结 153
6.8 *题 153
7章 模糊测试技术 154
7.1 模糊测试概述 154
7.1.1 起源与发展 155
7.1.2 基本概念 160
7.1.3 分类与作用 161
7.2 基本原理 163
7.2.1 目标识别 163
7.2.2 输入识别 164
7.2.3 测试用例生成 164
7.2.4 执行过程监控 165
7.2.5 异常分析 166
7.2.6 可用性判定 174
7.3 传统模糊测试 176
7.3.1 基本流程 176
7.3.2 输入构造 177
7.3.3 输入验证 178
7.3.4 适应度函数 180
7.3.5 基于生成与基于变异技术对比 182
7.3.6 案例分析 182
7.4 覆盖率引导的模糊测试 186
7.4.1 覆盖率概念与分类 186
7.4.2 基本流程 187
7.4.3 初始种子获取 188
7.4.4 种子选择策略 189
7.4.5 覆盖率引导统计 190
7.4.6 案例分析 191
7.5 其他模糊测试技术 193
7.5.1 定向模糊测试 193
7.5.2 内存模糊测试 194
7.5.3 内核模糊测试 195
7.5.4 反模糊测试 196
7.6 模糊测试的局限性和发展方向 196
7.6.1 局限性和面临问题 196
7.6.2 发展方向 197
7.7 本章小结 198
7.8 *题 199
8章 漏洞攻*演变 200
8.1 漏洞攻*对抗概述 200
8.2 栈空间对抗 202
8.2.1 *御原理 202
8.2.2 对抗方法 205
8.3 堆空间对抗 205
8.3.1 *御原理 205
8.3.2 对抗方法 206
8.4 异常处理机制对抗 207
8.4.1 *御原理 207
8.4.2 对抗方法 209
8.5 数据*护对抗 210
8.5.1 *御原理 210
8.5.2 对抗方法 211
8.5.3 其他数据*护方法 212
8.6 控制*护对抗 217
8.6.1 *御原理 217
8.6.2 对抗方法 218
8.6.3 其他控制*护方法 218
8.7 Windows*新*机制 222
8.8 本章小结 225
8.9 *题 225
参考文献 226