基于符号化执行的插桩技术研究与实现

来源 :电子科技大学 | 被引量 : 3次 | 上传用户:wyfwin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着“互联网+”概念的提出,计算机相关技术的应用逐渐与传统的行业结合在一起,为其在现代化的发展道路上创造了新的契机。然而在发展的过程中,传统行业的进步也对计算机技术的更新提出了新的需求。其中,计算机软件的质量和安全问题一直都是软件开发过程中的重要的问题,特别是在国防、金融、医疗等领域。软件测试是保障软件质量和安全的常用方法,一个软件的开发必然伴随着多次的测试过程,所以软件测试对于程序开发人员来说是尤其重要的。软件测试过程一般为构造测试用例,代入程序进行测试,将输出结果与预想值比对,修改程序中的问题,如此反复进行。这样的过程是看似平常却存在一定的缺陷,因为开发人员自己构造的测试用例并不能十分完美,使用这些测试用例来执行待测程序的时候,可能漏掉程序中的关键路径或不能触发存在问题的路径,这将导致存在的问题被遗漏。虽然人工穷举出程序所有路径的方法几乎不可能实现,但程序却可以达到此目的。基于动态符号执行理论的测试用例自动生成就能有效的解决上述问题,通过它而生成的测试用例理论上能够达到路径全覆盖,这无疑为穷举所有路径的方法提供了理论基础。本课题组利用动态符号执行技术开发出一个针对Linux平台的C语言的单元测试的测试用例自动生成工具,而本文的主要研究内容在工具的插桩部分,即利用LLVM编译器框架对C程序的LLVM中间码进行分析,在中间码的相关位置插入桩函数,并通过模拟堆栈机的原理实现桩函数,使程序在执行时能够执行到桩函数,通过这些桩函数触发符号执行过程,进而自动生成测试用例。虽然目前已经有此类工具在实际项目中进行应用,但是还有许多需要完善的地方,例如路径爆炸、外部函数调用、浮点数处理等问题,本文就浮点数问题提出了一种新的解决方法。为了验证开发的测试用例自动生成工具功能的正确性,本文使用两个小程序和程序分析benckmark中的一个大程序对工具进行测试。先通过小程序对测试的流程进行了说明,对测试过程中得到的文件和数据解释分析,最终的实验结果验证了插桩部分和浮点数求解的正确性。然后利用benchmark中的大程序对整个工具进行一次完整的测试,证明了工具的有效性。
其他文献
互联网技术的发展及人类需求的驱动,并且数据库技术的齐头并进,这让人类有能力存储和高效管理海量数据。人类积累的数据越来越多,所谓的大数据时代因此产生。面对海量数据,能
分布式网络在信息交换、资源共享、协同工作和并行处理等方面显示出的优势,使其迅速成为网络发展的方向。分布式网络具有开放性、动态性、自治性等特性,相对于传统的C/S网络
近年来,射频识别(RFID)技术快速发展,阅读器侦测范围的增大与识别率的提高,标签种类的丰富与成本的下降,促进RFID技术在越来越多的领域得到应用,且应用范围正在从大宗贵重物品转向
P2P技术是近年来流行的计算机网络结构,不同于客户机服务器结构,P2P中所有的节点都是平等的,没有严格的提供者和消费者的区分,网络中也不存在权威中心对这些节点进行管理。开
随着大数据时代的到来,数据的维度越来越高而且数据中的冗余信息越来越多,统计学习和机器学习从包含大量的冗余信息的数据中学习或发现有用的信息越来越困难,因此在对数据建
分布式信息处理、传感器技术、网络技术的发展推动了多传感器数据融合技术的发展,该技术目前已被广泛地应用于军事和民用的各个领域,在各个方面对人们的生产和生活起了积极的
随着计算机技术、人工智能以及计算机网络技术的快速发展,计算机快速转向开放的、网络平台的、协同工作方式,在这十多年来,源于分布式人工智能(Distributed Artificial Intel
无线Mesh网络(Wireless Mess Network)简称WMN,是一种新型的无线通信网络。它具备网状的拓扑结构的自组织性和自愈特点,并具有有效的移动用户管理和跟踪机制。无线mesh网络既
列车运行系统(TOS)是铁路智能系统(RITS)中的核心系统,也是典型的混杂系统。如何对TOS进行建模分析是RITS研究中的关键问题。由于TOS是一类强实时性的反应系统,其动态行为与
从《机器能思考吗》一文的发表开始,人工智能已经经历从专家系统到神经网络,再到今天统计学习理论几个阶段,这期间涌现了大量优秀的算法和理论。但我们也看到,在智能领域尤其
学位