[发明专利]符号执行的并行路径搜索方法及装置有效
申请号: | 201711423532.6 | 申请日: | 2017-12-25 |
公开(公告)号: | CN108021507B | 公开(公告)日: | 2020-07-28 |
发明(设计)人: | 衷璐洁;黄晓 | 申请(专利权)人: | 首都师范大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 宋扬;刘芳 |
地址: | 100048*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 符号 执行 并行 路径 搜索 方法 装置 | ||
本发明提供的符号执行的并行路径搜索方法及装置,通过采用对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树;选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列;沿对真值序列中的各约束真值逆序取反,获得多个路径前缀;根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索的方式,从而实现对多个路径的并行搜索,从而有效提高了搜索效率,降低搜索难度。
技术领域
本发明涉及计算机技术,尤其涉及一种符号执行的并行路径搜索方法及装置。
背景技术
符号执行技术在软件测试、软件脆弱性、漏洞挖掘等领域有着重要的应用。具体来说,通过在程序执行过程中以符号输入代替实际输入,将程序变量符号化,并在分析中通过插桩不断收集路径约束条件,通过约束求解器生成测试用例以提高软件测试的覆盖率或发现软件存在的脆弱性。
现有的符号执行技术是采用的深度优先的串行路径搜索方法,即在每次探索完一条完整的程序路径后,对当前完整路径的最后一个非叶子节点上的约束真值取反,作为下一次迭代所预期的路径,直至完成全部路径的搜索。
但是,由于程序路径的分支数据和循环次数巨大,现有技术在面对执行路径的数量级将呈现指数级增长的情况时,将出现路径爆炸的问题。即各路径之间的结构复杂性高、数量大,从而使得路径的搜索效率低,搜索难度大。
发明内容
为了解决现有技术中存在的由于路径之间的结构复杂性高,路径数量大而导致路径搜索效率低,搜索难度大的问题,本发明提供了一种符号执行的并行路径搜索方法及装置。
一方面,本发明提供的符号执行的并行路径搜索方法,包括:
对获取程序的控制流图进行规约处理,获得所述控制流图的路径二叉树;
选取所述路径二叉树中的任意一路径,并获得所述路径对应的约束条件的真值序列;
沿对所述真值序列中的各约束真值逆序取反,获得多个路径前缀;
根据所述路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对所述多个预测路径同时进行路径搜索。
在其中一种可选的实施方式中,所述对所述多个预测路径同时进行路径搜索之后,还包括:
判断全部的预测路径的数量是否大于预设阈值;
若否,则将所述全部的预测路径作为路径前缀,并返回所述根据所述路径二叉树确定每个路径前缀对应的多个预测路径的步骤,直至所述全部的预测路径的数量大于预设阈值。
在其中一种可选的实施方式中,所述根据所述路径二叉树确定每个路径前缀对应的多个预测路径,包括:
根据每个所述路径前缀和所述路径二叉树,获得每个所述路径前缀对应的完整路径;
按照预设规则对每个所述路径前缀对应的完整路径中的约束真值取反,获得所述每个路径前缀对应的多个预测路径。
在其中一种可选的实施方式中,若任一路径前缀中包括P个结点,则所述任一路径前缀对应的完整路径包括P’个结点,其中所述P小于所述P’;
相应的,按照预设规则对任一路径前缀对应的完整路径中的约束真值取反,获得所述任一路径前缀对应的多个预测路径,包括:
对所述任一路径前缀对应的完整路径中的第P个结点至第P’-1个结点对应的约束真值依次取反,获得任一路径前缀对应的P’-P个预测路径。
在其中一种可选的实施方式中,所述对获取程序的控制流图进行规约处理,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于首都师范大学,未经首都师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711423532.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种以氟唑菌酰胺为主要成分的杀菌组合物
- 下一篇:温度传感器和洗衣机