基于LLVM框架的非控制数据保护
| 摘要 | 第1-7页 |
| Abstract | 第7-9页 |
| 目录 | 第9-11页 |
| 图表目录 | 第11-13页 |
| 第一章 引言 | 第13-17页 |
| ·研究背景 | 第13-15页 |
| ·本文研究内容 | 第15页 |
| ·论文结构 | 第15-17页 |
| 第二章 相关工作 | 第17-35页 |
| ·攻击方式 | 第17-22页 |
| ·栈溢出 | 第17-19页 |
| ·堆溢出 | 第19-21页 |
| ·格式化溢出 | 第21页 |
| ·小结 | 第21-22页 |
| ·攻击实例 | 第22-26页 |
| ·格式化字符串攻击用户身份数据 | 第22-23页 |
| ·堆溢出攻击配置数据 | 第23-25页 |
| ·栈溢出攻击用户输入数据 | 第25-26页 |
| ·小结 | 第26页 |
| ·防护方式 | 第26-35页 |
| ·内存污点 | 第26-27页 |
| ·动态访问控制 | 第27-29页 |
| ·数据流图 | 第29-30页 |
| ·YARRA | 第30-32页 |
| ·数据随机化 | 第32-33页 |
| ·小结 | 第33-35页 |
| 第三章 LLVM编译系统 | 第35-43页 |
| ·LLVM编译系统结构 | 第35-36页 |
| ·LLVM中间代码 | 第36-40页 |
| ·概要 | 第36-37页 |
| ·内存模型 | 第37-38页 |
| ·函数调用和异常处理 | 第38页 |
| ·代码的表示 | 第38页 |
| ·小结 | 第38-40页 |
| ·PASS | 第40页 |
| ·QEMU | 第40-43页 |
| 第四章 非控制数据的保护机制 | 第43-54页 |
| ·保护机制概要 | 第43-44页 |
| ·指针引用问题 | 第44-48页 |
| ·函数调用 | 第48-50页 |
| ·库函数的处理 | 第50-52页 |
| ·数据结构内的溢出 | 第52-53页 |
| ·本章小结 | 第53-54页 |
| 第五章 非控制数据的保护实现 | 第54-62页 |
| ·实验环境 | 第54页 |
| ·程序逻辑 | 第54-56页 |
| ·防护实验 | 第56-62页 |
| ·栈溢出保护 | 第56-58页 |
| ·格式化溢出保护 | 第58-59页 |
| ·堆溢出保护 | 第59-61页 |
| ·小结 | 第61-62页 |
| 第六章 总结与展望 | 第62-64页 |
| 参考文献 | 第64-68页 |
| 致谢 | 第68-69页 |