[发明专利]一种缓解路径爆炸的动态符号执行方法有效
申请号: | 201210106958.X | 申请日: | 2012-04-13 |
公开(公告)号: | CN102708045A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | 张小松;陈厅;吉小丽;朱聪;侯浩俊 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 成都华典专利事务所(普通合伙) 51223 | 代理人: | 徐丰;杨保刚 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 缓解 路径 爆炸 动态 符号 执行 方法 | ||
1.一种缓解路径爆炸的动态符号执行方法,包括以下步骤:
(1)通过控制流图生成及化简模块获取程序对应的静态控制流图,并根据相关理论将控制流图化简为决策图,保存在决策图数据结构中;
(2)通过插桩模块对被测程序插桩;
(3)通过实际执行和符号执行模块,一方面实际运行程序,检测本次运行路径中潜在的漏洞;另一方面进行符号执行,搜集该执行路径上遇到的分支节点的条件表达式,得到约束条件;
(4)通过约束条件映射模块将符号执行收集到的约束条件保存到决策图对应的节点中,如果存在循环,则下一次迭代产生的约束条件将覆盖上一次保存在决策图中的约束条件,保证一个循环中相同的约束条件仅被保存一次;
(5)通过路径约束条件获取模块在完成一次混合执行测试结束后,即实际执行和符号执行模块执行测试结束后,按深度优先搜索策略从决策图中搜索约束条件,组成路径约束条件,输出是精简的路径约束条件;
(6)通过路径约束条件取反模块将路径约束条件的每一个表达式取反,并保存该表达式之前的约束条件,删除之后的约束条件,形成预测路径约束条件;
(7)通过求解器求解模块对预测路径约束条件求解,生成新的测试用例,该测试用例能够驱动下次测试朝不同的分支路径执行,直到所有的路径都被测试完。
2.根据权利要求1所述的一种缓解路径爆炸的动态符号执行方法,其特征在于:所述步骤(5)中路径约束条件获取模块在一次混合执行测试结束后,按深度优先搜索策略从决策图中搜索约束条件,搜索方式如下:
a)从决策图的入口点开始访问内容不为空的邻接节点;
b)从该邻接节点不为空的边中取出约束条件加到路径约束条件上,并将该边的内容删除,将该节点压入访问节点堆栈中,该堆栈中的元素不重复;
c)沿着这条边访问以它为进入边的邻接节点;
d)如果邻接节点不为决策图的出口点,并且内容不为空,转到b),如果内容为空则转f);
e)如果邻接节点为决策图的出口点,则转到f);
f)如果访问节点堆栈不为空,则从堆栈中依次弹出一个节点,直到该节点的内容不为空,转到b),否则转到g);
g)本次搜索完毕。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210106958.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种镁橄榄石陶瓷材料、制备方法及其应用
- 下一篇:全自动高效电脑绕线机