摘要 | 第5-7页 |
ABSTRACT | 第7-8页 |
目录 | 第9-12页 |
第一章 绪论 | 第12-23页 |
1.1 研究背景与意义 | 第12-13页 |
1.1.1 缓冲区溢出及其危害 | 第12-13页 |
1.1.2 课题来源 | 第13页 |
1.2 相关理论与技术基础 | 第13-18页 |
1.2.1 网络攻击 | 第13-14页 |
1.2.2 缓冲区溢出及其攻击 | 第14-16页 |
1.2.3 动态二进制探测 | 第16-17页 |
1.2.4 污点分析 | 第17-18页 |
1.3 国内外研究现状 | 第18-21页 |
1.3.1 动态二进制探测的研究现状 | 第18-19页 |
1.3.2 缓冲区溢出防御的研究现状 | 第19-21页 |
1.4 本课题的研究内容 | 第21-22页 |
1.5 本文的组织结构 | 第22-23页 |
第二章 Crossbit简介 | 第23-31页 |
2.1 项目背景 | 第23-24页 |
2.2 系统概述 | 第24-25页 |
2.3 关键技术 | 第25-29页 |
2.3.1 源代码加载 | 第25-27页 |
2.3.2 内存管理 | 第27-28页 |
2.3.3 中间指令 | 第28-29页 |
2.4 Crossbit性能分析 | 第29-30页 |
2.5 本章小结 | 第30-31页 |
第三章 动态二进制探测框架的设计和实现 | 第31-45页 |
3.1 动态二进制探测框架CrossIF的设计 | 第32-37页 |
3.1.1 设计原则 | 第32页 |
3.1.2 CrossIF架构 | 第32-33页 |
3.1.3 翻译模块的设计 | 第33页 |
3.1.4 代码缓存模块的设计 | 第33-34页 |
3.1.5 优化模块的设计 | 第34页 |
3.1.6 执行模块的设计 | 第34-35页 |
3.1.7 探测模块的设计 | 第35-37页 |
3.2 动态二进制探测框架CrossIF的实现 | 第37-44页 |
3.2.1 翻译模块的实现 | 第37页 |
3.2.2 代码缓存模块的实现 | 第37-38页 |
3.2.3 优化模块的实现 | 第38-39页 |
3.2.4 执行模块的实现 | 第39-40页 |
3.2.5 探测模块的实现 | 第40-44页 |
3.3 本章小结 | 第44-45页 |
第四章 缓冲区溢出防御工具的设计与实现 | 第45-57页 |
4.1 污点分析 | 第45-47页 |
4.1.1 污点分析的防御原理 | 第45页 |
4.1.2 污点分析的优点 | 第45-46页 |
4.1.3 污点分析的缺点 | 第46-47页 |
4.2 污点分析工具BufferSafeTy的设计 | 第47-48页 |
4.2.1 污染源标记 | 第47页 |
4.2.2 污染属性传递 | 第47-48页 |
4.2.3 被污染数据的非法使用 | 第48页 |
4.3 污点分析工具BufferSafeTy的实现 | 第48-56页 |
4.3.1 Initial()接口的实现 | 第48-50页 |
4.3.2 Instrument()接口的实现 | 第50-55页 |
4.3.3 Finish()接口的实现 | 第55-56页 |
4.4 本章小结 | 第56-57页 |
第五章 BufferSafeTy功能分析 | 第57-65页 |
5.1 缓冲区溢出示例程序 | 第57-64页 |
5.1.1 改写函数返回地址 | 第58-60页 |
5.1.2 改写函数指针 | 第60-62页 |
5.1.3 改写长跳转地址 | 第62-64页 |
5.1.4 验证程序比较 | 第64页 |
5.2 BufferSafeTy功能分析 | 第64-65页 |
第六章 结论 | 第65-67页 |
6.1 全文总结 | 第65页 |
6.2 未来工作的展望 | 第65-67页 |
参考文献 | 第67-70页 |
致谢 | 第70-71页 |
工程硕士期间发表论文 | 第71-72页 |
附录 1 栈空间溢出改写函数返回地址程序源代码 | 第72-75页 |
stack_ret_server.c | 第72-73页 |
stack_ret_client.c | 第73-75页 |
附录 2 堆空间溢出改写长跳转地址程序源代码 | 第75-76页 |
longjmp.c | 第75-76页 |