用于漏洞发掘的动态符号执行可视化方法技术

技术编号:14854459 阅读:71 留言:0更新日期:2017-03-18 21:51
用于漏洞发掘的动态符号执行可视化方法,本发明专利技术涉及符号执行可视化技术领域,解决现有技术在漏洞发掘过程中符号执行不能够动态呈现,难于克服代码覆盖瓶颈导致的遍历效率低等技术问题。本发明专利技术主要包括启动漏洞挖掘工具和符号执行可视化工具;将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支节点,再由漏洞挖掘工具发送分支信息至分支节点;利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体统计数据;在总体统计数据中,根据调用数据和分支信息,由符号执行树绘制模块创建下一次分支节点并设置其位置。本发明专利技术用于符合执行可视化。

【技术实现步骤摘要】

本专利技术涉及符号执行可视化
,具体涉及用于漏洞发掘的动态符号执行可视化方法
技术介绍
如今软件测试领域的发展越来越倾向于使用测试自动生成技术来提升软件测试效率,这项技术现已工业化应用在大量的软件开发项目上了。有一些方法采用从源码中自动生成测试用例的方式来维持测试自动生成,其中一个就是符号执行。符号执行是一项执行中收集约束并使用约束表达式来表示代码执行路径的程序分析技术,通过取反约束并求解可以计算出能达到对应新路径的测试用例,不断地重复这个过程可以逐渐覆盖不同的程序执行路径,达到挖掘漏洞的目的。不过这项技术在实际应用中常常遇到一些执行局限或者说覆盖瓶颈的问题,即执行到一定程度之后无法继续增加代码覆盖率。这些瓶颈可能是由被测程序执行前的预先配置所引起,也有可能是测试环境的干预造成的,这种问题的原因是多样的,分析过程比较复杂。在这种情况下,将符号执行和测试生成过程可视化能极大地帮助快速分析问题并准确定位问题原因。分析人员(也是存在的困难)需要清楚地了解还有哪些代码块没有被遍历,需要进入哪个分支才能进入这些未被遍历的代码块,需要做哪些可能的修改才能产生对应的测试用例导向这些未被遍历的代码块。
技术实现思路
针对上述现有技术,本专利技术目的在于提供用于漏洞发掘的动态符号执行可视化方法,解决现有技术在漏洞发掘过程中符号执行不能够动态呈现,难于克服代码覆盖瓶颈导致的遍历效率低等技术问题。为达到上述目的,本专利技术采用的技术方案如下:用于漏洞发掘的动态符号执行可视化方法,包括如下步骤,步骤1、启动漏洞挖掘工具和符号执行可视化工具;步骤2、将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;步骤3、由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支节点,再由漏洞挖掘工具发送分支信息至分支节点;步骤4、利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体统计数据;步骤5、符号执行可视化工具继续等待至得到新的分支信息时,紧接着上一个分支点后,符号执行树绘制模块在图形化界面创建下一个分支节点并设置其位置,重复进行此步骤直到此轮符号执行结束。上述方法中,所述的步骤3,其中发送分支信息至分支节点,包括发送:分支语句在源码中的位置信息、分支条件表达式信息和分支条件的真假取值信息。上述方法中,所述的步骤5,包括如下步骤,步骤5.1、在绘制分支节点时,判断当前分支节点的调用状态是否为第一次调用;步骤5.2.1、如果调用状态为第一次调用,则直接由符号执行树绘制模块构建出新的分支节点,并将新的分支节点续接在根节点下方;步骤5.2.2、如果调用状态不是第一次调用,则由符号执行树绘制模块构建出新的分支节点,并将新的分支节点续接到上一次分支节点真假取值成立的位置。上述方法中,还包括步骤6、判断出此轮符号执行完成,通过符号执行树绘制模块构建叶子节点标记出当前路径的结束节点。上述方法中,所述的步骤6,包括如下步骤,步骤6.1.1、如果此轮符号执行还未完成,则跳转至步骤5;步骤6.1.2、如果此轮符号执行完成,则由符号执行树绘制模块为最后构建的分支节点对应真假取值成立的位置续接一个叶子节点,表示此轮符号执行的结束;步骤6.2、将叶子节点标记为路径结束节点,然后再跳转至步骤2进行下一轮的符号执行。与现有技术相比,本专利技术的有益效果:本专利技术通过可视化地展现符号执行和测试生成的过程,能让分析人员直观地了解执行过程的停滞点,并快速辨认出需要着手的修改位置,经过不断地修改、调整和观察可以突破之前遇到的覆盖瓶颈,然后进一步地继续增加代码覆盖率;本专利技术符号执行可视化还有另外一个重要的应用,它能在教育学术领域发挥它的直观展示能力,提升教学体验,成为学术领域解释说明符号执行的工具,历来要介绍符号执行都只能使用静态图片和文字描述来解释说明,这种非直观的方式需要使用大量的篇幅来完成介绍,并且学习者也需要足够的时间和精力来理解这些知识,如果使用可视化方法直观地动态展现符号执行和测试生成过程,这将很大程度上帮助符号执行的教学展现,提高这项技术的可理解程度;本专利技术实现符号执行的可视化无论对于提高软件测试效率还是提升符号执行教育学术质量都有着重大的意义。附图说明图1为本专利技术的符号执行树定义图;图2为本专利技术的符号执行树绘制算法流程图;图3为本专利技术的界面设计图。具体实施方式本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。下面结合附图对本专利技术做进一步说明:实施例1大多数符号执行工具都支持编写第三方插件,并且开放了内部的接口给插件使用。此次可视化的调用算法将在插件代码里实现。插件内的算法可以获取到符号执行工具当前正在执行的代码类型,检测其是否为分支语句,一旦检测到即调用可视化工具进行可视化操作。符号执行可视化的具体执行流程如下:启动漏洞挖掘工具和符号执行可视化工具符号执行可视化工具等待调用漏洞挖掘工具执行到分支点漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建分支节点,并传入分支信息(分支位置,分支条件,分支条件的真假取值)。符号执行可视化工具的数据统计模块更新现在的总体统计数据如果是第一次调用则直接构建新的分支节点,把它续接在根节点下方;如果不是第一次,符号执行树绘制模块会将当前新构建的节点在上一次分支节点真假取值成立的位置上续接成为其子节点。如果本轮符号执行还未完成则跳转至B;如果本轮符号执行已经完成则为最后构建的分支节点对应真假取值成立的位置再续接一个叶子节点,并标记它为路径结束节点,然后跳转至B。在可视化界面,使用符号执行树来表达整个符号执行的路径扩展流程。符号执行树是一颗二叉树,表示从程序起始点出发,经过可能的分支一直执行到程序结束点的所有路径的集合。本专利技术的可视化界面中符号执行树的图形定义如下:节点形状:分支节点为矩形,其左下角和右下角连接它的左右分支。左分支表示其分支条件取真之后的路径,右分支表示其分支条件取否之后的路径。结束节点为圆形,表示本轮执行的结束。连接线:所有节点的连接线皆为箭头,表示路径分支路径走向。填充颜色:所有分支节点皆为黄色。结束节点的颜色取决于它这一轮执行是否有收集到新的约束以及是否捕获到了漏洞。在没有捕获漏洞的情况下,如果没有收集到新的约束则标记为灰色,如果收集到了则为绿色。一旦捕获到了漏洞,结束节点标记为红色。示例程序:依照示例程序的符号执行树,如图1。图形内存储的数据的数据字典如下:1)分支节点基本信息序列号:按照构建次序标记的序列号;深度:分支语句所在的代码深度;分支条件:此分支点内所包含的分支判断条件。取真分支子节点链接:当分支条件取真之后下一次遇到的第一个分支节点(若这个分支没有被执行过则置为空,若执行过但其后无分支点则链接结束节点)。取否分支子节点链接:当分支条件取否之后下一次遇到的第一个分支节点(若这个分支没有被执行过则置为空,若其后无分支点则链接结束节点)。2)结束节点基本信息约束收集情况:此轮执行是否收集到了新约束;漏洞检测情况:此轮执行是否捕获了漏洞;3)分支路径箭头基本信息深度:进入此分支后其代码深度值为多少;约束:到此路径时所收集到的所有约束条件。当前分支条件:要进入此分支需要上一个分支点内的判断语句满足什本文档来自技高网...
用于漏洞发掘的动态符号执行可视化方法

【技术保护点】
用于漏洞发掘的动态符号执行可视化方法,其特征在于,包括如下步骤,步骤1、启动漏洞挖掘工具和符号执行可视化工具;步骤2、将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;步骤3、由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支节点,再由漏洞挖掘工具发送分支信息至分支节点;步骤4、利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体统计数据;步骤5、符号执行可视化工具继续等待至得到新的分支信息时,紧接着上一个分支点后,符号执行树绘制模块在图形化界面创建下一个分支节点并设置其位置,重复进行此步骤直到此轮符号执行结束。

【技术特征摘要】
1.用于漏洞发掘的动态符号执行可视化方法,其特征在于,包括如下步骤,步骤1、启动漏洞挖掘工具和符号执行可视化工具;步骤2、将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;步骤3、由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支节点,再由漏洞挖掘工具发送分支信息至分支节点;步骤4、利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体统计数据;步骤5、符号执行可视化工具继续等待至得到新的分支信息时,紧接着上一个分支点后,符号执行树绘制模块在图形化界面创建下一个分支节点并设置其位置,重复进行此步骤直到此轮符号执行结束。2.根据权利要求1所述的用于漏洞发掘的动态符号执行可视化方法,其特征在于,所述的步骤3,其中发送分支信息至分支节点,包括发送:分支语句在源码中的位置信息、分支条件的表达式信息和分支条件的真假取值信息。3.根据权利要求1所述的用于漏洞发掘的动态符号执行可视化方法,其特征在于,所述的步骤5,包括如下步骤,步骤5.1、在绘制分支...

【专利技术属性】
技术研发人员:张小松陈厅张泽亮牛伟纳陈瑞东朱迦南全威龙王中晴周旷
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1