[发明专利]一种基于静态路径分析的导向符号执行方法在审
| 申请号: | 201410738073.0 | 申请日: | 2015-08-04 |
| 公开(公告)号: | CN104503901A | 公开(公告)日: | 2015-07-29 |
| 发明(设计)人: | 肖奇学;陈渝;张知皦;史元春;郭世泽;茅俊杰;吴志勇;肖络元;赵静 | 申请(专利权)人: | 中国人民解放军总参谋部第五十四研究所;清华大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京理工大学专利中心 11120 | 代理人: | 仇蕾安 |
| 地址: | 100191 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 静态 路径 分析 导向 符号 执行 方法 | ||
1.一种基于静态路径分析的导向符号执行方法,其特征在于,包括以下步骤:
步骤一、首先通过静态分析确定检测的目标,找到目标程序中内存分配相关的代码或指令;
步骤二、获取从程序起始点到指定代码点的路径相关函数和基本块,并依据路径可达性和距离对这些函数和基本块进行权值计算,形成一个基于代码基本块的加权源-目标有向图;
步骤三、函数和基本块路径的权值确定后,通过符号执行寻找实际可达路径,优先选择权值大的静态分析可达路径进行遍历,减少路径探测引发的组合爆炸;
步骤四、静态路径分析:首先分析指定的起点和终点之间路径可达性关系,然后获取可达路径相关的函数和基本块信息,最后利用函数、基本块之间的可达性和路径距离进行权值设定;
步骤五、导向符号执行:将静态路径分析所得到的路径相关的函数和基本块信息放到Paths[funcs,bbs]中,所有要分析的目标指令存放到allocCallInst的Vector中,states中存放当前所有的路径状态,当符号执行引擎对目标程序进行执行分析,通过循环对程序中的指令进行逐条解释执行。
2.如权利要求1所述的一种基于静态路径分析的导向符号执行方法,其特征在于,其中逐条解释执行采用以下方法:首先通过选择路径算法选择权值最大的路径优先执行,在符号执行的过程中,如果碰到退出或者发生错误将产生相应的测试用例并退出该路径,如果遇到函数调用指令,则判断是否是我们需要检测的目标指令,如果是则将进行检测,输出到达目标指令的路径并生成相应的测试输入;当执行到分支指令时,则对分支跳转的基本块进行判断,在符号求解之后检查可跳转的基本块是否在静态分析的相关路径的基本块中,如果是则加入要执行的路径状态,如果不是则不加入,从而实现路径相关的选择。
3.如权利要求2所述的一种基于静态路径分析的导向符号执行方法,其特征在于,其中选择路径算法为在每次路径选择时,通过对当前所有的状态进行遍历,依据静态分析的结果来选择当前权值最大的基本块作为下一个执行的路径。
4.如权利要求1或2或3所述的一种基于静态路径分析的导向符号执行方法,其特征在于,其中导向符号执行中还包括整数敏感的符号执行。
5.如权利要求1或2或3所述的一种基于静态路径分析的导向符号执行方法,其特征在于,其中步骤四中静态路径分析具体包括以下步骤:
(1)首先确定路径分析的起点和终点:main函数入口为起点,终点由用户指定,通过目标代码的位置,找到相应指令和函数位置;
(2)通过函数调用关系图分析,获取从程序入口到达目标函数的路径,以函数名称和调用指令所在基本块作为路径节点;
(3)在上述分析得到的路径基础上,在函数内以基本块为单位进行路径分析,获取从函数入口基本块到调用指令所在基本块函数内路径;
(4)根据后面启发式符号执行所需要的信息,建立可达路径节点集合和不可达路径节点集合;集合中的节点由函数和基本块组成,可达路径集合包括前面所获取的路径上的所有节点,而不可达节点目前仅包含在前面获取的路径上的函数内,但不属于可达路径集合的节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军总参谋部第五十四研究所;清华大学,未经中国人民解放军总参谋部第五十四研究所;清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410738073.0/1.html,转载请声明来源钻瓜专利网。





