基于定制化规则的安全分析工具研究与实现
| 摘要 | 第5-6页 |
| ABSTRACT | 第6-7页 |
| 符号对照表 | 第10-11页 |
| 缩略语对照表 | 第11-15页 |
| 第一章 绪论 | 第15-19页 |
| 1.1 项目背景及意义 | 第15-16页 |
| 1.1.1 C程序安全概况 | 第15页 |
| 1.1.2 项目背景 | 第15页 |
| 1.1.3 程序分析和静态检查 | 第15-16页 |
| 1.2 本文工作及内容组织 | 第16-19页 |
| 1.2.1 本文的工作 | 第16-17页 |
| 1.2.2 本文的内容组织 | 第17-19页 |
| 第二章 相关技术概述 | 第19-23页 |
| 2.1 相关技术简介 | 第19-21页 |
| 2.1.1 ANTLR的简介 | 第19页 |
| 2.1.2 ANTLR的功能说明 | 第19-20页 |
| 2.1.3 符号表 | 第20页 |
| 2.1.4 控制流图 | 第20-21页 |
| 2.2 项目关键技术概述 | 第21页 |
| 2.2.1 数据流分析 | 第21页 |
| 2.2.2 抽象语法树 | 第21页 |
| 2.3 本章小结 | 第21-23页 |
| 第三章 安全分析工具需求分析 | 第23-33页 |
| 3.1 功能性需求 | 第23-31页 |
| 3.1.1 与指针操作相关的程序漏洞 | 第23-24页 |
| 3.1.2 与函数调用配对相关的安全漏洞 | 第24-26页 |
| 3.1.3 与类型匹配相关的安全漏洞 | 第26-27页 |
| 3.1.4 C标准库中的危险函数 | 第27-31页 |
| 3.2 非功能性需求 | 第31-32页 |
| 3.2.1 检测覆盖率需求 | 第31页 |
| 3.2.2 性能需求 | 第31-32页 |
| 3.3 本章小结 | 第32-33页 |
| 第四章 安全分析工具的设计与实现 | 第33-61页 |
| 4.1 项目总体框架概述 | 第33-34页 |
| 4.2 安全分析工具总体设计 | 第34-36页 |
| 4.3 安全规则描述语言及解析器设计 | 第36-46页 |
| 4.3.1 安全规则描述语言的相关概念 | 第36-37页 |
| 4.3.2 安全规则描述语言的设计 | 第37-39页 |
| 4.3.3 安全规则解析器的设计 | 第39-43页 |
| 4.3.4 安全规则解析器数据结构 | 第43-46页 |
| 4.4 模式匹配检查器的设计与实现 | 第46-51页 |
| 4.4.2 函数调用匹配 | 第47-48页 |
| 4.4.3 数组引用匹配 | 第48页 |
| 4.4.4 一元运算符匹配 | 第48-49页 |
| 4.4.5 二元运算符匹配 | 第49-50页 |
| 4.4.6 逻辑与、逻辑或运算符匹配 | 第50-51页 |
| 4.5 状态转移控制器的设计与实现 | 第51-60页 |
| 4.5.1 状态转移控制器的总体设计 | 第51-52页 |
| 4.5.2 表达式结构的匹配框架 | 第52-55页 |
| 4.5.3 符号表设计 | 第55-56页 |
| 4.5.4 状态机状态类设计 | 第56-57页 |
| 4.5.5 状态转移控制算法 | 第57-60页 |
| 4.6 本章小结 | 第60-61页 |
| 第五章 安全分析工具测试及分析 | 第61-65页 |
| 5.1 系统运行环境 | 第61页 |
| 5.2 功能测试 | 第61-64页 |
| 5.3 本章小结 | 第64-65页 |
| 第六章 总结与展望 | 第65-67页 |
| 参考文献 | 第67-69页 |
| 致谢 | 第69-71页 |
| 作者简介 | 第71-73页 |
| 附录A 测试用例说明 | 第73-80页 |
| 1 数组下标检查用例 | 第73-75页 |
| 2 资源泄漏检查用例 | 第75-78页 |
| 3 C标准库中的危险函数用例 | 第78-79页 |
| 4 与类型匹配相关的安全漏洞用例 | 第79-80页 |