学位论文 > 优秀研究生学位论文题录展示

基于符号执行的C程序单元测试研究与实现

作 者: 翁子盛
导 师: 王宝生
学 校: 国防科学技术大学
专 业: 计算机技术
关键词: 单元测试 符号执行 Phoenix 代码安全性
分类号: TP311.52
类 型: 硕士论文
年 份: 2010年
下 载: 196次
引 用: 3次
阅 读: 论文下载
 

内容摘要


软件的安全性越来越受到业界的重视,本文从源代码的单元测试出发,研究如何通过单元测试来检测出代码中的潜在漏洞,提高代码的安全性。采用的是静态符号执行和约束求解的方法。在Phoenix的编译架构上,以Phoenix的IR为直接分析对象,实现了一个Phoenix IR的虚拟执行机,该虚拟执行机结合约束求解产生正常的单元测试例输入和触发潜在缺陷的测试例输入。符号执行是路径敏感的分析方法,分析精度高,但时间空间消耗较大,是作为单元测试的一种很好的方法。本文实现了对C语言的分析,能很好地对C语言中的指针、结构体、多维数组等复杂结构的代码进行符号执行建模分析。本文实现的工具CUTG支持程序的过程间分析,采用模拟Phoenix编译器C2后端的方法构建一个程序全局分析基础。使用符号表达式树作为符号执行时符号运算的存储结构。CUTG采用传统的深度优先路径遍历方法对被测代码的路径空间进行遍历。CUTG主要检测的漏洞类型为缓冲区溢出漏洞,缓冲区溢出是一种危害性很大、检测难度高的漏洞类型。同时本系统还能检测空指针解引用和除零错误这两种简单类型的缺陷。由于Phoenix的IR指令集规模很大,CUTG只实现了其中一部分的指令建模,因此CUTG的分析能力有待进一步完善。本文最后以一个典型的例子进行实验,能很好地检测出漏洞并产生测试输入。同时对wget的源代码进行实验分析,说明该工具能对万行级的代码进行分析,并能给出具有指导价值的分析结果。

全文目录


摘要  8-9
ABSTRACT  9-10
第一章 绪论  10-15
  1.1 论文研究背景、研究内容及意义  10-11
  1.2 研究现状与发展趋势  11-13
  1.3 论文主要成果和论文结构安排  13-14
    1.3.1 论文主要成果  13
    1.3.2 论文章节安排  13-14
  1.4 小结  14-15
第二章 静态分析基础理论  15-27
  2.1 格  15-16
  2.2 数据流分析  16-19
    2.2.1 控制流图  17
    2.2.2 数据流分析基本原理  17
    2.2.3 数据流分析示例  17-19
  2.3 加宽和收缩算子  19-21
  2.4 条件约束断言添加  21-22
  2.5 符号执行分析  22-26
    2.5.1 过程内分析  22-25
    2.5.2 过程间分析  25-26
  2.6 小结  26-27
第三章 基于符号执行的单元测试数据自动生成方法  27-32
  3.1 缓冲区溢出安全约束  27-29
    3.1.1 缓冲区溢出  27-29
    3.1.2 缓冲区溢出安全约束  29
  3.2 基于符号执行和约束求解的测试数据自动生成  29-31
  3.3 小结  31-32
第四章 CUTG 系统设计与实现  32-60
  4.1 体系结构设计  32-34
  4.2 Phoenix 编译架构  34-41
    4.2.1 分析对象  34-35
    4.2.2 Phoenix 基本原理  35-40
    4.2.3 构建系统全局分析架构  40-41
  4.3 IR 指令符号执行机模块  41-55
    4.3.1 IR 指令符号执行机的功能描述  41-43
    4.3.2 IR 指令符号执行机模型的设计  43-44
    4.3.3 指令操作数语义解释  44-52
    4.3.4 指令操作码语义解释  52-55
  4.4 符号执行路径调度模块  55-57
    4.4.1 功能描述  55
    4.4.2 功能实现  55-57
  4.5 安全约束管理及约束求解器  57-58
    4.5.1 功能描述  57-58
    4.5.2 功能实现  58
  4.6 小结  58-60
第五章 实验结果分析  60-69
  5.1 典型代码示例实验  60-65
  5.2 wget 代码分析实验  65-67
  5.3 小结  67-69
结束语  69-70
致谢  70-71
参考文献  71-74
作者在学期间取得的学术成果  74

相似论文

  1. 自动化单元测试中MOCK技术的研究与应用,TP311.52
  2. 工业嵌入式智能仪表软件测试技术的研究,TP311.52
  3. 基于二进制代码的动态符号执行工具,TP309
  4. 基于动态符号执行的代码分析工具的研究,TP309
  5. 软件优化技术在软件开发项目中的应用研究,TP311.52
  6. 单元测试方法及其在某制纸工厂作业管理系统中的应用研究,TP311.52
  7. 矿浆流量、浓度、粒度实时在线一体检测仪表研究与设计,TH83
  8. 基于Spring框架的MVC控制器的优化与改进,TP393.09
  9. 基于MapReduce的并行决策树分类算法研究与实现,TP311.13
  10. 二进制代码安全性分析,TP311.1
  11. 版本间语义分析制导的程序逆向静态分析,TP311.53
  12. 自动化测试在大型软件系统的应用与研究,TP311.52
  13. 面向对象的软件测试方案研究,TP311.52
  14. WCDMA物理层在终端固件中的实现及测试,TN929.533
  15. GDX2包装机PLC控制系统改造,TP273
  16. Java EE应用程序测试的研究与应用,TP312.2
  17. 面向符号执行的内存模型研究,TP333.1
  18. 飞行控制软件单元测试的实施,TP311.52
  19. 基于PyUnit框架的企业级软件自动化测试技术的研究,TP311.52
  20. 自动化单元测试录制框架的研究与实现,TP311.52
  21. 基于三层体系结构的软件全程自动化测试研究与实现,TP311.52

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序设计、软件工程 > 软件工程 > 软件开发
© 2012 www.xueweilunwen.com