基于编译器的内核控制流程细粒度保护系统
摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
缩略语对照表 | 第10-13页 |
第一章 绪论 | 第13-17页 |
1.1 研究背景 | 第13-15页 |
1.2 论文主要工作 | 第15-16页 |
1.3 论文的组织结构 | 第16-17页 |
第二章 相关研究工作与背景技术 | 第17-29页 |
2.1 相关研究工作 | 第17-19页 |
2.1.1 内核非控制数据的保护 | 第17-18页 |
2.1.2 内核控制数据及控制流程分析 | 第18-19页 |
2.2 相关背景技术 | 第19-23页 |
2.2.1 Linux | 第19-20页 |
2.2.2 LLVM | 第20-21页 |
2.2.3 GCC | 第21-22页 |
2.2.4 KVM、QEMU和DDD | 第22-23页 |
2.3 LLVM编译器IR基本语法 | 第23-24页 |
2.4 LLVM编译器IR部分基本操作 | 第24-26页 |
2.5 LLVM编译器PASS设计 | 第26-27页 |
2.6 本章小结 | 第27-29页 |
第三章 系统保护方案设计与关键技术 | 第29-41页 |
3.1 保护方案工作原理与功能说明 | 第29页 |
3.2 系统总体设计方案及关键技术 | 第29-40页 |
3.2.1 系统总体设计方案 | 第29-32页 |
3.2.2 细粒度内核控制流程图获取 | 第32-36页 |
3.2.3 跳转表格构建 | 第36-38页 |
3.2.4 细粒度控制数据索引和重定向 | 第38-40页 |
3.3 本章小结 | 第40-41页 |
第四章 原型系统实现 | 第41-49页 |
4.1 原型系统实现环境 | 第41-42页 |
4.2 GCC部分 | 第42-44页 |
4.2.1 GCC源代码介绍 | 第42页 |
4.2.2 GCC源代码修改 | 第42-43页 |
4.2.3 Linux内核源代码修改 | 第43-44页 |
4.3 LLVM模块构建实现获取内核控制流程图 | 第44-46页 |
4.4 返回地址表和函数地址表的构建 | 第46-48页 |
4.4.1 构造函数地址表 | 第46页 |
4.4.2 构造返回地址表 | 第46-48页 |
4.5 本章小结 | 第48-49页 |
第五章 原型系统测试 | 第49-55页 |
5.1 性能损耗测试 | 第49-50页 |
5.2 系统攻击测试 | 第50-54页 |
5.3 原型系统讨论 | 第54页 |
5.4 本章小结 | 第54-55页 |
第六章 研究总结与展望 | 第55-57页 |
6.1 论文工作总结 | 第55页 |
6.2 下一步工作展望 | 第55-56页 |
6.3 本章小结 | 第56-57页 |
参考文献 | 第57-61页 |
致谢 | 第61-63页 |
作者简介 | 第63-64页 |