| 摘要 | 第1-4页 |
| Abstract | 第4-8页 |
| 第1章 绪论 | 第8-11页 |
| ·本文的研究内容和意义 | 第9-10页 |
| ·本文的章节组织结构 | 第10页 |
| ·本章小结 | 第10-11页 |
| 第2章 常见的代码安全性分析技术及工具 | 第11-23页 |
| ·源代码分析 | 第11-16页 |
| ·源代码静态分析技术及常见工具 | 第11-13页 |
| ·符号执行和约束求解技术 | 第13-16页 |
| ·二进制代码分析技术及常见工具 | 第16-23页 |
| ·二进制程序静态分析 | 第17-18页 |
| ·二进制代码插装技术及动态分析 | 第18-20页 |
| ·动静结合的二进制分析技术 | 第20-23页 |
| 第3章 二进制静态分析面临的挑战及可行技术 | 第23-44页 |
| ·二进制代码分析及所面临的挑战 | 第23-26页 |
| ·常见的安全性漏洞在二进制代码中的表现 | 第26-32页 |
| ·缓冲区溢出在二进制上的表现 | 第26-29页 |
| ·格式化字符串在二进制上的表现 | 第29-31页 |
| ·指针识别及空指针 | 第31-32页 |
| ·整数溢出 | 第32页 |
| ·动静结合的二进制代码安全分析技术 | 第32-44页 |
| ·静态分析技术在二进制分析中的应用 | 第33-39页 |
| ·动态符号执行技术 | 第39-40页 |
| ·解决路径爆炸问题的尝试 | 第40-44页 |
| 第4章 二进制代码安全性分析原型工具bats | 第44-53页 |
| ·二进制分析中间语言VINE IR | 第44-46页 |
| ·VINE IR 语言类型及语义 | 第44-45页 |
| ·用Vine IR 作为分析语言的好处 | 第45-46页 |
| ·bats 的架构设计 | 第46-48页 |
| ·bats 的详细设计及所采用的技术 | 第48-53页 |
| ·系统内存的模拟 | 第48-49页 |
| ·符号执行器的设计及与STP 的结合 | 第49-50页 |
| ·解析库函数的调用及漏洞模式的使用 | 第50-53页 |
| 第5章 bats 实验及结果 | 第53-59页 |
| ·实验环境及过程 | 第53-57页 |
| ·格式化字符串及除零错误 | 第53-55页 |
| ·堆栈溢出 | 第55-57页 |
| ·试验结果分析 | 第57-59页 |
| 第6章 结论,不足及展望 | 第59-61页 |
| 参考文献 | 第61-63页 |
| 附录 | 第63-67页 |
| 1.实验所用的源代码—格式化字符串和除零错误 | 第63-64页 |
| 2.实验例子反汇编后的汇编代码—格式化字符串和除零错误 | 第64-66页 |
| 3.实验所用的源代码—堆栈溢出 | 第66页 |
| 4.实验例子反汇编后的汇编代码—堆栈溢出 | 第66-67页 |
| 致谢 | 第67-68页 |
| 在读期间发表的学术论文与取得的研究成果 | 第68页 |