商品详情
书名:程序分析技术
定价:108.0
ISBN:9787030756251
作者:王甜甜
版次:1
出版时间:2024-07
内容提要:
程序分析技术是编译器、软件开发以及软件质量保障的基础。本书共6章,主要内容包括程序分析基础、程序的中间表示、数据流分析、程序切片与程序插桩、软件缺陷检测、智能化程序分析技术等,涵盖了程序分析基础理论和技术,还贯穿若干案例,讲解工业界的程序分析实践。
目录:
目录
前言
1 程序分析基础 1
1.1 程序分析概述 1
1.1.1 什么是程序分析? 1
1.1.2 为何需要程序分析技术? 1
1.1.3 程序分析技术的分类 2
1.2 静态程序分析 3
1.2.1 静态程序分析的程序属性 3
1.2.2 静态程序分析的一般流程和方法 5
1.3 动态程序分析 8
1.3.1 动态程序分析的程序属性 8
1.3.2 动态程序分析的一般流程和方法 9
1.4 静态和动态程序分析的特性对比 11
1.4.1 程序不变量的含义 12
1.4.2 程序不变量实例分析 12
1.4.3 基于动态程序分析的可能程序不变量检测 13
1.4.4 基于静态程序分析的程序不变量推导 14
1.4.5 完备分析、完全分析和可终止 17
1.4.6 静态和动态程序分析技术的比较 18
1.5 程序分析技术的应用 20
1.5.1 编译器优化 20
1.5.2 软件质量保障工具 21
1.5.3 集成开发环境 23
1.6 小结 24
2 程序的中间表示 26
2.1 token序列 26
2.2 语法树 27
2.3 控制流图 29
2.4 调用图 33
2.5 程序依赖图和系统依赖图 33
2.5.1 程序依赖图 33
2.5.2 系统依赖图 35
2.6 静态单赋值 36
2.7 指向图 37
2.8 静态程序分析策略 38
2.8.1 可能分析和必然分析 38
2.8.2 程序分析的范围 39
2.8.3 敏感程度 39
2.9 程序中间表示生成工具 43
2.9.1 编译器前端 43
2.9.2 控制流和数据流分析工具 46
2.9.3 静态二进制代码分析工具 47
2.10 程序的中间表示在克隆代码检测中的应用 47
2.10.1 克隆代码的含义和类型 48
2.10.2 克隆代码的产生原因和危害 48
2.10.3 克隆代码检测方法分类 49
2.10.4 典型的克隆代码检测方法 51
2.10.5 克隆代码检测技术的应用 57
2.11 小结 57
3 数据流分析 59
3.1 数据流分析中的抽象 59
3.2 数据流分析的单调框架 61
3.2.1 前向和反向、可能和必然分析 61
3.2.2 迭代法求解数据流 62
3.3 经典的数据流分析 64
3.3.1 到达定值分析 64
3.3.2 活跃变量分析 71
3.3.3 可用表达式分析 75
3.3.4 非常繁忙表达式分析 79
3.4 过程间数据流分析 82
3.5 小结 83
4 程序切片与程序插桩 84
4.1 程序切片的基本概念 84
4.1.1 语句之间相互影响的分析 84
4.1.2 程序切片的定义 86
4.2 程序切片的分类 87
4.2.1 前向切片和反向切片 87
4.2.2 过程内切片和过程间切片 88
4.2.3 静态切片和动态切片 88
4.3 程序切片算法 90
4.3.1 基于数据流等式的程序切片算法 90
4.3.2 基于图可达性的过程内切片算法 90
4.3.3 基于图可达性的过程间切片算法 92
4.3.4 动态反向切片算法 96
4.4 程序插桩的基本概念 99
4.5 程序插桩方法 101
4.5.1 基于抽象语法树的程序插桩方法 101
4.5.2 基于二进制代码的程序插桩方法 103
4.6 程序切片的应用 106
4.7 小结 109
5 软件缺陷检测 110
5.1 软件缺陷的定义和分类 110
5.1.1 软件缺陷的定义 110
5.1.2 软件缺陷的分类 111
5.2 软件缺陷检测技术 115
5.2.1 静态缺陷检测技术 116
5.2.2 基于模式的缺陷检测方法 117
5.2.3 动态缺陷检测技术 122
5.2.4 基于运行时监测的缺陷检测方法 123
5.2.5 安全开发生命周期 125
5.3 静态缺陷检测工具 126
5.3.1 基于词法分析的缺陷检测工具 127
5.3.2 基于语法分析的缺陷检测工具 127
5.3.3 基于数据流分析的缺陷检测工具 128
5.3.4 基于静态污点分析的缺陷检测工具 128
5.3.5 基于模型检查的缺陷检测工具 129
5.3.6 基于静态符号执行的缺陷检测工具 130
5.3.7 基于抽象解释的缺陷检测工具 130
5.3.8 基于定理证明的缺陷检测工具 131
5.3.9 商业的基于静态程序分析的缺陷检测工具 131
5.4 动态缺陷检测工具 133
5.4.1 基于运行时监测的缺陷检测工具 133
5.4.2 基于模糊测试的缺陷检测工具 134
5.4.3 基于动态符号执行的缺陷检测工具 135
5.4.4 基于动态污点分析的缺陷检测工具 136
5.4.5 渗透测试工具 137
5.4.6 商业的基于动态程序分析的缺陷检测工具 137
5.5 小结 138
6 智能化程序分析技术 140
6.1 基于搜索的程序分析技术 140
6.1.1 基于遗传编程的程序自动化修复 141
6.1.2 基于搜索的软件测试 144
6.1.3 基于搜索的程序分析技术的难点问题 144
6.2 数据驱动的程序分析技术 144
6.2.1 基于深度学习的程序自动化修复 145
6.2.2 基于深度学习的克隆代码检测 148
6.2.3 深度学习技术应用于程序分析领域的难点问题 150
6.3 小结 151
参考文献 152
定价:108.0
ISBN:9787030756251
作者:王甜甜
版次:1
出版时间:2024-07
内容提要:
程序分析技术是编译器、软件开发以及软件质量保障的基础。本书共6章,主要内容包括程序分析基础、程序的中间表示、数据流分析、程序切片与程序插桩、软件缺陷检测、智能化程序分析技术等,涵盖了程序分析基础理论和技术,还贯穿若干案例,讲解工业界的程序分析实践。
目录:
目录
前言
1 程序分析基础 1
1.1 程序分析概述 1
1.1.1 什么是程序分析? 1
1.1.2 为何需要程序分析技术? 1
1.1.3 程序分析技术的分类 2
1.2 静态程序分析 3
1.2.1 静态程序分析的程序属性 3
1.2.2 静态程序分析的一般流程和方法 5
1.3 动态程序分析 8
1.3.1 动态程序分析的程序属性 8
1.3.2 动态程序分析的一般流程和方法 9
1.4 静态和动态程序分析的特性对比 11
1.4.1 程序不变量的含义 12
1.4.2 程序不变量实例分析 12
1.4.3 基于动态程序分析的可能程序不变量检测 13
1.4.4 基于静态程序分析的程序不变量推导 14
1.4.5 完备分析、完全分析和可终止 17
1.4.6 静态和动态程序分析技术的比较 18
1.5 程序分析技术的应用 20
1.5.1 编译器优化 20
1.5.2 软件质量保障工具 21
1.5.3 集成开发环境 23
1.6 小结 24
2 程序的中间表示 26
2.1 token序列 26
2.2 语法树 27
2.3 控制流图 29
2.4 调用图 33
2.5 程序依赖图和系统依赖图 33
2.5.1 程序依赖图 33
2.5.2 系统依赖图 35
2.6 静态单赋值 36
2.7 指向图 37
2.8 静态程序分析策略 38
2.8.1 可能分析和必然分析 38
2.8.2 程序分析的范围 39
2.8.3 敏感程度 39
2.9 程序中间表示生成工具 43
2.9.1 编译器前端 43
2.9.2 控制流和数据流分析工具 46
2.9.3 静态二进制代码分析工具 47
2.10 程序的中间表示在克隆代码检测中的应用 47
2.10.1 克隆代码的含义和类型 48
2.10.2 克隆代码的产生原因和危害 48
2.10.3 克隆代码检测方法分类 49
2.10.4 典型的克隆代码检测方法 51
2.10.5 克隆代码检测技术的应用 57
2.11 小结 57
3 数据流分析 59
3.1 数据流分析中的抽象 59
3.2 数据流分析的单调框架 61
3.2.1 前向和反向、可能和必然分析 61
3.2.2 迭代法求解数据流 62
3.3 经典的数据流分析 64
3.3.1 到达定值分析 64
3.3.2 活跃变量分析 71
3.3.3 可用表达式分析 75
3.3.4 非常繁忙表达式分析 79
3.4 过程间数据流分析 82
3.5 小结 83
4 程序切片与程序插桩 84
4.1 程序切片的基本概念 84
4.1.1 语句之间相互影响的分析 84
4.1.2 程序切片的定义 86
4.2 程序切片的分类 87
4.2.1 前向切片和反向切片 87
4.2.2 过程内切片和过程间切片 88
4.2.3 静态切片和动态切片 88
4.3 程序切片算法 90
4.3.1 基于数据流等式的程序切片算法 90
4.3.2 基于图可达性的过程内切片算法 90
4.3.3 基于图可达性的过程间切片算法 92
4.3.4 动态反向切片算法 96
4.4 程序插桩的基本概念 99
4.5 程序插桩方法 101
4.5.1 基于抽象语法树的程序插桩方法 101
4.5.2 基于二进制代码的程序插桩方法 103
4.6 程序切片的应用 106
4.7 小结 109
5 软件缺陷检测 110
5.1 软件缺陷的定义和分类 110
5.1.1 软件缺陷的定义 110
5.1.2 软件缺陷的分类 111
5.2 软件缺陷检测技术 115
5.2.1 静态缺陷检测技术 116
5.2.2 基于模式的缺陷检测方法 117
5.2.3 动态缺陷检测技术 122
5.2.4 基于运行时监测的缺陷检测方法 123
5.2.5 安全开发生命周期 125
5.3 静态缺陷检测工具 126
5.3.1 基于词法分析的缺陷检测工具 127
5.3.2 基于语法分析的缺陷检测工具 127
5.3.3 基于数据流分析的缺陷检测工具 128
5.3.4 基于静态污点分析的缺陷检测工具 128
5.3.5 基于模型检查的缺陷检测工具 129
5.3.6 基于静态符号执行的缺陷检测工具 130
5.3.7 基于抽象解释的缺陷检测工具 130
5.3.8 基于定理证明的缺陷检测工具 131
5.3.9 商业的基于静态程序分析的缺陷检测工具 131
5.4 动态缺陷检测工具 133
5.4.1 基于运行时监测的缺陷检测工具 133
5.4.2 基于模糊测试的缺陷检测工具 134
5.4.3 基于动态符号执行的缺陷检测工具 135
5.4.4 基于动态污点分析的缺陷检测工具 136
5.4.5 渗透测试工具 137
5.4.6 商业的基于动态程序分析的缺陷检测工具 137
5.5 小结 138
6 智能化程序分析技术 140
6.1 基于搜索的程序分析技术 140
6.1.1 基于遗传编程的程序自动化修复 141
6.1.2 基于搜索的软件测试 144
6.1.3 基于搜索的程序分析技术的难点问题 144
6.2 数据驱动的程序分析技术 144
6.2.1 基于深度学习的程序自动化修复 145
6.2.2 基于深度学习的克隆代码检测 148
6.2.3 深度学习技术应用于程序分析领域的难点问题 150
6.3 小结 151
参考文献 152
- 科学出版社旗舰店 (微信公众号认证)
- 科学出版社秉承多年来形成的“高层次、高水平、高质量”和“严肃、严密、严格”的优良传统与作风,始终坚持为科技创新服务、为传播与普及科学知识服务、为科学家和广大读者服务的宗旨。
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...