文档介绍:西安电子科技大学
硕士学位论文
C/C++程序安全检查工具中数据流分析器的设计与实现
姓名:余新待
申请学位级别:硕士
专业:计算机软件与理论
指导教师:刘坚
20100101
摘要
本文针对一个 C/C++程序静态安全检查工具,设计与实现了其中的数据流分
析器,该数据流分析器为安全检查工具收集安全检查时需要的数据流信息。
本文首先阐述了数据流分析的基础理论,研究了传统的迭代数据流分析方法,
在此基础上根据安全检查工具的实际需求,提出了一种基于控制流路径的数据流
分析方法。其次,根据该方法设计与实现了一个数据流分析器,该数据流分析器
以控制流图和抽象语法树为基础,搜索出控制流图中的控制流路径,沿着路径通
过遍历抽象语法树以计算数据流信息;重点讨论了数据流分析器的整体工作流程、
控制流路径的搜索以及数据流信息的计算。最后,本文讨论了一类具体的整型变
量值分析的设计与实现,并利用其分析结果实现了数组越界检查。实验表明,该
数据流分析方法是有效的。
关键词:静态安全检查数据流分析数组越界
Abstract
A data flow analyzer which is used to collect data flow information for a C/C++
program static safety checker is designed and implemented in this thesis.
Firstly, basic theories in data flow analysis and the conventional iterative data
flow analysis method is studied, and a control flow path-based data flow analysis
method is presented according to the actual needs of the C/C++ program static safety
checker. Secondly, based on this method a data flow analyzer is designed and
implemented, which searches out the control flow paths in control flow graph, and then
parses the abstract syntax tree to calculate data flow information along each path. The
overall workflow, control flow path searching and data flow information calculation in
the analyzer are discussed detailedly. Finally, integer value analysis of which the result
is used to check array bounds is discussed. Experimental results illustrate that this
method is effective.
Keyword: Static Safety Check Data Flow Analysis Out of Bound of Array
创新性声明
本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的研
究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中
不包含其他人已经发表或撰写过的研究成果,也不包含为获得西安电子科技大学
或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究工
作所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
申请学位论文若有不实之处,本人承担一切相关责任。
本人签名: 日期:
关于论文使用授权的说明
本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究
生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕
业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。
学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全
部或部分内容,可以允许采用影印、缩印或其他复制手段保存论文。(保密的论文
在解密后遵守此规定)
本学位论文属于保密在____年解密后