摘要 | 第4-6页 |
Abstract | 第6-7页 |
目录 | 第8-14页 |
第一章 绪论 | 第14-21页 |
1.1 背景 | 第14-15页 |
1.2 技术发展现状 | 第15-19页 |
1.2.1 静态分析 | 第15-17页 |
1.2.2 渗透测试 | 第17-18页 |
1.2.3 模糊测试Fuzzing | 第18-19页 |
1.3 主要工作及意义 | 第19页 |
1.4 论文组织结构 | 第19-21页 |
第二章 模糊测试应用于程序漏洞发现 | 第21-31页 |
2.1 基本思想 | 第21-22页 |
2.2 一般过程 | 第22-23页 |
2.3 依据输入源的分类 | 第23-25页 |
2.3.1 命令行参数和环境变量模糊测试 | 第24页 |
2.3.2 文件模糊测试 | 第24-25页 |
2.3.3 网络协议模糊测试 | 第25页 |
2.4 两个关键问题 | 第25-30页 |
2.4.1 问题说明 | 第25-26页 |
2.4.2 已有尝试解决方案 | 第26-29页 |
2.4.3 仍存在的问题 | 第29-30页 |
2.5 本章小结 | 第30-31页 |
第三章 动态污点分析和动态符号执行 | 第31-52页 |
3.1 问题归约 | 第31-32页 |
3.2 中间语言BIL | 第32-39页 |
3.2.1 概述 | 第33-34页 |
3.2.2 操作语义 | 第34-39页 |
3.3 动态符号执行 | 第39-45页 |
3.3.1 之于问题 | 第39页 |
3.3.2 一般解释 | 第39-41页 |
3.3.3 分类 | 第41-42页 |
3.3.4 两个其他要素 | 第42-44页 |
3.3.5 符号执行难点 | 第44-45页 |
3.4 动态污点分析 | 第45-50页 |
3.4.1 污点分析策略 | 第45-49页 |
3.4.2 问题 | 第49-50页 |
3.4.3 之于问题 | 第50页 |
3.5 本章小结 | 第50-52页 |
第四章 动态符号执行引擎设计 | 第52-82页 |
4.1 技术依赖 | 第52-55页 |
4.1.1 Pin | 第52-54页 |
4.1.2 Protocol Buffers和Piqi | 第54-55页 |
4.1.3 Z3 | 第55页 |
4.2 总体设计 | 第55-57页 |
4.2.1 总体架构设计 | 第55-56页 |
4.2.2 总体流程设计 | 第56-57页 |
4.3 TLET设计 | 第57-69页 |
4.3.1 轨迹模型设计 | 第57-60页 |
4.3.2 序列化容器设计 | 第60-61页 |
4.3.3 污点分析策略 | 第61-68页 |
4.3.4 插装例程和分析例程 | 第68-69页 |
4.4 DSEE设计 | 第69-81页 |
4.4.1 总体架构设计 | 第69-70页 |
4.4.2 总体流程设计 | 第70-71页 |
4.4.3 翻译成BIL程序 | 第71-74页 |
4.4.4 演算器Evalutor | 第74-77页 |
4.4.5 搜索策略 | 第77-80页 |
4.4.6 性能优化 | 第80-81页 |
4.5 本章小结 | 第81-82页 |
第五章 测试和验证 | 第82-93页 |
5.1 DSEE正确性验证 | 第82-85页 |
5.2 改进的搜索算法效果 | 第85-86页 |
5.3 DSEE性能优化措施效果 | 第86-87页 |
5.4 DSEE应用于栈溢出漏洞利用自动生成 | 第87-92页 |
5.4.1 栈缓冲区溢出漏洞 | 第87-89页 |
5.4.2 问题归约 | 第89页 |
5.4.3 测试 | 第89-92页 |
5.5 本章小结 | 第92-93页 |
第六章 总结和展望 | 第93-96页 |
6.1 总结 | 第93-95页 |
6.2 展望 | 第95-96页 |
参考文献 | 第96-100页 |
攻硕期间取得的成果 | 第100-101页 |
致谢 | 第101页 |