摘要 | 第4-6页 |
Abstract | 第6-7页 |
第一章 绪论 | 第13-17页 |
1.1 引言 | 第13-14页 |
1.2 论文主要工作 | 第14-15页 |
1.3 论文框架结构 | 第15-17页 |
第二章 相关工作 | 第17-37页 |
2.1 代码复用攻击 | 第17-22页 |
2.1.1 程序栈的栈帧布局 | 第17-19页 |
2.1.2 return-into-libc | 第19-20页 |
2.1.3 ROP | 第20-21页 |
2.1.4 JOP | 第21-22页 |
2.2 运行前随机化方法 | 第22-29页 |
2.2.1 粗粒度随机化方法 | 第22-25页 |
2.2.2 细粒度随机化方法 | 第25-28页 |
2.2.3 两种方法的对比 | 第28-29页 |
2.3 内存信息泄露 | 第29-33页 |
2.3.1 内存信息泄露原理与方式 | 第30页 |
2.3.2 内存信息泄露的实例分析 | 第30-33页 |
2.4 运行中随机化防御 | 第33-35页 |
2.5 本章小结 | 第35-37页 |
第三章 运行中随机化 | 第37-45页 |
3.1 运行中随机化整体结构 | 第37页 |
3.2 指针分析 | 第37-40页 |
3.2.1 基于程序源代码的分析 | 第38-39页 |
3.2.2 基于二进制代码的分析 | 第39-40页 |
3.3 随机化触发条件的选取 | 第40-42页 |
3.3.1 基于时间的随机化 | 第41页 |
3.3.2 基于风险的随机化 | 第41-42页 |
3.4 随机化操作 | 第42-44页 |
3.4.1 地址空间重映射 | 第42-43页 |
3.4.2 指针更新 | 第43页 |
3.4.3 随机化模块 | 第43-44页 |
3.5 本章小结 | 第44-45页 |
第四章 运行中随机化方法分析与改进 | 第45-52页 |
4.1 攻击模型 | 第45-46页 |
4.2 TASR方法原理分析 | 第46-48页 |
4.3 TASR的不足与改进 | 第48-51页 |
4.4 本章小结 | 第51-52页 |
第五章 设计与实现 | 第52-56页 |
5.1 安全敏感区域的分析 | 第52-54页 |
5.1.1 辅助信息提取 | 第52-53页 |
5.1.2 安全敏感区域地址确定 | 第53页 |
5.1.3 安全敏感区域的动态添加 | 第53-54页 |
5.1.4 安全敏感区域的动态删除 | 第54页 |
5.2 运行时检查 | 第54-55页 |
5.3 编译时细粒度随机化的引入 | 第55页 |
5.4 本章小结 | 第55-56页 |
第六章 测试与评价 | 第56-63页 |
6.1 安全性评价 | 第56-58页 |
6.1.1 TASR的防御思路 | 第56页 |
6.1.2 改进方法的防御思路 | 第56-57页 |
6.1.3 对现实攻击的防御 | 第57页 |
6.1.4 安全性总结 | 第57-58页 |
6.2 性能评价 | 第58-62页 |
6.2.1 IO密集时write/read的配对情况 | 第58-59页 |
6.2.2 TASR引入的大量性能损失 | 第59-61页 |
6.2.3 改进方法的性能开销 | 第61-62页 |
6.2.4 性能总结 | 第62页 |
6.3 本章小结 | 第62-63页 |
第七章 总结与展望 | 第63-65页 |
7.1 论文总结 | 第63-64页 |
7.2 未来工作 | 第64-65页 |
参考文献 | 第65-69页 |
攻读硕士学位期间参与的科研项目 | 第69页 |
攻读硕士学位期间的研究成果 | 第69-70页 |
致谢 | 第70-71页 |