动态符号执行中程序插桩的研究与实现
摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
缩略语对照表 | 第11-14页 |
第一章 绪论 | 第14-20页 |
1.1 研究背景及意义 | 第14-15页 |
1.2 国内外研究现状 | 第15-18页 |
1.2.1 动态符号执行现状 | 第15-17页 |
1.2.2 插桩技术现状 | 第17-18页 |
1.3 论文主要工作 | 第18页 |
1.4 本论文的章节安排 | 第18-20页 |
第二章 动态符号执行研究 | 第20-26页 |
2.1 符号执行 | 第20-21页 |
2.2 动态符号执行 | 第21-25页 |
2.2.1 基本思想 | 第22页 |
2.2.2 动态符号执行的方式 | 第22-23页 |
2.2.3 基本算法 | 第23页 |
2.2.4 约束求解 | 第23-24页 |
2.2.5 路径选择策略 | 第24页 |
2.2.6 存在问题 | 第24-25页 |
2.3 本章小结 | 第25-26页 |
第三章 程序插桩研究 | 第26-36页 |
3.1 插桩分类 | 第26-27页 |
3.2 插桩目的 | 第27页 |
3.3 插桩模型 | 第27-28页 |
3.4 插桩基础 | 第28-35页 |
3.4.1 LLVM IR语言 | 第28-32页 |
3.4.2 Flex和Bison | 第32-33页 |
3.4.3 动态链接库 | 第33-35页 |
3.5 本章小结 | 第35-36页 |
第四章 动态符号执行中程序插桩的设计与实现 | 第36-62页 |
4.1 动态符号执行框架 | 第36-37页 |
4.2 LLVM IR词法语法分析 | 第37-40页 |
4.2.1 词法分析 | 第37-38页 |
4.2.2 语法分析 | 第38-40页 |
4.3 静态CFG设计 | 第40-46页 |
4.3.2 LLVM IR程序CFG | 第41-43页 |
4.3.3 函数调用CFG | 第43-46页 |
4.4 插桩设计 | 第46-50页 |
4.4.1 插桩框架 | 第47-48页 |
4.4.2 插桩规则 | 第48-49页 |
4.4.3 插桩位置 | 第49-50页 |
4.5 插桩函数设计 | 第50-59页 |
4.5.1 内存访问语句 | 第51-54页 |
4.5.2 二元操作语句 | 第54-55页 |
4.5.3 scanf语句 | 第55-56页 |
4.5.4 函数调用 | 第56-57页 |
4.5.5 比较语句 | 第57-59页 |
4.6 本章小结 | 第59-62页 |
第五章 实验与分析 | 第62-78页 |
5.1 简单程序插桩分析 | 第62-65页 |
5.2 复杂结构程序插桩分析 | 第65-71页 |
5.2.1 含数组程序插桩分析 | 第65-69页 |
5.2.2 含结构体程序插桩分析 | 第69-71页 |
5.3 冒泡排序实例插桩分析 | 第71-76页 |
5.4 本章小结 | 第76-78页 |
第六章 总结与展望 | 第78-80页 |
6.1 总结 | 第78页 |
6.2 展望 | 第78-80页 |
参考文献 | 第80-82页 |
致谢 | 第82-84页 |
作者简介 | 第84-85页 |