声明
摘要
第1章 绪论
1.1 研究背景
1.1.1 C程序的安全性
1.1.2 程序静态分析
1.1.3 规范语言
1.2 本文概述
1.2.1 研究工作
1.2.2 主要贡献
1.2.3 章节安排
第2章 ShapeChecker简介
2.1 ShapeChecker总体框架
2.2 编译框架LLVM
2.2.1 LLVM总体结构
2.2.2 LLVM IR简介
2.3 符号执行
2.3.1 符号执行算法
2.3.2 符号执行面临的问题
2.4 本章小结
第3章 规范语言的设计
3.1 ACSL简介
3.2 IRSL规范语言
3.2.1 断言语言
3.2.2 形状谓词
3.2.3 函数规范
3.3 函数行为规范的构建
3.3.1 程序状态
3.3.2 行为规范的构建过程
3.4 支持的C标准库函数
3.4.1 malloc()函数行为规范
3.4.2 free()函数行为规范
3.4.3 strcat()函数行为规范
3.5 本章小结
第4章 规范化和抽象化
4.1 规范化
4.2 抽象化
4.2.1 单链表表段的抽象规则
4.2.2 双链表表段的抽象规则
4.2.3 二叉树的抽象规则
4.2.4 数组谓词的抽象
4.3 本章小结
第5章 实例分析
5.1 一维数组程序示例
5.1.1 函数行为规范
5.1.2 抽象化和规范化操作
5.2 单链表的程序示例
5.2.1 函数行为规范
5.2.2 抽象化操作
5.2.3 规范化操作
5.2.4 错误检测
5.3 双链表的程序示例
5.3.1 函数行为规范
5.3.2 抽象化操作
5.3.3 规范化操作
5.4 调用C库函数的程序示例
5.5 本章小结
第6章 实现及实验结果
6.1 实现工作
6.2 实验结果
6.3 本章小结
第7章 结束语
7.1 论文工作总结
7.2 进一步研究方向
参考文献
致谢
在读期间发表的学术论文与取得的研究成果