动态程序分析平台关键技术研究及应用
摘要 | 第5-6页 |
abstract | 第6页 |
第一章 绪论 | 第10-17页 |
1.1 研究背景及意义 | 第10-11页 |
1.2 国内外研究历史与现状 | 第11-15页 |
1.3 论文研究内容 | 第15-16页 |
1.4 本文结构安排 | 第16-17页 |
第二章 概述 | 第17-24页 |
2.1 软件分析技术概述 | 第17-22页 |
2.1.1 手工分析 | 第17页 |
2.1.2 静态分析技术 | 第17-19页 |
2.1.2.1 基于图的分析 | 第18页 |
2.1.2.2 基于数据模型分析 | 第18-19页 |
2.1.2.3 静态分析的缺陷 | 第19页 |
2.1.3 动态分析技术 | 第19-22页 |
2.1.3.1 模糊测试 | 第19-20页 |
2.1.3.2 动态符号执行 | 第20-22页 |
2.2 软件分析工具 | 第22页 |
2.3 软件分析平台 | 第22-23页 |
2.4 本章小结 | 第23-24页 |
第三章 动态分析平台关键技术 | 第24-32页 |
3.1 解决方案 | 第24页 |
3.2 关键技术 | 第24-31页 |
3.2.1 插桩 | 第24-28页 |
3.2.2 系统调用 | 第28-29页 |
3.2.3 动态链接库 | 第29-30页 |
3.2.4 信号 | 第30页 |
3.2.5 状态及上下文 | 第30-31页 |
3.3 本章小结 | 第31-32页 |
第四章 动态程序分析平台设计与实现 | 第32-48页 |
4.1 背景介绍 | 第32-34页 |
4.1.1 SSA | 第32-33页 |
4.1.2 LLVM | 第33页 |
4.1.3 Pin | 第33-34页 |
4.2 平台概述 | 第34页 |
4.3 动态插桩 | 第34-35页 |
4.4 JIT编译 | 第35-43页 |
4.4.1 基本原理 | 第35页 |
4.4.2 IR中间表示 | 第35-36页 |
4.4.3 基本结构 | 第36-38页 |
4.4.4 语义转换 | 第38-41页 |
4.4.5 特殊转换 | 第41-43页 |
4.4.5.1 无转换指令 | 第42页 |
4.4.5.2 常数指令 | 第42-43页 |
4.4.5.3 复合分支指令 | 第43页 |
4.5 符号引擎 | 第43-47页 |
4.5.1 基本原理 | 第43-44页 |
4.5.2 子寄存器 | 第44-45页 |
4.5.3 临时变量 | 第45-46页 |
4.5.4 自定义扩展 | 第46-47页 |
4.6 代码结构 | 第47页 |
4.7 本章小结 | 第47-48页 |
第五章 基础应用 | 第48-55页 |
5.1 指令统计 | 第48-49页 |
5.2 内存跟踪 | 第49-51页 |
5.3 漏洞检查 | 第51-52页 |
5.4 污点分析 | 第52-54页 |
5.5 本章小结 | 第54-55页 |
第六章 动态符号执行 | 第55-76页 |
6.1 背景概述 | 第55-57页 |
6.1.1 实际执行,符号执行和动态符号执行 | 第55页 |
6.1.2 约束求解 | 第55-56页 |
6.1.3 选择符号执行 | 第56-57页 |
6.1.4 技术阻碍 | 第57页 |
6.2 动态符号执行技术应用 | 第57-63页 |
6.2.1 基本结构 | 第57-60页 |
6.2.2 求解器 | 第60-61页 |
6.2.3 数据模型 | 第61-62页 |
6.2.4 实验及评估 | 第62-63页 |
6.3 并行化符号执行 | 第63-74页 |
6.3.1 背景介绍 | 第64页 |
6.3.2 基本架构 | 第64-69页 |
6.3.2.1 Driver驱动控制程序 | 第66页 |
6.3.2.2 Map子任务 | 第66-68页 |
6.3.2.3 Reduce子任务 | 第68-69页 |
6.3.3 实验及评估 | 第69-74页 |
6.3.3.1 实验环境 | 第69页 |
6.3.3.2 伸缩性实验 | 第69-72页 |
6.3.3.3 资源波动 | 第72-73页 |
6.3.3.4 节点失效 | 第73-74页 |
6.4 本章小结 | 第74-76页 |
第七章 总结与展望 | 第76-78页 |
7.1 全文总结 | 第76页 |
7.2 工作展望 | 第76-78页 |
致谢 | 第78-79页 |
参考文献 | 第79-83页 |
攻硕期间取得的研究成果 | 第83-84页 |