[发明专利]基于动态符号执行与模糊测试的缓冲区溢出检测方法有效
申请号: | 201910293815.6 | 申请日: | 2019-04-12 |
公开(公告)号: | CN110059010B | 公开(公告)日: | 2023-01-31 |
发明(设计)人: | 郑炜;蔺军;曹石超 | 申请(专利权)人: | 西北工业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西北工业大学专利中心 61204 | 代理人: | 王鲜凯 |
地址: | 710072 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 动态 符号 执行 模糊 测试 缓冲区 溢出 检测 方法 | ||
本发明公开了一种基于动态符号执行与模糊测试的缓冲区溢出检测方法,用于解决现有缓冲区溢出检测方法检测率低的技术问题。技术方案是首先,对待测程序的待测方法参数进行符号化的处理,生出初始的测试值。之后,创建待测程序的控制流图,使用基于即时编译的动态插桩技术对控制流图进行插桩,以查看测试用例是否触发了新状态。最后,使用各种变异操作来改变初始测试值,以生成新的测试值。本发明能够对包含非线性条件路径的待测程序进行检测,检测率高。
技术领域
本发明涉及一种缓冲区溢出检测方法,特别涉及一种基于动态符号执行与模糊测试的缓冲区溢出检测方法。
背景技术
文献“张俊贤,李舟军.基于动态符号执行的C代码缓冲区溢出检测[J].北京邮电大学学报,2016,39(z1).”中公开了一个基于底层虚拟机中间代码的缓冲区溢出检测工具PathChecker。该工具基于动态符号执行方法,使用无量词谓词公式刻画缓冲区操作的安全性质,并利用可满足模型理论求解器技术检验缓冲区操作的安全性。该文献使用了动态符号执行技术并结合了模糊测试技术,但是由于模糊测试技术只用于生成初始值,没有用于解决符号执行面临的约束求解问题。导致在检测一些包含复杂非线性约束条件的程序时,该工具检测效果不突出。
发明内容
为了克服现有缓冲区溢出检测方法检测率低的不足,本发明提供一种基于动态符号执行与模糊测试的缓冲区溢出检测方法。该方法首先,对待测程序的待测方法参数进行符号化的处理,生出初始的测试值。之后,创建待测程序的控制流图,使用基于即时编译的动态插桩技术对控制流图进行插桩,以查看测试用例是否触发了新状态。最后,使用各种变异操作来改变初始测试值,以生成新的测试值。本发明能够对包含非线性条件路径的待测程序进行检测,检测率高。
本发明解决其技术问题所采用的技术方案:一种基于动态符号执行与模糊测试的缓冲区溢出检测方法,其特点是包括以下步骤:
步骤一、初始测试值的生成。
首先,对待测程序的待测方法参数进行符号化的处理,利用随机的具体值对程序进行探索,在执行的过程中收集分支处的符号约束,将符号约束组成对应的符号约束树。之后,从具体值探索的终点向符号约束树的上层回溯,依此利用线性转换对分支处的约束进行简化操作,完成约束简化后对其取反,并将取反后的条件送入约束求解器得出新的具体值,使用新的值探索出新的路径,直到遍历完程序中所有路径,最终,得出每条路径对应的初始测试值。
步骤二、基于控制流图的插桩。
首先在表示程序语句节点的每个方法中添加构建控制流图的代码。与控制语句对应的节点类中的每个访问方法负责创建该语句的子控制流图。然后,在遍历抽象语法树的过程中,根据逻辑关系逐个连接这些子控制流程图。在创建好控制流图之后,使用基于即时编译的动态插桩技术对控制流图进行插桩。程序运行时,目标程序被动态编译,分析代码直接插入到待测程序中,并对待测程序控制流图的每条边进行编号。根据分析代码和路径编号,在评估测试用例时确定测试用例遍历了程序中的哪些路径从而确定检测到了程序的哪些部分,并查看测试用例是否触发了新状态。
步骤三、基于变异操作的测试值生成。
将初始的测试值加载到测试值队列中。逐个从队列中取出测试数据,并使用简单突变、统一变异、边界突变来改变数据,以生成新的测试值。将这些新的测试值作为待测程序的输入,当待测程序使用这些值开始执行时,对执行结果进行监视。在监控期间,捕获程序错误并判断此错误是否已经出现过。如果此错误从未出现过,将记录导致该结果的测试值。最后,获得一组有用的测试值,通过使用它们来重现程序中隐藏的缺陷。
本发明的有益效果是:该方法首先,对待测程序的待测方法参数进行符号化的处理,生出初始的测试值。之后,创建待测程序的控制流图,使用基于即时编译的动态插桩技术对控制流图进行插桩,以查看测试用例是否触发了新状态。最后,使用各种变异操作来改变初始测试值,以生成新的测试值。本发明能够对包含非线性条件路径的待测程序进行检测,检测率高。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910293815.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于测试代码文件的方法和装置
- 下一篇:接口测试方法、装置、介质及电子设备