摘要 | 第10-13页 |
Abstract | 第13-16页 |
第一章 绪论 | 第17-33页 |
1.1 课题背景与研究意义 | 第17-19页 |
1.2 国内外研究现状 | 第19-26页 |
1.2.1 静态分析技术 | 第19-20页 |
1.2.2 模糊测试技术 | 第20-21页 |
1.2.3 污点分析技术 | 第21-22页 |
1.2.4 符号执行技术 | 第22-23页 |
1.2.5 漏洞挖掘工具采用技术对比 | 第23-24页 |
1.2.6 DARPA CGC | 第24-26页 |
1.3 当前软件漏洞挖掘面对的主要问题 | 第26-30页 |
1.3.1 漏洞挖掘的不可判定性 | 第26-27页 |
1.3.2 漏洞挖掘技术的局限性 | 第27-30页 |
1.4 论文研究思路与主要研究内容 | 第30-32页 |
1.5 论文组织结构 | 第32-33页 |
第二章 漏洞挖掘相关的基础知识 | 第33-49页 |
2.1 中间语言 | 第33-36页 |
2.1.1 中间语言简介 | 第33-34页 |
2.1.2 LLVM IR | 第34-36页 |
2.2 程序流图 | 第36-38页 |
2.2.1 控制流图 | 第36页 |
2.2.2 程序依赖图 | 第36-38页 |
2.2.3 函数调用图 | 第38页 |
2.3 软件漏洞成因与分类 | 第38-48页 |
2.3.1 软件漏洞存在的主客观因素 | 第38-40页 |
2.3.2 软件漏洞分类 | 第40-48页 |
2.4 小结 | 第48-49页 |
第三章 基于数据流分析和抽象解释的静态漏洞挖掘方法研究 | 第49-79页 |
3.1 基于数据流分析的漏洞挖掘方法研究 | 第49-59页 |
3.1.1 数据流分析概述 | 第49-52页 |
3.1.2 基于数据流分析的UAF漏洞挖掘方法 | 第52-55页 |
3.1.3 基于数据流分析的DoubleFree漏洞挖掘方法 | 第55-59页 |
3.2 基于抽象解释的漏洞挖掘方法研究 | 第59-77页 |
3.2.1 抽象解释概述 | 第59-63页 |
3.2.2 内存相关漏洞初定位 | 第63-66页 |
3.2.3 可疑代码区域关键变量整数区间分析 | 第66-77页 |
3.3 小结 | 第77-79页 |
第四章 面向漏洞的程序切片技术研究 | 第79-95页 |
4.1 问题描述与动机 | 第79-81页 |
4.2 程序切片算法 | 第81-88页 |
4.2.1 基于数据流方程的算法 | 第81-86页 |
4.2.2 程序切片实现 | 第86-88页 |
4.3 实验结果与分析 | 第88-93页 |
4.3.1 实验设计 | 第88-89页 |
4.3.2 结果分析 | 第89-93页 |
4.4 小结 | 第93-95页 |
第五章 基于符号执行和模糊测试的漏洞验证技术研究 | 第95-115页 |
5.1 基于分支合并的符号执行路径爆炸缓解算法研究 | 第95-103页 |
5.1.1 问题描述与动机 | 第96-98页 |
5.1.2 算法设计 | 第98-100页 |
5.1.3 算法应用 | 第100-103页 |
5.2 基于调用图的逆向符号执行技术研究 | 第103-110页 |
5.2.1 逆向符号执行的基本思想 | 第103-105页 |
5.2.2 漏洞可达条件 | 第105页 |
5.2.3 逆向符号执行算法 | 第105-107页 |
5.2.4 实验结果与分析 | 第107-110页 |
5.3 基于漏洞导向的模糊测试技术研究 | 第110-114页 |
5.3.1 模糊测试与导向模糊测试 | 第110-111页 |
5.3.2 漏洞导向模糊测试 | 第111-112页 |
5.3.3 实验结果与分析 | 第112-114页 |
5.4 小结 | 第114-115页 |
第六章 总结与展望 | 第115-119页 |
6.1 论文主要工作总结 | 第115-116页 |
6.2 工作展望 | 第116-119页 |
致谢 | 第119-121页 |
参考文献 | 第121-135页 |
作者在学期间取得的学术成果 | 第135-137页 |
附录A 3.2.2节示例二进制程序对应的LLVM IR | 第137-147页 |
附录B 概念验证程序vultest源码 | 第147-153页 |