图书目录

目录

第1章绪论/1

1.1引言1

1.2典型安全问题3

1.2.1恶意软件3

1.2.2软件漏洞9

1.2.3软件后门11

1.3软件安全性分析的目标12

1.4主要方法与技术13

1.4.1反汇编与反编译14

1.4.2程序调试15

1.4.3程序切片17

1.4.4污点传播分析18

1.4.5符号执行19

1.4.6模糊测试20

1.5主要分析应用21

1.5.1恶意软件分析21

1.5.2网络协议逆向分析21

1.5.3软件漏洞分析与利用22

1.6本书的组织结构23

1.6.1内容范围23

1.6.2本书的组织23

1.7其他说明24

参考文献24

第2章基础知识/25

2.1处理器硬件架构基础25

2.1.1CPU结构介绍25

2.1.2保护模式28

2.1.3特权级29

2.1.4中断处理与异常处理30

〖1〗软件安全分析与应用目录[3]〖3〗2.1.5调试支持32

2.1.6虚拟化支持34

2.2反汇编及对抗技术35

2.2.1汇编语言35

2.2.2反汇编39

2.2.3代码混淆40

2.2.4反调试42

2.3Windows操作系统基础44

2.3.1PE文件结构44

2.3.2进程管理51

2.3.3线程管理52

2.3.4内存管理54

2.3.5对象与句柄管理57

2.3.6文件系统59

2.4小结59

参考文献60

第3章软件安全分析基础工具/61

3.1静态分析工具61

3.1.1IDA Pro61

3.1.2Udis8665

3.1.3Capstone67

3.1.4PEiD69

3.1.5010Editor70

3.2动态分析工具75

3.2.1Process Monitor75

3.2.2Wireshark78

3.2.3OllyDbg80

3.2.4WinDbg82

3.2.5Pin88

3.3虚拟化辅助分析平台89

3.3.1VMWare Workstation89

3.3.2VirtualBox93

3.3.3QEMU94

3.3.4Xen97

3.4小结97

参考文献98

第4章程序切片/99

4.1概述99

4.2程序切片初探100

4.2.1切片相关基础知识101

4.2.2切片的基本原理109

4.3静态程序切片111

4.3.1基于数据流方程的切片方法111

4.3.2基于图可达性算法的切片方法115

4.4动态程序切片116

4.4.1基于程序依赖图的动态切片方法117

4.4.2基于动态依赖图的动态切片方法120

4.5小结124

参考文献125

第5章符号执行/126

5.1符号执行基本模型126

5.1.1基本思想126

5.1.2程序语言定义127

5.1.3符号执行中的程序语义127

5.1.4符号执行树129

5.1.5约束求解130

5.1.6符号执行实例133

5.2动态符号执行技术136

5.2.1基本思想136

5.2.2动态符号执行实例137

5.2.3动态符号执行工具SAGE142

5.2.4动态符号执行技术中的关键问题150

5.3并行符号执行技术160

5.3.1基本思想160

5.3.2并行系统SCORE161

5.3.3并行系统Cloud9164

5.3.4并行系统SAGEN169

5.4选择符号执行技术174

5.4.1基本思想174

5.4.2选择符号执行实例175

5.4.3关键问题及解决方案177

5.5符号执行应用实例179

5.5.1KLEE179

5.5.2应用实例180

参考文献181

第6章模糊测试/183

6.1概述183

6.2基本原理与组成184

6.2.1基本原理184

6.2.2系统组成186

6.2.3工作模式188

6.3基础方法与技术190

6.3.1数据生成方法190

6.3.2环境控制技术194

6.3.3状态监控技术198

6.4模糊测试优化方法200

6.4.1灰盒模糊测试200

6.4.2白盒模糊测试201

6.4.3基于反馈的模糊测试202

6.5分布式模糊测试203

6.5.1分布式控制结构204

6.5.2分布式模糊测试策略206

6.5.3动态适应机制207

6.6典型工具与案例207

6.6.1Peach208

6.6.2Sulley211

参考文献213

第7章污点传播分析/214

7.1概述214

7.1.1发展简史214

7.1.2应用领域215

7.2基本原理217

7.3主要方法218

7.3.1污点源识别219

7.3.2污点内存映射220

7.3.3污点动态跟踪222

7.3.4传播规则设计225

7.3.5污点误用检测228

7.4典型系统实现229

7.4.1TaintCheck系统229

7.4.2TEMU系统231

7.4.3AOTA系统233

7.5典型实例分析235

7.5.1分析环境搭建235

7.5.2污点传播过程236

7.5.3污点回溯分析237

7.6总结239

参考文献239

第8章恶意代码检测与分析/241

8.1恶意代码分析基础241

8.1.1恶意代码分类241

8.1.2恶意代码分析的目的243

8.1.3典型分析流程244

8.1.4软件漏洞利用及分析245

8.2静态分析247

8.2.1杀毒软件扫描247

8.2.2文件类型确定247

8.2.3文件哈希计算248

8.2.4字符串信息提取251

8.2.5文件元数据提取252

8.2.6混淆代码识别254

8.2.7代码反汇编257

8.3动态分析259

8.3.1动态分析环境构建259

8.3.2动态行为分析262

8.3.3动态调试分析268

8.3.4反虚拟化分析对抗272

8.3.5反自动化分析对抗276

8.4实际案例分析278

8.5小结288

参考文献289

第9章软件漏洞挖掘与分析/290

9.1软件漏洞基础知识290

9.1.1概述290

9.1.2软件漏洞典型类型292

9.1.3软件漏洞利用基础知识297

9.1.4软件漏洞防护机制基础知识300

9.2软件漏洞机理分析301

9.2.1软件漏洞脆弱点分析302

9.2.2软件漏洞路径分析305

9.2.3软件漏洞内存布局分析309

9.2.4软件漏洞分析实例310

9.3软件漏洞利用312

9.3.1漏洞攻击链构造312

9.3.2漏洞攻击路径触发314

9.3.3保护机制绕过316

9.4小结317

参考文献318

第10章网络协议逆向分析/319

10.1网络协议逆向概述319

10.2协议消息格式逆向320

10.2.1字段划分322

10.2.2字段间关系的识别331

10.2.3字段功能语义恢复336

10.3协议状态机恢复341

10.3.1协议消息类型识别341

10.3.2状态机推断和化简344

10.4小结350

参考文献351

第11章移动智能终端应用软件安全性分析/352

11.1Android系统安全框架介绍352

11.1.1权限机制352

11.1.2沙箱隔离355

11.2Android软件典型安全问题355

11.2.1隐私窃取355

11.2.2应用重打包356

11.2.3组件安全问题356

11.3静态分析361

11.3.1权限分析361

11.3.2组件分析362

11.3.3代码分析366

11.3.4重打包应用检测381

11.4动态分析388

11.4.1数据流分析389

11.4.2数据流分析典型工具390

11.4.3动态行为分析392

11.4.4动态行为分析典型工具394

11.5实际案例分析401

11.5.1应用软件实现安全性分析401

11.5.2恶意应用分析404

11.6小结412

参考文献413