| 摘要 | 第5-6页 |
| ABSTRACT | 第6页 |
| 第1章 绪论 | 第9-15页 |
| 1.1 研究背景 | 第9-10页 |
| 1.2 研究意义 | 第10页 |
| 1.3 国内外研究现状 | 第10-12页 |
| 1.4 研究内容 | 第12-13页 |
| 1.5 论文章节安排 | 第13-15页 |
| 第2章 符号化执行和中间语言 | 第15-26页 |
| 2.1 Fuzzing 缺陷检测技术 | 第15-17页 |
| 2.1.1 概述 | 第15页 |
| 2.1.2 Fuzzing 缺陷检测原理及方法 | 第15-16页 |
| 2.1.3 Fuzzing 测试流程 | 第16-17页 |
| 2.1.4 Fuzzing 测试存在的缺陷 | 第17页 |
| 2.2 符号化执行 | 第17-19页 |
| 2.3 符号化执行技术分类 | 第19-20页 |
| 2.4 分析方法对比选择 | 第20页 |
| 2.5 动态二进制插装技术 | 第20-25页 |
| 2.6 本章小结 | 第25-26页 |
| 第3章 逆向分析污点数据传播 | 第26-41页 |
| 3.1 程序数据分类 | 第26页 |
| 3.1.1 内部数据 | 第26页 |
| 3.1.2 外部数据 | 第26页 |
| 3.2 污点数据概述 | 第26-33页 |
| 3.3 逆向回溯分析 | 第33-40页 |
| 3.3.1 基于依赖结构的逆向分析技术 | 第33-34页 |
| 3.3.2 函数调用关系分析 | 第34-36页 |
| 3.3.3 函数依赖矩阵生成 | 第36-38页 |
| 3.3.4 程序函数调用路径生成 | 第38-40页 |
| 3.4 本章小结 | 第40-41页 |
| 第4章 基于敏感区域的路径遍历 | 第41-51页 |
| 4.1 基于动态分析的路径遍历 | 第41-42页 |
| 4.2 基于敏感区域的路径 | 第42-44页 |
| 4.3 路径选择 | 第44-45页 |
| 4.4 路径遍历优化处理 | 第45-47页 |
| 4.4.1 循环体处理 | 第45-46页 |
| 4.4.2 无关分支处理 | 第46页 |
| 4.4.3 分支约束取反处理 | 第46-47页 |
| 4.5 STP 求解器介绍 | 第47-49页 |
| 4.6 本章小结 | 第49-51页 |
| 第5章 原型系统的设计与实现 | 第51-74页 |
| 5.1 总功能要求 | 第52-53页 |
| 5.2 原型系统工作原理 | 第53-54页 |
| 5.3 Valgrind 插件模块 | 第54-57页 |
| 5.4 中间转换模块 | 第57-60页 |
| 5.4.1 初始化模块 | 第57-58页 |
| 5.4.2 执行模块 | 第58-60页 |
| 5.5 STP 求解模块 | 第60-63页 |
| 5.5.1 不同变量定义 | 第60-61页 |
| 5.5.2 输入文件定义和读取 | 第61-62页 |
| 5.5.3 内存寄存器读写操作 | 第62页 |
| 5.5.4 变量运算和比较操作 | 第62-63页 |
| 5.6 实验测试与结果分析 | 第63-73页 |
| 5.6.1 并列式 if 语句待测程序检测 | 第64-66页 |
| 5.6.2 并列式 if 和嵌套式 if 混合待测程序检测 | 第66-67页 |
| 5.6.3 具有函数调用待测程序检测 | 第67-70页 |
| 5.6.4 具有循环待测程序检测 | 第70-72页 |
| 5.6.5 具有污点间接传播数据待测程序检测 | 第72-73页 |
| 5.6.6 测试总结 | 第73页 |
| 5.7 本章小结 | 第73-74页 |
| 第6章 总结与展望 | 第74-76页 |
| 6.1 论文工作总结 | 第74页 |
| 6.2 工作展望 | 第74-76页 |
| 致谢 | 第76-77页 |
| 参考文献 | 第77-80页 |
| 附录 | 第80-81页 |
| 详细摘要 | 第81-82页 |