摘要 | 第3-4页 |
ABSTRACT | 第4页 |
第一章 缓冲区溢出原理 | 第8-12页 |
1.1 缓冲区溢出漏洞现状 | 第8-9页 |
1.2 缓冲区溢出的攻击原理 | 第9-12页 |
1.2.1 缓冲区溢出 | 第9-10页 |
1.2.2 利用缓冲区溢出进行攻击 | 第10-12页 |
第二章 缓冲区溢出分类及其研究 | 第12-27页 |
2.1 基于堆栈的溢出研究 | 第12-15页 |
2.2 基于堆和BSS 的溢出研究 | 第15-22页 |
2.3 格式化字符串漏洞研究 | 第22-25页 |
2.4 RETURNING INTO LIBC | 第25-27页 |
第三章 缓冲区溢出漏洞防范和检测技术的研究 | 第27-34页 |
3.1 WAGNER 方法 | 第27-30页 |
3.1.1 约束语言和生成约束 | 第28-30页 |
3.1.2 约束求解 | 第30页 |
3.1.3 Wagner 方法的不足 | 第30页 |
3.2 STACKSHIELD 动态检测 | 第30-31页 |
3.3 二进制环境 | 第31-32页 |
3.4 二进制缓冲区溢出漏洞检测总结 | 第32-34页 |
3.4.1 指针别名问题 | 第32页 |
3.4.2 流程分析问题 | 第32-33页 |
3.4.3 二进制环境的复杂性 | 第33-34页 |
第四章 二进制代码的缓冲区溢出漏洞挖掘模型 | 第34-49页 |
4.1 研究路线 | 第34-35页 |
4.2 中间表示和动态模拟环境 | 第35-36页 |
4.3 函数的栈帧特征分析和缓冲区变量标识 | 第36-38页 |
4.4 程序控制流程分析 | 第38-41页 |
4.4.1 推导算法 | 第39-40页 |
4.4.2 循环结构的识别 | 第40页 |
4.4.3 条件结构的识别 | 第40-41页 |
4.5 函数签名和语义分析 | 第41-49页 |
4.5.1 函数签名 | 第41-42页 |
4.5.2 虚拟参数及其地址空间 | 第42-44页 |
4.5.3 一般函数的签名 | 第44-46页 |
4.5.4 语义分析 | 第46-49页 |
第五章 具体设计 | 第49-61页 |
5.1 总体设计 | 第49页 |
5.2 文件分析模块 | 第49-54页 |
5.2.1 elf 文件解析 | 第50页 |
5.2.2 重构文件映像 | 第50-51页 |
5.2.3 函数的栈帧结构分析 | 第51-52页 |
5.2.4 函数中的基本块分析 | 第52-54页 |
5.3 虚拟执行环境模块 | 第54-60页 |
5.3.1 x86 指令系统 | 第54页 |
5.3.2 抽象操作数 | 第54-55页 |
5.3.3 抽象指令 | 第55-57页 |
5.3.4 抽象指令集和虚拟执行引擎 | 第57-59页 |
5.3.5 内存全虚拟与库函数调用 | 第59-60页 |
5.4 程序流程分析模块,函数签名和语义分析模块 | 第60-61页 |
第六章 实验结果与模型评价展望 | 第61-65页 |
6.1 实验结果 | 第61-63页 |
6.1.1 小型测试例子 | 第61-62页 |
6.1.2 sendmai18.7.5 中的缓冲区溢出漏洞 | 第62-63页 |
6.2 模型的评价与未来的工作 | 第63-65页 |
参考文献 | 第65-66页 |
致谢 | 第66-67页 |
攻读硕士学位期间已发表或录用的论文 | 第67-69页 |