- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c,c++程序资源泄漏的静态榆查研究
对c,c++程序中的各种安全隐患进行静态检查。
本课题所研究的一组方法,可以被广泛地应用于军事应用领域中的软件分析,
以提高军事应用软件的安全性;而且具有一定的普遍性,对其他相关工作,如逆
向工程、遗产继承等均具有理论和实际指导意义。
1.2资源泄漏检查的研究现状
目前人们在c/C++的静态安全检查领域进行了大量的研究,针对资源泄漏尤
其是内存泄漏这一安全问题,已经实现了多种检查工具。对于不同的安全检查工
具,其采取的安全检查方法也不同,下面对主流的几种检查工具及其检查方法加
以简单介绍。
通过要求程序员手工加入注释来完成安全检查的代表是SPlim[4]和PCIintt”。
持,可以覆盖更多的C/C++安全漏洞。对于此类工具,安全检查的正确性与程序
中所加的注释的工作量有关,并且检查结果中存在着比较多的错误报告【6】。
PREfixl71是一个自动化的静态安全检查工具,不需要程序员的手工干预。其使
用前置条件和后置条件的概念定义C/C++程序中各种语句的安全性条件,并利用
该条件执行语法安全检查。由于该工具没有进行全局的指针别名分析,所以对于
使用了容器类型的数据结构存储指针变量的情况无法有效分析。因此种情况引发
的资源泄漏情况在实际检查中经常无法发现。
David
Model)来管理内存资源的方法,以此检查内存泄漏。该方法的实现比较复杂,
但检查准确度较高。
本课题组的往届成员廉婷丽[91提出了一种通过使用指针链表和内存链表,静态
模拟程序的动态执行,检查与动态存储相关的安全漏洞的方法。该方法对过程内
的一重指针,在不含分支循环语句的情况下可以进行与动态存储相关的安全漏洞
检查。本文在此基础上,重点解决了分支、循环语句、结构体、多重指针、跨过
程等情况下的资源泄漏检查。
1.3论文的主要工作与组织结构
本文所作的工作是课题“软件系统安全分析”中的一部分,主要研究内容包
括:
第一章绪论
1.对分支,循环语句的资源泄漏检查;
2.对结构体变量、多重指针资源泄漏的检查;
3.对全局变量资源泄漏的检查:
4。对跨过程资源泄漏检查的实现。
首先,对资源泄漏的表现进行分类,并采用产生式和语义规则的形式,对资
源泄漏进行形式化描述的安全模式分析,构建安全规则;
其次,设计出指针节点和资源节点,记录资源的使用情况;针对分支语句,
使用一种流敏感的分析方法,模拟程序的动态执行;采用自下而上分析实现了跨
过程检查;
最后,结合抽象语法树的具体节点给出了安全检查的算法,完成了静态检查
工具的实现。本文的检查方案实现在C/C抖静态检查工具XDCHECK中,实验证
明该方法是有效的。
本文组织结构为:第一章为绪论部分,主要介绍项目背景、当前的研究现状
以及本人的主要工作;第二章是系统总体概述,介绍了系统的设计思想、安全检
查工具的总体框架;第三章为资源泄漏检查的分析与设计,分三部分论述,分别
为:资源泄漏的表现及产生原因分析、过程内资源泄漏检查的分析与设计和跨过
程资源泄漏检查的分析与设计;第四章主要介绍资源泄漏检查的实现;最后对本
文进行概括和总结。
第二章系统总体概述
2.1系统的设计思想
2.2.1基于GCC中间表示的分析
XDCHECK所完成的静态检查是程序通过语法分析之后的语义阶段的检查。
为了避开语法有关的问题,xDC髓cK选择基于编译器完成语法分析后得到的中
表示ASTIIoJ(AbstractTree,抽象语法树)为基础进行分析。
Syntax
以抽象语法树为分析基础的原因是: 抽象语法树作为GCC中间表示的一个
抽象层次,可以较好的表示各种语言的语法特征,对抽象语法树的遍历过程相当
于源程序的语法分析过程,遍历过程中对特定树节点的处理操作相当于语法分析
过程中的语义动作,保留了源程序所有的完整信息,可以提取符号信息,实现对
语言特性的处理;有抽象语法树遍历工具GASTA[Iu2]的支持,提供遍历抽象语法
树的框架和操作接口,采用模块化的结构,可以在原有框架的基础上增加新的模
块,同时将
原创力文档


文档评论(0)