基于分段动态符号执行的约束优化研究
发布时间:2021-03-06 22:45
软件质量是保证软件产品正常平稳运行的关键,因为在软件开发和软件功能更新过程中不可避免会出现软件缺陷,这些缺陷如果不及时发现,软件不能平稳运行,甚至可能对其他相关软件带来更大危害。为了有效的发现软件中的缺陷并对所在缺陷代码进行改进必须进行软件测试。符号执行作为一种程序分析技术,使用不同的、可能的输入来测试程序,系统地同时探索许多可能的执行路径,使得软件可靠性应用程序有重大实际突破。动态符号执行通过自动输入生成发现软件中的缺陷——即自动化软件测试。在此过程中,为保证程序可继续执行会将求解器无法求解的部分用具体值替换,导致部分路径丢失,并且路径爆炸问题依然严峻;在整个符号执行中,求解器的求解时间占程序执行的很大一部分,优化约束集、减少求解器的负担也是一个至关重要的问题。本文通过分段动态符号执行优化约束集的方法,缓解动态符号执行中的路径爆炸。提出一个CCSDSM优化框架,利用圈复杂度度量软件复杂性进行分段处理,避免程序分支呈指数级增长后导致的路径爆炸,并在分段处优化约束集,减轻求解器的负担,延迟符号值被实际值替换,降低路径的不完整性。本文用开源符号执行工具KLEE对程序进行分析。设计实验来评估...
【文章来源】:哈尔滨师范大学黑龙江省
【文章页数】:40 页
【学位级别】:硕士
【部分图文】:
符号执行示例程序
执行树
第二章相关技术研究9可行路径,产生误报。2.1.2动态符号执行动态符号执行(Dynamicsymbolicexecution,DSE)是一种实际输入与传统符号执行相结合的代码检测技术,它通过自动生成的测试用例来检测程序执行中的可能路径,并据此挖掘和检测软件漏洞或缺陷。动态符号执行显著特点是以实际数据为输入来参与运行过程,并且通过约束求解器计算出多个测试用例,测试用例质量越高,数量越多,则挖掘程序漏洞的概率越大。在被测程序上,符号执行先用给定的或随机的具体输入执行,并同时进行符号执行。通过插桩的方式收集程序执行过程中路径条件的符号表达式,对分支路径条件进行取反得到新的路径条件,然后使用约束求解器求解所收集到的路径条件,以生成新的测试用例用于输入,从而探索与未被覆盖的路径。当约束集超过求解器求解能力或者遇到外部调用的时候,用具体值替代使程序可继续执行。生成测试输入对程序中路径进行探索。如图2-3所示。图2-3动态符号执行流程图Figure2-3Dynamicsymbolexecutionflowgraph为了更好的阐述动态符号执行过程,以示例2-1的例子来说明。动态符号执行会首先产生随机输入。假设{a=5,b=8},具体值和符号值混合执行。输入实际值,
【参考文献】:
期刊论文
[1]基于符号执行与模糊测试的混合测试方法[J]. 谢肖飞,李晓红,陈翔,孟国柱,刘杨. 软件学报. 2019(10)
[2]程序分析研究进展[J]. 张健,张超,玄跻峰,熊英飞,王千祥,梁彬,李炼,窦文生,陈振邦,陈立前,蔡彦. 软件学报. 2019(01)
[3]程序理解:现状与未来[J]. 金芝,刘芳,李戈. 软件学报. 2019(01)
[4]基于变量符号关联分析的程序状态优化方法[J]. 郭曦,王盼. 通信学报. 2018(06)
[5]一种基于程序功能标签切片的制导符号执行分析方法[J]. 甘水滔,王林章,谢向辉,秦晓军,周林,陈左宁. 软件学报. 2019(11)
[6]一种符号执行制导的循环内界分析方法[J]. 赵祖威,冯世宁,汤恩义,陈鑫,李宣东,潘敏学,赵晨. 电子学报. 2017(11)
[7]基于懒符号执行的软件脆弱性路径求解算法[J]. 秦晓军,周林,陈左宁,甘水滔. 计算机学报. 2015(11)
[8]基于k近邻最弱前置条件的程序多路径验证方法[J]. 郭曦,王盼,王建勇,张焕国. 计算机学报. 2015(11)
硕士论文
[1]并行分段式符号执行的研究与实现[D]. 王颖.电子科技大学 2018
[2]基于动态符号执行的模糊测试方法研究[D]. 陈禹行.大连海事大学 2018
[3]分段式混合执行测试方法的研究[D]. 刘春宏.华东师范大学 2014
本文编号:3067955
【文章来源】:哈尔滨师范大学黑龙江省
【文章页数】:40 页
【学位级别】:硕士
【部分图文】:
符号执行示例程序
执行树
第二章相关技术研究9可行路径,产生误报。2.1.2动态符号执行动态符号执行(Dynamicsymbolicexecution,DSE)是一种实际输入与传统符号执行相结合的代码检测技术,它通过自动生成的测试用例来检测程序执行中的可能路径,并据此挖掘和检测软件漏洞或缺陷。动态符号执行显著特点是以实际数据为输入来参与运行过程,并且通过约束求解器计算出多个测试用例,测试用例质量越高,数量越多,则挖掘程序漏洞的概率越大。在被测程序上,符号执行先用给定的或随机的具体输入执行,并同时进行符号执行。通过插桩的方式收集程序执行过程中路径条件的符号表达式,对分支路径条件进行取反得到新的路径条件,然后使用约束求解器求解所收集到的路径条件,以生成新的测试用例用于输入,从而探索与未被覆盖的路径。当约束集超过求解器求解能力或者遇到外部调用的时候,用具体值替代使程序可继续执行。生成测试输入对程序中路径进行探索。如图2-3所示。图2-3动态符号执行流程图Figure2-3Dynamicsymbolexecutionflowgraph为了更好的阐述动态符号执行过程,以示例2-1的例子来说明。动态符号执行会首先产生随机输入。假设{a=5,b=8},具体值和符号值混合执行。输入实际值,
【参考文献】:
期刊论文
[1]基于符号执行与模糊测试的混合测试方法[J]. 谢肖飞,李晓红,陈翔,孟国柱,刘杨. 软件学报. 2019(10)
[2]程序分析研究进展[J]. 张健,张超,玄跻峰,熊英飞,王千祥,梁彬,李炼,窦文生,陈振邦,陈立前,蔡彦. 软件学报. 2019(01)
[3]程序理解:现状与未来[J]. 金芝,刘芳,李戈. 软件学报. 2019(01)
[4]基于变量符号关联分析的程序状态优化方法[J]. 郭曦,王盼. 通信学报. 2018(06)
[5]一种基于程序功能标签切片的制导符号执行分析方法[J]. 甘水滔,王林章,谢向辉,秦晓军,周林,陈左宁. 软件学报. 2019(11)
[6]一种符号执行制导的循环内界分析方法[J]. 赵祖威,冯世宁,汤恩义,陈鑫,李宣东,潘敏学,赵晨. 电子学报. 2017(11)
[7]基于懒符号执行的软件脆弱性路径求解算法[J]. 秦晓军,周林,陈左宁,甘水滔. 计算机学报. 2015(11)
[8]基于k近邻最弱前置条件的程序多路径验证方法[J]. 郭曦,王盼,王建勇,张焕国. 计算机学报. 2015(11)
硕士论文
[1]并行分段式符号执行的研究与实现[D]. 王颖.电子科技大学 2018
[2]基于动态符号执行的模糊测试方法研究[D]. 陈禹行.大连海事大学 2018
[3]分段式混合执行测试方法的研究[D]. 刘春宏.华东师范大学 2014
本文编号:3067955
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3067955.html