| 摘要 | 第5-6页 |
| Abstract | 第6页 |
| 第1章 绪论 | 第12-18页 |
| 1.1 研究背景和意义 | 第12-13页 |
| 1.2 国内外研究现状 | 第13-15页 |
| 1.2.1 静态防御技术 | 第13-14页 |
| 1.2.2 动态防御技术 | 第14-15页 |
| 1.3 目前问题 | 第15页 |
| 1.4 本文贡献 | 第15页 |
| 1.5 本文结构 | 第15-18页 |
| 第2章 软件漏洞利用相关技术 | 第18-30页 |
| 2.1 缓冲区溢出原理简介 | 第18-19页 |
| 2.2 溢出漏洞分类 | 第19-28页 |
| 2.2.1 栈溢出原理 | 第19-20页 |
| 2.2.2 堆溢出 | 第20-23页 |
| 2.2.3 格式化字符串漏洞 | 第23-25页 |
| 2.2.4 利用GOT表攻击 | 第25页 |
| 2.2.5 使用ROP进行攻击 | 第25页 |
| 2.2.6 整数溢出 | 第25-27页 |
| 2.2.7 Use-after-free攻击 | 第27页 |
| 2.2.8 利用atexit攻击 | 第27-28页 |
| 2.3 本章小结 | 第28-30页 |
| 第3章 恶意代码防御技术研究 | 第30-38页 |
| 3.1 Pin动态插桩平台介绍 | 第30-31页 |
| 3.2 研究动机 | 第31页 |
| 3.3 基于指令白名单的检测方法 | 第31-32页 |
| 3.4 指令白名单的确定 | 第32-34页 |
| 3.5 流程监控方法 | 第34页 |
| 3.6 插桩功能实现 | 第34-35页 |
| 3.7 其他可信代码段 | 第35-37页 |
| 3.8 本章小结 | 第37-38页 |
| 第4章 ROP攻击防御技术研究 | 第38-46页 |
| 4.1 ROP攻击原理 | 第38-39页 |
| 4.2 基于返回地址特征的ROP攻击检测方法ROPDetector | 第39-40页 |
| 4.3 CALL指令匹配方法 | 第40-41页 |
| 4.4 ROP攻击检测流程 | 第41-42页 |
| 4.5 其他ROP攻击动态检测方法 | 第42-43页 |
| 4.5.1 利用影子栈进行检测 | 第42-43页 |
| 4.5.2 通过检测连续ret数目 | 第43页 |
| 4.6 与其他ROP检测方法比较 | 第43-45页 |
| 4.6.1 与影子栈方法的比较 | 第43-44页 |
| 4.6.2 与检测连续ret数目方法的比较 | 第44-45页 |
| 4.7 本章小结 | 第45-46页 |
| 第5章 全局偏移表监控方法研究 | 第46-58页 |
| 5.1 全局偏移表概述 | 第46-47页 |
| 5.2 全局偏移表防御方法 | 第47页 |
| 5.3 全局偏移表的更新 | 第47页 |
| 5.4 全局偏移表的工作原理 | 第47-50页 |
| 5.4.1 外部函数首次调用 | 第48-50页 |
| 5.4.2 外部函数再次调用 | 第50页 |
| 5.5 全局偏移表监控的思路 | 第50-52页 |
| 5.5.1. got.plt表的初始化 | 第51页 |
| 5.5.2. got.plt表的更新 | 第51-52页 |
| 5.5.3. got.plt表的比较 | 第52页 |
| 5.6 全局偏移表监控的实现 | 第52-56页 |
| 5.6.1. got.plt表的初始化 | 第52-53页 |
| 5.6.2. got.plt表的更新 | 第53-56页 |
| 5.7 全局偏移表的检测 | 第56-57页 |
| 5.8 本章小结 | 第57-58页 |
| 第6章 基于动态插桩技术的攻击阻断工具设计 | 第58-64页 |
| 6.1 设计目的 | 第58页 |
| 6.2 总体结构 | 第58-59页 |
| 6.3 运行前分析阶段 | 第59-60页 |
| 6.3.1 对关键指令及过程进行插桩 | 第59-60页 |
| 6.3.2 收集模块工作必需的信息 | 第60页 |
| 6.4 运行检测阶段 | 第60-61页 |
| 6.4.1 白名单检测流程 | 第60页 |
| 6.4.2 ROP攻击检测流程 | 第60-61页 |
| 6.4.3 GOT表检测流程 | 第61页 |
| 6.4.4 子程序检测流程 | 第61页 |
| 6.5 子程序监控模块 | 第61-63页 |
| 6.5.1 子程序监控原理 | 第61-62页 |
| 6.5.2 子程序监控的实现 | 第62-63页 |
| 6.6 本章小结 | 第63-64页 |
| 第7章 系统测试与评估 | 第64-72页 |
| 7.1 测试环境 | 第64页 |
| 7.2 功能测试用例 | 第64-68页 |
| 7.2.1 改写函数指针测试程序 | 第64-66页 |
| 7.2.2 利用GOT表攻击的测试程序 | 第66-67页 |
| 7.2.3 ROP攻击的测试程序 | 第67-68页 |
| 7.2.4 子程序运行监控测试 | 第68页 |
| 7.3 ROP攻击代码测试 | 第68-69页 |
| 7.4 ExploitDefender性能评估 | 第69-70页 |
| 7.5 测试结论 | 第70页 |
| 7.6 本章小结 | 第70-72页 |
| 第8章 总结与展望 | 第72-74页 |
| 8.1 本文工作总结 | 第72页 |
| 8.2 技术存在的局限性 | 第72-73页 |
| 8.3 后续展望 | 第73-74页 |
| 参考文献 | 第74-78页 |
| 致谢 | 第78-80页 |
| 攻读硕士学位期间参加的项目及获得的奖励 | 第80页 |