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