C程序精确形状分析中的规范语言设计

被引量 : 0次 | 上传用户:li63991923
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着计算机技术的快速发展,计算机软件的规模越来越大,软件调试和维护越来越困难,其成本也越来越高,软件的安全形势变得越来越重要。特别是在安全攸关领域(例如,航空航天、高铁、核电、医疗等领域),人们对高可信软件的需求越来越大。在这些领域,C语言仍是最普遍使用的编程语言。而C程序中的空指针脱引用、内存泄漏、缓冲区溢出等诸多内存安全问题在软件开发中依然突出。提高软件质量的方法有很多种,如软件测试、程序分析和程序验证等;在众多方法中,相对有效而又经济的方法是程序静态分析。针对C程序中内存安全问题,作者所在实验室的课题组开发了一个静态分析工具,该工具采用了符号执行的静态分析技术,并加入了形状分析,为了降低静态分析的误报率和漏报率,以及提高分析的效率,设计了表达能力较为丰富的规范语言来描述程序状态和函数行为。在该静态分析工具的实现中,设计了描述函数行为的规范语言,包括描述程序状态的基本断言,描述内存状态的谓词以及描述单链表、双链表、二叉树的形状谓词。该工具基于编译框架LLVM和符号执行分析工具KLEE,以函数为单位分析并构造函数行为规范,该过程中需要用断言描述程序状态并按需抽象成形状谓词。为此,针对断言设计了一系列的规范化和抽象化规则。本文的贡献主要有三方面:第一,设计并实现了描述函数行为的规范语言,包括描述程序状态的基本断言,描述内存的谓词以及描述单链表、双链表、二叉树的形状谓词。通过规范语言来记录已分析函数的行为,可以避免重复分析,提高分析的效率。通过使用描述内存的谓词和形状谓词,该工具可以检测内存泄漏、空指针脱引用等内存安全问题以及进行形状分析。第二,设计并实现了一系列的规则来规范和抽象断言,将程序状态抽象成形状谓词,用于形状分析。第三,利用已有的规范语言为C语言标准库函数构造函数行为规范。许多程序中会频繁调用C的库函数,为这些常用的库函数手动构造行为规范可以提高分析的精度和效率。本文工作的意义在于针对C程序内存安全问题,提出了一套规范语言;并针对形状分析,提出了一系列的抽象化规则,用于精确分析单链表、双链表和二叉树等递归数据结构程序中的内存安全错误,为以后的研究和工具扩展奠定了基础。
其他文献
现今社会,无论是政府机关还是公司企业,他们对于人才的选拔呈现出日益提高的趋势,应用性强成为一项重要的选拔标准。所以,高等职业学校对于学生的培养方式也是至关重要的。对
12/15-脂氧合酶是催化不饱和脂肪酸代谢的关键酶之一。研究表明,12/15-脂氧合酶及其代谢产物可通过多种途径阻碍干细胞成骨分化,促进破骨细胞生成与骨吸收,但可防止炎性反应
全面预算管理作为现代企业管理的重要工具,能够对企业进行事前、事中、事后的有效控制,促进企业长期可持续发展。早在20世纪初,美国的杜邦公司和通用公司就开始将预算作为企
发展林下经济模式能够对生态环境加以保护,加快乡镇经济发展的速度,提升农民的经济收入水平。基于此,以辽宁地区林下经济模式为主要研究内容,重点阐述其发展现状与优化策略,
目的:介绍近年来国内紫杉醇纳米级给药系统的研究进展。方法:查阅近几年国内相关文献并进行整理分析。结果:紫杉醇纳米级给药系统具有控释性、靶向性等优点,并显现出较好的抗
作为朝阳产业,文化产业具有巨大的发展潜力,已经成为新的经济增长动力源泉和社会和谐的润滑剂。公共财政扶持作为政府扶持文化产业发展的重要基础性措施,其在促进文化产业发
纳米材料因在制造、信息技术、能源、环境、医疗健康护理等领域的重要应用,而受到科学界的广泛关注。硫化锌(ZnS)是一种重要II-VI族半导体材料。到目前为止,研究证明在所有的
<正> 病历摘要患者女,崔××,62岁,家庭妇女,住院号5201。因右上腹包块、腹胀、腹泻、浮肿七个月,于1978年8月27日疑诊肝硬化,肝功失代偿收住院。于1979年2月自于右上腹扪及
随着股指期货的上市以及融资融券业务的开通,国内金融市场中的量化交易也在逐步发展。然而就目前的国内金融市场而言,可交易品种匮乏,交易机制不健全,参与投资者较欧美落后等