基于函数摘要的C++过程间静态分析研究

来源 :电子科技大学 | 被引量 : 1次 | 上传用户:chaba
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在现代软件工程中,代码安全成为人们不容忽视的问题,为了保证代码安全,一系列代码分析方法被提出。但过程间分析还存在很多不足,如今过程间分析大致分为两种,一种是通过函数内联的过程间分析,一种是基于函数摘要的过程间分析。传统的基于函数摘要的过程间分析为了实现上下文敏感特性需要消耗大量的内存,并且只能提取特定漏洞对应的函数信息。相较于传统的函数摘要方法,符号化函数摘要方法对每个函数只收集一份儿符号化的函数摘要,内存开销比较低,但是现有的符号化函数摘要方法不具有路径敏感的特点,并且也不具有良好的扩展性。本文基于传统的符号化函数摘要模型并结合符号执行方法提出了一种基于状态的路径敏感的符号化函数摘要算法。该算法使用符号化的程序状态作为函数的摘要信息,程序状态中存储该程序状态需要满足的路径条件,路径条件使用一组命题逻辑公式来表示函数中各个分支及其对应的路径条件信息。该算法分为函数摘要的创建,函数摘要的实例化以及函数摘要的应用三个部分。的创建过程就是对函数进行过程内分析的过程,在对某条路径分析结束时收集符号化的程序状态作为函数的摘要信息。在过程内分析过程中,将由于依赖于上下文环境信息而无法确定的报错信息进行记录,在应用函数摘要时进行延迟报错。对于函数摘要的实例化来说,就是在函数调用点使用上下文环境信息对函数摘要中符号化的信息进行实例化,根据实例化的路径条件选择有效的程序状态作为有效的函数摘要。对于函数摘要的应用来说,就是将有效的函数摘要对应的副作用应用到调用点对应的上下文环境中,并根据具体情况进行延迟报错。另外,本文提出了一种基于抽象语法树(Abstract Syntex Tree,AST)序列化存储的跨文件分析算法,该算法首先对编译单元进行编译,收集各编译单元的AST并进行序列化存储。在过程内分析的过程中,在遇到外部函数调用时,将被调用函数对应的AST进行逆序列化,然后创建被调用函数对应的控制流图(Control Flow Graph,CFG),从而完成后续的过程间分析。最后本文基于Clang静态分析平台,对基于状态的路径敏感的符号化函数摘要算法以及基于AST序列化存储到跨文件分析算法进行了实现,并进行了实验对比,实验表明基于状态的路径敏感的符号化函数摘要算法和基于AST序列化存储的跨文件分析算法具有一定的优越性。
其他文献
以欧洲卫矛的品种“矮生卫矛”为试验材料,采用高效液相色谱-VWD检测-电喷雾电离质谱连用技术(HPLC-VWD-ESI-MS)分析欧洲卫矛叶片花色素苷组分,探讨花色素苷最佳的浸提条件和
铁路罐车装运的液体货物易于流动,在运行过程中会对罐壁产生不同于固体货物的动态力,此动态力将对行车安全产生影响。本文采用FLUENT软件对罐车内流体货物的动侧压力进行数值模
本文从现代化的概念和本质入手,探讨了目前教育在我国经济社会发展过程中的功能定位,阐述了教育现代化的科学内涵。笔者认为,应为教育重新定性、定位、定功能、定结构,脱胎换
软件系统的规模直接影响到系统的复杂性,而良好的软件体系结构可以降低系统的复杂性。本文采用面对象方法研究了软件体系结构的构件、组织结构等,并给出了软件的体系结构模型。
研究了温度环境不同对东当归生长发育及提取物有效成分东当归酞内酯含量的影响。于1989和1990年在东京农业大学的种植试验室内栽培。一年生东当归分别使用20℃和25℃的恒温
在新建输电线路或改造工程中的输电线路中,其二次系统的继电保护装置无法满足输电线的离线检测。为此,提出了一种基于移频测试原理的高压输电线路离线故障检测方法,拟采用40Hz和
文章结合中国石油天然气管道局在泰国开展的管道承包工程项目,从介绍泰国税收体系入手,重点分析在泰国从事管道承包工程涉及的税金、税金的纳税管理与操作以及税务管理中应注意
双层金属结构低温储罐的安装工艺主要有正装法和倒装法。文章对比了两种施工工艺的优缺点,通过工程实例分析了施工成本,认为对于中小型双层金属结构低温储罐而言,倒装施工工艺优
本文从开展高等工程教育专业认证的背景和重要性入手,首先简要介绍了英美等国工程教育专业认证的基本情况,阐述了我国在工程教育专业认证上的积极探索与实践.在对国内外工程