首页> 中国专利> 符号执行的并行路径搜索方法及装置

符号执行的并行路径搜索方法及装置

摘要

本发明提供的符号执行的并行路径搜索方法及装置,通过采用对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树;选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列;沿对真值序列中的各约束真值逆序取反,获得多个路径前缀;根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索的方式,从而实现对多个路径的并行搜索,从而有效提高了搜索效率,降低搜索难度。

著录项

  • 公开/公告号CN108021507A

    专利类型发明专利

  • 公开/公告日2018-05-11

    原文格式PDF

  • 申请/专利权人 首都师范大学;

    申请/专利号CN201711423532.6

  • 发明设计人 衷璐洁;黄晓;

    申请日2017-12-25

  • 分类号G06F11/36(20060101);

  • 代理机构11205 北京同立钧成知识产权代理有限公司;

  • 代理人宋扬;刘芳

  • 地址 100048 北京市西三环北路105号

  • 入库时间 2023-06-19 05:21:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-28

    授权

    授权

  • 2018-06-05

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20171225

    实质审查的生效

  • 2018-05-11

    公开

    公开

说明书

技术领域

本发明涉及计算机技术,尤其涉及一种符号执行的并行路径搜索方法及装置。

背景技术

符号执行技术在软件测试、软件脆弱性、漏洞挖掘等领域有着重要的应用。具体来说,通过在程序执行过程中以符号输入代替实际输入,将程序变量符号化,并在分析中通过插桩不断收集路径约束条件,通过约束求解器生成测试用例以提高软件测试的覆盖率或发现软件存在的脆弱性。

现有的符号执行技术是采用的深度优先的串行路径搜索方法,即在每次探索完一条完整的程序路径后,对当前完整路径的最后一个非叶子节点上的约束真值取反,作为下一次迭代所预期的路径,直至完成全部路径的搜索。

但是,由于程序路径的分支数据和循环次数巨大,现有技术在面对执行路径的数量级将呈现指数级增长的情况时,将出现路径爆炸的问题。即各路径之间的结构复杂性高、数量大,从而使得路径的搜索效率低,搜索难度大。

发明内容

为了解决现有技术中存在的由于路径之间的结构复杂性高,路径数量大而导致路径搜索效率低,搜索难度大的问题,本发明提供了一种符号执行的并行路径搜索方法及装置。

一方面,本发明提供的符号执行的并行路径搜索方法,包括:

对获取程序的控制流图进行规约处理,获得所述控制流图的路径二叉树;

选取所述路径二叉树中的任意一路径,并获得所述路径对应的约束条件的真值序列;

沿对所述真值序列中的各约束真值逆序取反,获得多个路径前缀;

根据所述路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对所述多个预测路径同时进行路径搜索。

在其中一种可选的实施方式中,所述对所述多个预测路径同时进行路径搜索之后,还包括:

判断全部的预测路径的数量是否大于预设阈值;

若否,则将所述全部的预测路径作为路径前缀,并返回所述根据所述路径二叉树确定每个路径前缀对应的多个预测路径的步骤,直至所述全部的预测路径的数量大于预设阈值。

在其中一种可选的实施方式中,所述根据所述路径二叉树确定每个路径前缀对应的多个预测路径,包括:

根据每个所述路径前缀和所述路径二叉树,获得每个所述路径前缀对应的完整路径;

按照预设规则对每个所述路径前缀对应的完整路径中的约束真值取反,获得所述每个路径前缀对应的多个预测路径。

在其中一种可选的实施方式中,若任一路径前缀中包括P个结点,则所述任一路径前缀对应的完整路径包括P’个结点,其中所述P小于所述P’;

相应的,按照预设规则对任一路径前缀对应的完整路径中的约束真值取反,获得所述任一路径前缀对应的多个预测路径,包括:

对所述任一路径前缀对应的完整路径中的第P个结点至第P’-1个结点对应的约束真值依次取反,获得任一路径前缀对应的P’-P个预测路径。

在其中一种可选的实施方式中,所述对获取程序的控制流图进行规约处理,包括:

根据所述控制流图的程序结构,确定所述程序结构对应的规约类型,并按照与所述规约类型对应的规约算法对所述程序结构进行处理;其中所述规约类型包括单选择型、多选择型和循环型。

另一发明,本发明还提供了一种符号执行的并行路径搜索装置,包括:

规约处理模块,用于对获取程序的控制流图进行规约处理,获得所述控制流图的路径二叉树;

并行路径搜索模块,用于选取所述路径二叉树中的任意一路径,并获得所述路径对应的约束条件的真值序列;沿对所述真值序列中的各约束真值逆序取反,获得多个路径前缀;根据所述路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对所述多个预测路径同时进行路径搜索。

在其中一种可选的实施方式中,所述并行路径搜索模块,具体用于:

判断全部的预测路径的数量是否大于预设阈值;

若否,则将所述全部的预测路径作为路径前缀,并返回所述根据所述路径二叉树确定每个路径前缀对应的多个预测路径的步骤,直至所述全部的预测路径的数量大于预设阈值。

在其中一种可选的实施方式中,所述并行路径搜索模块,具体用于:

根据每个所述路径前缀和所述路径二叉树,获得每个所述路径前缀对应的完整路径;

按照预设规则对每个所述路径前缀对应的完整路径中的约束真值取反,获得所述每个路径前缀对应的多个预测路径。

在其中一种可选的实施方式中,任一路径前缀中包括P个结点,则所述任一路径前缀对应的完整路径包括P’个结点,其中所述P小于所述P’;

相应的,所述并行路径搜索模块,具体用于:

对所述任一路径前缀对应的完整路径中的第P个结点至第P’-1个结点对应的约束真值依次取反,获得任一路径前缀对应的P’-P个预测路径。

在其中一种可选的实施方式中,所述规约处理模块,具体用于:

根据所述控制流图的程序结构,确定所述程序结构对应的规约类型,并按照与所述规约类型对应的规约算法对所述程序结构进行处理;其中所述规约类型包括单选择型、多选择型和循环型。

本发明提供的符号执行的并行路径搜索方法及装置,通过采用对获取程序的控制流图进行规约处理,获得所述控制流图的路径二叉树;选取所述路径二叉树中的任意一路径,并获得所述路径对应的约束条件的真值序列;沿对所述真值序列中的各约束真值逆序取反,获得多个路径前缀;根据所述路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对所述多个预测路径同时进行路径搜索的方式,从而实现对多个路径的并行搜索,从而有效提高了搜索效率,降低搜索难度。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1本发明实施例一提供的一种符号执行的并行路径搜索方法的流程示意图;

图2本发明实施例二提供的一种符号执行的并行路径搜索方法的流程示意图;

图3本发明实施例三提供的一种符号执行的并行路径搜索装置的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

符号执行技术在软件测试、软件脆弱性、漏洞挖掘等领域有着重要的应用,其中在程序执行过程中以符号输入代替实际输入,将程序变量符号化,并在分析中通过插桩不断收集路径约束条件,通过约束求解器生成测试用例以提高软件测试的覆盖率或发现软件存在的脆弱性。相较之传统的模糊测试在对待检测程序进行深层次分析具有较大的优势。

其中,本申请将先对符号执行技术的相关概念进行简述:

符号执行过程基于的原理可表述为对待分析的单个过程代码对象构建控制流图,然后从控制流图的入口点开始,将所涉及到的变量符号化,依次解析程序中的语句和指令,翻译为符号表达式。符号执行过程中若遇到流程控制语句,则将条件判断语句对变量值的要求附加到路径条件中,之后使用约束求解器判定哪条分支可行,并根据预先设计的路径调度策略实现对该过程所有路径的遍历分析,最后输出每条可执行路径的分析结果。

符号执行技术的过程间还包括:对整个程序代码构建函数调用图,在函数调用图中,结点和边分别表示函数和函数间的调用关系。根据预设的全局分析调度策略,函数调用图中的每个结点(对应一个函数)执行过程内分析,最终得到函数调用图每种可行的调用序列的分析结果。

在现有的符号执行技术中,一般采用的深度优先的串行路径搜索方法,即在每次探索完一条完整的程序路径后,对当前完整路径的最后一个非叶子节点上的约束真值取反,作为下一次迭代所预期的路径,直至完成全部路径的搜索。其每一次迭代只能产生一个后续的预期路径作为下一个任务,整个路径探索过程是串行的、有序的。

但是,由于程序路径的分支数据和循环次数巨大,现有技术在面对执行路径的数量级将呈现指数级增长的情况时,将出现路径爆炸的问题。随后,串行路径搜索在理论上可以遍历程序中每一条可达路径并生成测试用例,但在实际执行过程中这一目标往往难以达到。此外,当程序中所需探索的路径数目很多,或者待测程序包含循环等可能包含无限执行路径的结构,串行探索过程的耗时会变得十分显著,且执行效率可能会因为潜在的无限路径情况而降低。

因此,基于现有技术中存在的由于路径之间的结构复杂性高,路径数量大而导致路径搜索效率低,搜索难度大的问题,本发明提供了一种符号执行的并行路径搜索方法及装置。

需要说明的是,这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

图1本发明实施例一提供的一种符号执行的并行路径搜索方法的流程示意图。

如图1所示,该符号执行的并行路径搜索方法,包括:

步骤101、对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树。

需要说明的是,本发明实施例一的执行主体具体可为一种符号执行的并行路径搜索装置,其具体可由逻辑电路、集成芯片、存储器、处理器以及存储器中所运行的程序组成。

具体来说,程序的控制流图是对待分析的单个过程代码对象构建获得的,其是一个过程或程序的抽象表现,代表了一个程序执行过程中会遍历到的所有路径。一般来说,其以图的形式表示一个过程内所有分支汇流点执行的可能流向,也能反映一个过程的实时执行过程。在上述步骤中,当获得程序的控制流图之后,可对该控制流图进行规约处理,以获得可用于表示控制流图中各分支汇流点和路径关系的路径二叉树。

优选地,在步骤101中,可根据控制流图的程序结构,确定程序结构对应的规约类型,并按照与规约类型对应的规约算法对程序结构进行处理,其中规约类型包括单选择型、多选择型和循环型。

具体来说,并行路径搜索装置将程序的控制流图进行规约处理,主要表现为对控制流图中几种较为复杂的情形进行规约处理,获得路径二叉树,以为后续对路径二叉树实施并行搜索做好准备。

其中的单选择型指的是将控制流图上的分支汇流点进行复制处理,以使由入度为2的汇流点变换为两个入度为1的汇流点,而入度为1的分支汇流点可变换为其父汇流点的左孩子或右孩子汇流点(默认为左孩子结点);多选择型指的是对于控制流图上存在的出度大于2的汇流点,转换为多个出度等于2的汇流点。两条出度边分别射向该汇流点的左孩子汇流点和右孩子汇流点;多选择型指的是将循环进行去环规约,去除循环的回边,转换为只有真出口和假出口两条射出弧的情形。

此外,在本实施例中获得的路径二叉树具体可以一维数组的形式存在,如该数组可采用对路径二叉树的汇流点从上至下,从左往右的顺序在数组中进行存放:树根汇流点的编号为0,其左孩子汇流点编号为1,右孩子汇流点编号为2,编号为1的汇流点左孩子汇流点编号为3,右孩子汇流点编号为4,即编号为i的汇流点的左孩子汇流点的编号为2i+1,右孩子汇流点的编号为2i+2。同时在该数组中会存放每个汇流点是否为叶子汇流点的标识信息,其中叶子汇流点对应一条路径上所有汇流点中处于最后的一个汇流点,其用于表示该条路径的结束。

步骤102、选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列。

步骤103、沿对真值序列中的各约束真值逆序取反,获得多个路径前缀。

具体来说,在步骤102和103中,由于路径二叉树中包括有各汇流点和路径结构,从路径二叉树中选取任意一条路径,并对该路径进行约束条件分析以获得该路径的约束条件的真值序列。其中,真值序列由0和1的一维数组组成,其每一个数字均表示的一个约束真值,即路径上的汇流点在约束条件下的真假分支走向。举例来说,选取任意一条完整路径,对其进行分析以获得该路径的真值序列<0,0,0>。

随后,沿对真值序列中的各约束真值逆序取反,获得多个路径前缀。以上述的真值序列为例,取反后获得的多个路径前缀为<0,0,1>,<0,1>,<1>。其中,<0,0,1>为对<0,0,0>的最后一约束真值取反,<0,1>为对<0,0,0>的倒数第二约束真值取反,<1>为对<0,0,0>的倒数第三约束真值取反。可知的是,这些路径前缀并没有经过约束条件分析,即这些路径前缀为未产生路径的前缀。

步骤104、根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索。

具体来说,当获得多个路径前缀之后,针对于每个路径前缀,可获得其对应的多个预测路径,即未产生路径。以路径前缀<0,1>为例,根据路径二叉树中的路径结构,可获得其对应的预测路径<0,1,0>,<0,1,1>。类似的,同时还可获取其他路径前缀的预测路径。随后,路径搜索装置将为每个路径前缀分配一个线程,以使可对多个预测路径同时进行路径搜索,即针对<0,0,1>,<0,1>,<1>这三个路径前缀,分别为每一个路径前缀分配一个线程,以使每个线程处理一个路径前缀对应的预测路径的路径探索任务。

通过采用对多个路径前缀对应的预测路径进行并行处理的方式,能够在单位时间内尽可能多的对预测路径进行处理,此外,由于路径前缀是对路径二叉树中的任意路径的各真值序列分别取反获得的,因此,各路径前缀对应的预测路径之间不会出现预测路径重叠的情况,即线程对每一预测路径进行的搜索均为对该路径进行的第一次搜索,进而进一步保证路径的搜索效率和搜索覆盖率。

本实施例一提供符号执行的并行路径搜索方法,通过采用对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树;选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列;沿对真值序列中的各约束真值逆序取反,获得多个路径前缀;根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索的方式,从而实现对多个路径的并行搜索,从而有效提高了搜索效率,降低搜索难度。

在上述实施例一的基础上,为了进一步提高搜索效率,图2本发明实施例二提供的一种符号执行的并行路径搜索方法的流程示意图。

如图2所示,该符号执行的并行路径搜索方法包括:

步骤201、对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树。

步骤202、选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列。

步骤203、沿对真值序列中的各约束真值逆序取反,获得多个路径前缀。

步骤204、根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索。

步骤205、判断全部的预测路径的数量是否大于预设阈值。

若是,则结束搜索。若否,则执行步骤206。

步骤206、将全部的预测路径作为路径前缀,并返回步骤204。

需要说明的是,与实施例一类似的是,本发明实施例二的执行主体具体可为一种符号执行的并行路径搜索装置,其具体可由逻辑电路、集成芯片、存储器、处理器以及存储器中所运行的程序组成。

具体来说,程序的控制流图是对待分析的单个过程代码对象构建获得的,其是一个过程或程序的抽象表现,代表了一个程序执行过程中会遍历到的所有路径。一般来说,其以图的形式表示一个过程内所有分支汇流点执行的可能流向,也能反映一个过程的实时执行过程。在上述步骤中,当获得程序的控制流图之后,可对该控制流图进行规约处理,以获得可用于表示控制流图中各分支汇流点和路径关系的路径二叉树。

优选地,在步骤201中,可根据控制流图的程序结构,确定程序结构对应的规约类型,并按照与规约类型对应的规约算法对程序结构进行处理,其中规约类型包括单选择型、多选择型和循环型。

路径搜索装置将程序的控制流图进行规约处理,主要表现为对控制流图中几种较为复杂的情形进行规约处理,获得路径二叉树,以为后续对路径二叉树实施并行搜索做好准备。

其中的单选择型指的是将控制流图上的分支汇流点进行复制处理,以使由入度为2的汇流点变换为两个入度为1的汇流点,而入度为1的分支汇流点可变换为其父汇流点的左孩子或右孩子汇流点(默认为左孩子结点);多选择型指的是对于控制流图上存在的出度大于2的汇流点,转换为多个出度等于2的汇流点。两条出度边分别射向该汇流点的左孩子汇流点和右孩子汇流点;多选择型指的是将循环进行去环规约,去除循环的回边,转换为只有真出口和假出口两条射出弧的情形。

此外,在本实施例中获得的路径二叉树具体可以一维数组的形式存在,如该数组可采用对路径二叉树的汇流点从上至下,从左往右的顺序在数组中进行存放:树根汇流点的编号为0,其左孩子汇流点编号为1,右孩子汇流点编号为2,编号为1的汇流点左孩子汇流点编号为3,右孩子汇流点编号为4,即编号为i的汇流点的左孩子汇流点的编号为2i+1,右孩子汇流点的编号为2i+2。同时在该数组中会存放每个汇流点是否为叶子汇流点的标识信息,其中叶子汇流点对应一条路径上所有汇流点中处于最后的一个汇流点,其用于表示该条路径的结束。

由于路径二叉树中包括有各汇流点和路径结构,从路径二叉树中选取任意一条路径,并对该路径进行约束条件分析以获得该路径的约束条件的真值序列。其中,真值序列由0和1的一维数组组成,其每一个数字均表示的一个约束真值,即路径上的汇流点在约束条件下的真假分支走向。举例来说,选取任意一条完整路径,对其进行分析以获得该路径的真值序列<0,0,0>。

随后,沿对真值序列中的各约束真值逆序取反,获得多个路径前缀。以上述的真值序列为例,取反后获得的多个路径前缀为<0,0,1>,<0,1>,<1>。其中,<0,0,1>为对<0,0,0>的最后一约束真值取反,<0,1>为对<0,0,0>的倒数第二约束真值取反,<1>为对<0,0,0>的倒数第三约束真值取反。可知的是,这些路径前缀并没有经过约束条件分析,即这些路径前缀为未产生路径的前缀。

当获得多个路径前缀之后,针对于每个路径前缀,可获得其对应的多个预测路径,即未产生路径。以路径前缀<0,1>为例,根据路径二叉树中的路径结构,可获得其对应的预测路径<0,1,0>,<0,1,1>。类似的,同时还可获取其他路径前缀的预测路径。随后,路径搜索装置将为每个路径前缀分配一个线程,以使可对多个预测路径同时进行路径搜索,即针对<0,0,1>,<0,1>,<1>这三个路径前缀,分别为每一个路径前缀分配一个线程,以使每个线程处理一个路径前缀对应的预测路径的路径探索任务。

与实施例一不同的是,本发明实施例二还包括对全部的预测路径的数量是否大于预设阈值的判定,当全部的预测路径的数量不大于预设阈值时,将全部的预测路径作为路径前缀,并返回根据路径二叉树确定每个路径前缀对应的多个预测路径的步骤。通过采用该循环判定和循环获得路径前缀的方式,能够获得尽量多的预测路径,从而有效增大了路径搜索覆盖率。

优选的,在本实施例二中可采用如下方式确定每个路径前缀对应的多个预测路径,以获得尽可能多的不同的预测路径:根据每个路径前缀和路径二叉树,获得每个路径前缀对应的完整路径;按照预设规则对每个路径前缀对应的完整路径中的约束真值取反,获得每个路径前缀对应的多个预测路径。

举例来说,若任一路径前缀中包括P个结点,则任一路径前缀对应的完整路径包括P’个结点,其中P小于P’;相应的,按照预设规则对任一路径前缀对应的完整路径中的约束真值取反,获得任一路径前缀对应的多个预测路径,包括:对任一路径前缀对应的完整路径中的第P个结点至第P’-1个结点对应的约束真值依次取反,获得任一路径前缀对应的P’-P个预测路径。

进一步举例来说,在本实施例二中,由于需要对全部预测路径的数量进行判定,因此,可建立一任务列表Q,以用于存储需要进行搜索的预测路径并按照任务列表Q中的预测路径进行线程分配。其中,路径前缀的结点数2个,其可表示为<0,1>,根据路径二叉树获得该路径前缀的任意一条结点数为4个的完整路径,随后,对完整路径的真值序列<0,1,1,1>来说,从第2个结点开始,直至第3个结点分别进行取反操作,并获得2个预测路径<0,0>以及<0,1,0>,存储至任务列表Q中。

本实施例二通过采用对多个路径前缀对应的预测路径进行并行处理的方式,能够在单位时间内尽可能多的对预测路径进行处理,此外,由于路径前缀是对路径二叉树中的任意路径的各真值序列分别取反获得的,因此,各路径前缀对应的预测路径之间不会出现预测路径重叠的情况,即线程对每一预测路径进行的搜索均为对该路径进行的第一次搜索,进而进一步保证路径的搜索效率和搜索覆盖率。

图3本发明实施例三提供的一种符号执行的并行路径搜索装置的结构示意图。

如图3所示,该符号执行的并行路径搜索装置,包括:

规约处理模块10,用于对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树;

并行路径搜索模块20,用于选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列;沿对真值序列中的各约束真值逆序取反,获得多个路径前缀;根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索。

可选的,并行路径搜索模块20,具体用于:判断全部的预测路径的数量是否大于预设阈值;若否,则将全部的预测路径作为路径前缀,并返回根据路径二叉树确定每个路径前缀对应的多个预测路径的步骤,直至全部的预测路径的数量大于预设阈值。

可选的,并行路径搜索模块20,具体用于:根据每个路径前缀和路径二叉树,获得每个路径前缀对应的完整路径;按照预设规则对每个路径前缀对应的完整路径中的约束真值取反,获得每个路径前缀对应的多个预测路径。

可选的,任一路径前缀中包括P个结点,则任一路径前缀对应的完整路径包括P’个结点,其中P小于P’;

相应的,并行路径搜索模块20,具体用于:对任一路径前缀对应的完整路径中的第P个结点至第P’-1个结点对应的约束真值依次取反,获得任一路径前缀对应的P’-P个预测路径。

可选的,规约处理模块10,具体用于:根据控制流图的程序结构,确定程序结构对应的规约类型,并按照与规约类型对应的规约算法对程序结构进行处理;其中规约类型包括单选择型、多选择型和循环型。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程以及相应的有益效果,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明提供的符号执行的并行路径搜索装置,通过采用对获取程序的控制流图进行规约处理,获得控制流图的路径二叉树;选取路径二叉树中的任意一路径,并获得路径对应的约束条件的真值序列;沿对真值序列中的各约束真值逆序取反,获得多个路径前缀;根据路径二叉树确定每个路径前缀对应的多个预测路径,为每个路径前缀分配一个线程,以使对多个预测路径同时进行路径搜索的方式,从而实现对多个路径的并行搜索,从而有效提高了搜索效率,降低搜索难度。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号