[发明专利]一种错误状态引导的符号执行方法在审
| 申请号: | 202310344595.1 | 申请日: | 2023-04-03 |
| 公开(公告)号: | CN116361182A | 公开(公告)日: | 2023-06-30 |
| 发明(设计)人: | 张智轶;苏瑞;周玉倩;黄志球 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41 |
| 代理公司: | 南京理工信达知识产权代理有限公司 32542 | 代理人: | 刘莎 |
| 地址: | 211106 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 错误 状态 引导 符号 执行 方法 | ||
本发明公开了一种错误状态引导的符号执行方法,该发明首先分析原始程序的错误类型,生成需要附加的约束条件,并将约束条件插桩到原始程序中得到修改后的程序。其次,本发明利用Indus程序间分析工具检索程序中错误行的控制依赖和数据依赖,同时利用Indus提供的信息流分析程序中错误行的潜在依赖和交互依赖,进而得到程序的全部静态依赖关系。在此基础上,本发明使用各种依赖关系对路径按照键值大小进行排序,从而有选择性地进行符号执行。通过这种方法,错误状态引导的符号执行能够优先探索程序错误行的路径,并生成能够精确触发错误的测试输入。因此,本发明提供了一种高效、精确的符号执行方法,适用于软件测试、程序分析等领域。
技术领域
本发明属于软件测试技术领域,尤其涉及一种错误状态引导的符号执行方法。
背景技术
随着计算机应用范围的迅速扩大和人们对软件需求和功能性的要求越来越高,软件的实现逻辑也变得日趋复杂,这也导致在软件开发过程中,更可能出现软件缺陷和安全漏洞。Gary McGraw在其书《Software Security》中通过分析估计出,在导致软件安全问题的错误中,大约一半是由于实现过程中得遗漏、疏忽或者对需求的误解造成得。因此,软件需要能够准确地触发错误状态的测试输入去测试错误,一旦检测出错误,立刻去修复,这就可以很大程度上减少软件缺陷的修复成本。
由于软件的复杂性和多样性,软件测试也有很多种不同的方法。其中,符号执行是解决冗余探索,提高覆盖率的一个有效的方法。使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,然后通过约束求解器来得到可以触发目标代码的具体值。
在过去的几年中,符号执行在自动测试案例生成方面取得了重大进步。但仍面临巨大的挑战。路径状态空间爆炸问题是符号执行面临的主要挑战之一。为了缓解符号执行中的路径爆炸问题,学者们从不同的角度提出了不同的解决方案。(1)采用启发式搜索策略。Cadar等人在KLEE中综合使用了多种启发式搜索策略,从而避免单一的启发式搜索陷入局部最大测试覆盖率。Koushik等在CUTE和jCUTE中使用了混合随机符号搜索策略,以提高测试的广度和深度。Burnim等在CREST中实现了多种启发式搜索策略,如随机分支搜索和控制流导向搜索策略。(2)修减冗余路径。通过分析得出哪些路径是冗余的,进而使得符号执行避免探索该路径。Hanjun Wang提出了一种依赖引导的符号执行技术,该技术通过基于符号值预测和消除冗余路径的方法来缓解路径爆炸问题。Qiuping Yi等人提出一种新的后置条件符号执行,该方法通过识别多个运行共享的路径后缀,并在测试生成过程中消除冗余路径后缀,该方法可以使路径的数量指数级的减少。David Trabish提出了一个新的解决冗余路径的方法。该方法允许用户指定要排除的不感兴趣的代码,从而只针对重要的路径探索。(3)状态合并。Godefroid等阐述了静态状态合并的原理及存在的问题。Kuznetsov等提出了一种自动选择何时以及如何进行状态合并的方法。Thanassis等提出了Veritesting的概念,通过状态拟合减少程序的空间状态,提高符号执行的可用性。(4)重用技术。该技术通过缓存等方式存储函数的摘要,可以将底层函数的计算结果重用到高级函数中去,从而不需要重复的计算,减少分析的复杂性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310344595.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:无线供电装置及水轮发电机
- 下一篇:一种微机械陀螺仪及电子产品





