欢迎来到天天文库
浏览记录
ID:32349320
大小:8.56 MB
页数:70页
时间:2019-02-03
《嵌入式软件的c语言代码静态检查技术研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、浙江大学硕士学位论文摘要嵌入式系统是一种集软件和硬件于一身的特殊计算机系统。随着其在国防、航天、工业控制等若干重要领域的应用越来越广泛,嵌入式软件系统本身的安全性也变得越发重要。C语言是嵌入式软件开发中应用最广的编程语言,因此,对C语言程序的安全性验证成为了保证嵌入式系统安全的关键。C语言程序的检测方法分为动态和静态两大类。动态检查又称为运行时检查,是实际运行时检测程序的方案,在C程序运行过程中,通过选择适当的测试用例,并对程序的运行状态进行监控以发现程序中的错误。静态检测是指不在计算机上实际执行所检测的程序,而是采用分析代
2、码文本、人工模拟或类似动态分析的方法,借助相关的静态分析工具完成程序源代码的分析与检测。由于嵌入式软件特殊的开发模式,静态检测相对于动态检测具有过程简单,检测代价小的优点,是检测嵌入式软件的理想方法。本文通过对国内外该领域相关研究的学习,总结了C语言中常见的安全隐患,介绍了每种隐患产生的原因。在此基础上,主要介绍了两种检测方法,一种是基于标注的检测模型,用来检测指针和内存引用错误。另一种是通过对C语言编译过程中间结果的分析来检测堆栈溢出错误。其中第二种方法是本文的主要工作和创新点。指针和内存错误是C语言安全隐患中最常见同时也
3、是最难检测的错误,本文介绍了一种基于源代码中附加标注的静态检测模型,通过标注每个对象的状态来检测内存和指针访问错误。嵌入式系统有限的硬件资源使得堆栈的溢出检测成为了安全保障的一个重要的环节。本文通过C语言的内存模型和函数调用过程,详细介绍了堆栈溢出错误的产生原因,提出了一种基于编译过程中间结果的静态检测方法,并对所涉及的关键技术进行了详细介绍。最后,给出了整个堆栈静态检查器的系统设计和实现,并通过测试证明了该方法的正确性和可用性。关键词嵌入式系统,标注模型,堆栈溢出,静态检测浙江人学硕1:学位论文AbstractEmbedd
4、edsystemisakindofspecialcomputersystemthatcombinesthesoftwareandhardwaretightlyasawhole.Asitisusedmoreandmorewidelyinsomehighlysecureareassuchasnationaldefense,space,industrialcontrol,thesecurityofembeddedsystemitselfhasbecomemoreimportantthatevehCisthemostcommonly
5、usedcomputerlanguageinembeddedsoftwaredevelopment,SOthecorrectnesscheckingforCprogramhasbecomeakeypointinguaranteethesecurityforembeddedsoftware.TherearetwomaintypesinCprogramchecking:dynamiccheckingandstaticchecking.Dynamicchecking,knownasrun-timechecking,isakindo
6、fcheckingthatdotheverificationwhentheprogramisactuallyrunning.Itchoosepropertestcase,runtheprogramagainstthesecaseandmonitortherunningprocessoftheprogramtoseeifthereissomethingabnormalhappened.Iferrorhappened,themonitorcantracethetrackoftheproblemtodetectthebuginor
7、iginalcode.Thestaticchecking,ontheotherway,doesnotruntheprogramonthecomputer.Instead,ittrytoanalyzethesourcecode,simulatetheruntimebehavioroftheprograminordertodetectthepotentialbugandflawinthesourcecodewiththehelpofsomestaticcheckt001.Duetothespecialdevelopprocess
8、ofembeddedsoftware,comparetOdynamicchecking,staticcheckingissimplerandaskforfewerresources.So,staticcheckingismoresuitableforembeddedsoftwaredeve
此文档下载收益归作者所有