基于符号执行的代码安全检查技术研究与实现
摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第一章 绪论 | 第11-20页 |
1.1 研究背景 | 第11-12页 |
1.2 研究的目的和意义 | 第12页 |
1.3 符号执行研究现状 | 第12-14页 |
1.3.1 广义符号执行 | 第12-13页 |
1.3.2 并行符号执行 | 第13页 |
1.3.3 动态符号执行 | 第13-14页 |
1.4 相关技术和研究 | 第14-16页 |
1.5 研究内容 | 第16-18页 |
1.6 组织结构 | 第18-20页 |
第二章 符号执行概述 | 第20-25页 |
2.1 符号执行简介 | 第20-21页 |
2.2 约束求解器简介 | 第21-22页 |
2.3 符号执行面临的挑战 | 第22-24页 |
2.3.1 执行路径空间爆炸问题 | 第22-23页 |
2.3.2 高效约束求解器实现问题 | 第23页 |
2.3.3 复杂数据类型的建模问题 | 第23页 |
2.3.4 面向多线程环境问题的符号执行 | 第23-24页 |
2.4 本章小结 | 第24-25页 |
第三章 动态符号执行的优化研究 | 第25-41页 |
3.1 缓解路径爆炸的优化 | 第25-31页 |
3.1.1 函数摘要思想 | 第25-27页 |
3.1.2 基于CFG的执行状态选择算法 | 第27-31页 |
3.2 基于无用函数分析的优化 | 第31-37页 |
3.2.1 死代码消除 | 第31-33页 |
3.2.2 无用函数消除 | 第33-37页 |
3.3 内存模型的改进 | 第37-40页 |
3.3.1 常见的内存模型 | 第38页 |
3.3.2 基于数组模型的改进 | 第38-39页 |
3.3.3 内存模型实例 | 第39-40页 |
3.4 本章小结 | 第40-41页 |
第四章 系统实现 | 第41-65页 |
4.1 总体架构 | 第41-43页 |
4.2 bitcode优化模块 | 第43-46页 |
4.2.1 bitcode优化模块主要功能 | 第43页 |
4.2.2 bitcode优化模块的实现 | 第43-46页 |
4.3 语义解释器模块 | 第46-50页 |
4.3.1 语义解释器主要功能 | 第46-47页 |
4.3.2 语义解释器模块的实现 | 第47-50页 |
4.4 执行状态选择模块 | 第50-54页 |
4.4.1 执行状态选择模块主要功能 | 第50页 |
4.4.2 执行状态分支的实现 | 第50-52页 |
4.4.3 执行状态选择的实现 | 第52-54页 |
4.5 内存模型模块 | 第54-57页 |
4.5.1 内存模型模块主要功能 | 第54页 |
4.5.2 内存对象的实现 | 第54-56页 |
4.5.3 栈结构的实现 | 第56-57页 |
4.6 安全缺陷检查模块 | 第57-64页 |
4.6.1 内存安全检查的实现 | 第58-62页 |
4.6.2 整形溢出检查的实现 | 第62-63页 |
4.6.3 除0错误检查的实现 | 第63-64页 |
4.7 本章小结 | 第64-65页 |
第五章 实验与结论 | 第65-76页 |
5.1 实验说明 | 第65-66页 |
5.2 实验环境 | 第66页 |
5.3 安全缺陷检查实验 | 第66-71页 |
5.3.1 测试用例说明 | 第66-69页 |
5.3.2 内存越界问题 | 第69-70页 |
5.3.3 访问野指针问题 | 第70页 |
5.3.4 内存泄露问题 | 第70-71页 |
5.3.5 内存指针的二次释放问题 | 第71页 |
5.4 无用函数分析实验 | 第71-73页 |
5.5 执行状态选择算法实验 | 第73-75页 |
5.6 实验总结 | 第75-76页 |
第六章 总结与展望 | 第76-78页 |
6.1 本文总结 | 第76页 |
6.2 展望 | 第76-78页 |
致谢 | 第78-79页 |
参考文献 | 第79-82页 |
攻读硕士期间的研究成果 | 第82-83页 |