动态符号执行辅助的fuzzing技术的研究与实现
摘要 | 第5-6页 |
ABSTRACT | 第6页 |
第一章 绪论 | 第10-16页 |
1.1 研究背景和意义 | 第10-11页 |
1.1.1 研究方向的选择 | 第10页 |
1.1.2 目标程序的选择 | 第10-11页 |
1.2 研究现状 | 第11-14页 |
1.2.1 KleeFL | 第11-12页 |
1.2.2 TaintScope | 第12页 |
1.2.3 Driller | 第12-13页 |
1.2.4 Syzkaller | 第13页 |
1.2.5 LibFuzzer | 第13-14页 |
1.3 研究内容 | 第14页 |
1.4 本文工作和成果 | 第14-15页 |
1.5 本文结构 | 第15-16页 |
第二章 背景知识 | 第16-23页 |
2.1 Fuzzing | 第16-19页 |
2.1.1 Fuzzing概述 | 第16-17页 |
2.1.2 基于变异和语法的fuzzing | 第17页 |
2.1.3 黑盒、白盒和灰盒fuzzing | 第17-18页 |
2.1.4 AFL | 第18-19页 |
2.2 符号执行 | 第19-20页 |
2.2.1 符号执行概述 | 第19页 |
2.2.2 静态和动态符号执行 | 第19-20页 |
2.2.3 Angr | 第20页 |
2.3 代码插桩 | 第20-23页 |
2.3.1 代码插桩概述 | 第20-21页 |
2.3.2 代码插桩的设计 | 第21页 |
2.3.3 代码插桩的应用场景 | 第21页 |
2.3.4 DynamoRIO | 第21-23页 |
第三章 问题详述 | 第23-26页 |
3.1 问题原因分析 | 第23-24页 |
3.2 实例分析 | 第24-26页 |
第四章 系统设计 | 第26-34页 |
4.1 解决方案及算法 | 第26-27页 |
4.2 系统架构 | 第27-32页 |
4.2.1 调度模块 | 第29-30页 |
4.2.2 FUZZING模块 | 第30-31页 |
4.2.3 动态符号执行模块 | 第31-32页 |
4.3 系统流程 | 第32-34页 |
第五章 系统实现 | 第34-39页 |
5.1 工具选取 | 第34页 |
5.2 关键技术 | 第34-39页 |
5.2.1 AFL与DynamoRIO的结合 | 第35-36页 |
5.2.2 C与Python的结合 | 第36-39页 |
第六章 实验评估 | 第39-46页 |
6.1 评估指标 | 第39页 |
6.1.1 覆盖率 | 第39页 |
6.1.2 程序错误 | 第39页 |
6.2 测试对象 | 第39-40页 |
6.2.1 示例程序 | 第39-40页 |
6.2.2 coreutils工具集 | 第40页 |
6.2.3 实际应用程序 | 第40页 |
6.3 结果及分析 | 第40-46页 |
6.3.1 实验1 | 第40-41页 |
6.3.2 实验2 | 第41-42页 |
6.3.3 实验3 | 第42-44页 |
6.3.4 实验4 | 第44-46页 |
第七章 总结与展望 | 第46-47页 |
7.1 工作总结 | 第46页 |
7.2 工作展望 | 第46-47页 |
参考文献 | 第47-51页 |
致谢 | 第51-52页 |
攻读学位期间发表的学术论文目录 | 第52页 |