[发明专利]一种污染变量跟踪方法有效
申请号: | 201110407515.X | 申请日: | 2011-12-08 |
公开(公告)号: | CN102567183A | 公开(公告)日: | 2012-07-11 |
发明(设计)人: | 王瑀屏;胡事民;马超;阎栋 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F11/34 | 分类号: | G06F11/34 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹 |
地址: | 100084 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 污染 变量 跟踪 方法 | ||
1.一种污染变量跟踪方法,其特征在于,包括步骤:
A:将直接读取目标设备寄存器数据的函数作为污染函数存储到污染函数库中,根据目标设备驱动源代码建立变量赋值关系图、函数调用关系图和函数被调用关系图,创建用于存放污染变量及相应赋值关系的结果图和用于存放待处理函数的待处理函数队列;
B:根据所述污染函数库,找到直接被所述污染函数赋值的第一污染变量,将所述第一污染变量存入所述结果图中,将所述第一污染变量所在的函数存入所述待处理函数队列;
C:从所述待处理函数队列中取出一个待处理函数,根据所述结果图中已有的污染变量和所述变量赋值关系图,判断所述待处理函数中是否存在新的第二污染变量,如果存在,将所述新的第二污染变量和相应的赋值关系存入所述结果图中,并将所述待处理函数重新放回所述待处理函数队列,然后执行步骤D;否则,直接执行步骤D;
D:根据所述结果图中已有的污染变量、所述函数调用关系图和函数被调用关系图,判断是否存在由于函数调用或者被调用而产生的新的第三污染变量,如果存在,将所述新的第三污染变量和相应的赋值关系存入所述结果图中,并将发现所述新的第三污染变量的函数放入所述待处理函数队列中,然后执行步骤E;否则,直接执行步骤E;
E:判断所述待处理函数队列是否为空队列,如果是,输出所述结果图;否则,执行所述步骤C。
2.如权利要求1所述的方法,其特征在于,所述步骤A具体包括步骤:
A1:将直接读取目标设备寄存器数据的函数作为污染函数存储到污染函数库中;
A2:分析目标设备驱动源代码,根据所述目标设备驱动源代码中的变量和函数信息,建立变量赋值关系图、函数调用关系图和函数被调用关系图;
A3:创建用于存放污染变量及相应赋值关系的结果图和用于存放待处理函数的待处理函数队列。
3.如权利要求1所述的方法,其特征在于,所述步骤D具体包括步骤:
D1:根据所述结果图中已有的污染变量和所述函数调用关系图,判断是否存在第一实参变量被属于已有的污染变量的第一形参变量所污染,如果存在,将所述第一实参变量和相应的赋值关系存入所述结果图中,并将发现所述第一实参变量的函数放入所述待处理函数队列中,然后执行步骤D2;否则,直接执行步骤D2;
D2:根据所述结果图中已有的污染变量和所述函数被调用关系图,判断是否存在第二形参变量被属于已有的污染变量的第二实参变量所污染,如果存在,将所述第二形参变量和相应的赋值关系存入所述结果图中,并将发现所述第二形参变量的函数放入所述待处理函数队列中,然后执行步骤E;否则,直接执行步骤E。
4.如权利要求1所述的方法,其特征在于,所述变量赋值关系图是以变量和代码行号为节点,以赋值关系为边的有向图。
5.如权利要求1所述的方法,其特征在于,所述函数调用关系图是以函数为节点,以调用关系为边的有向图。
6.如权利要求1所述的方法,其特征在于,所述函数被调用关系图是以函数为节点,以被调用关系为边的有向图。
7.如权利要求1所述的方法,其特征在于,所述结果图是以污染变量加行号为节点,以赋值关系为边的有向图。
8.如权利要求1所述的方法,其特征在于,所述待处理函数队列按照先进先出原则管理其中的待处理函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110407515.X/1.html,转载请声明来源钻瓜专利网。