基于符号执行的代码静态检测方法研究与实现

来源 :电子科技大学 | 被引量 : 7次 | 上传用户:han8349
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着软件技术的普及发展,软件系统被应用到我们生活的各个方面,在带来极大便利的同时我们也承受着由软件漏洞所带来的巨大风险。如何有效的保证软件质量是一个极为迫切的需求。在保证软件质量的方法中有两大类,前期可以通过静态分析源代码尽早发现潜在漏洞;后期可以动态运行二进制代码分析实际运行结果。程序的漏洞越早发现其修改成本越小,所以程序静态分析是一种重要的软件质量保证方法。在众多的静态分析方法中,符号执行以其高度的精确性获得了极大关注。符号执行是一种路径敏感上下文相关的分析方法,在计算资源足够充分的情况下它可以对程序进行非常精确地分析,从而发现一些细微的漏洞。然而符号执行理论本身也面临着几大难题,其中包括路径爆炸、约束求解和内存模型。论文首先对近三十年来符号执行技术的发展进行了概述,讨论了符号执行的基本原理和近年提出的一些改进方法。这些改进包括:在测试数据生成方面提出了动态符号执行,它是一种结合具体值和符号值的方法;在路径爆炸抑制方面提出一些启发式搜索策略;在约束求解方面主要提出了无关约束消除和增量式求解。本文紧接着分析讨论了一种非常强大的中间语言LLVM IR,对其语法构成、数据类型及指令集做了分析,并对其数据类型和指令集进行了形式化描述。本文随后对符号执行中内存模型展开了讨论,对比了当下符号执行理论中各种主流内存模型(名字值模型、数组模型和基于区域的三元组模型)的优缺点,并提出一种树状结构的内存模型TMM(Tree-memory model)。这种内存模型的核心思想是以树状结构来表示那些嵌套数据。该内存模型能够有效的解决内存模型理论中类型转换、指针与别名和大小不确定数据等难题。本文最后以LLVM IR指令集的一个核心子集和TMM内存模型为基础并集成SMT求解器Z3,实现了一个简单的符号执行引擎SSE(Simple symbolic execution engine),并通过实验验证了SSE和TMM的有效性和先进性。
其他文献
随着信息技术的高速发展,互联网对传统领域的影响越来越大。一种通过互联网技术以及信息科学技术进行资源共享和快速学习的新方式诞生了,这种方式被称为在线教育或在线学习,
多媒体技术的发展和视觉信息的飞速膨胀迫切需要对视觉信息资源的有效管理和检索手段。由此,基于内容的图像检索技术得到了越来越多的重视,成为了多媒体信息检索和图像处理领
随着互联网技术的迅速发展,获取数据的成本变得越来越低,随之而来的问题就人们是面对海量的数据而无从下手,呈现出一种数据很多信息却很少的矛盾。如何挖掘用户的需求给用户
时代在发展,社会在进步,企业信息化的步伐也在与时俱进。无论规模大小,企业都需要量身定制专门的信息管理系统,提高事务处理的自动化程度,降低企业数据管理的工作量,从而达到
参数的配对组合测试是适用于各种软件系统的一种实用而且有效的测试方法。目前,应用于软件系统生成测试案例集合的方法主要有:正交矩阵方法、覆盖矩阵方法、AETG、IPO组合策
图像在获取和传输过程中常常会受到各种噪声的污染,从而降低了图像质量,给后继的图像处理过程,如图像分割、目标识别、图像检索以及图像的编码、传输等带来不利影响。因此图像去
随着网络规模的不断扩大,以及网络业务的飞速增长,客观上需要网络管理软件来保证整个网络的正常运行。然而,传统的C/S模式的网管软件已经不能适应不断变化的业务需求,因此本
随着视频技术在互联网上的应用,网络视频成为互联网越来越重要的组成部分。传统的文本搜索引擎已经不能满足人们对视频搜索的需要,如何查找这些网络视频内容成为近年来的研究
动态模糊逻辑理论是一种新的有效处理动态、不精确、不确定、含糊信息的理论。自主学习历来是教育和心理学家共同关注的一个重要问题,也是当前机器学习领域研究中的一个热点
作为科技界下一次革命的云计算技术,其推广和发展非常迅速,逐渐成为影响全世界最深远的技术之一。云计算技术的核心是集中的架构和共享的服务,它将大规模的共享资源集中到一