[发明专利]一种新型分析信息流的方法无效

专利信息
申请号: 200910233881.0 申请日: 2009-10-23
公开(公告)号: CN102043925A 公开(公告)日: 2011-05-04
发明(设计)人: 鞠时光;李骁淳 申请(专利权)人: 镇江雅迅软件有限责任公司
主分类号: G06F21/22 分类号: G06F21/22;H04L29/06
代理公司: 暂无信息 代理人: 暂无信息
地址: 212009 江苏省镇江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 新型 分析 信息 方法
【权利要求书】:

1.一种基于系统源代码搜索隐通道的信息流分析方法,其特征在于,所述信息流分析方法包括下列步骤:

(1)借助程序设计语言编译系统中的词法分析程序,扫描系统源代码,分别识别出源代码中的函数和函数中的语句、变量;

(2)根据扫描程序识别出的函数以及函数调用语句,确定函数间的调用关系,构造语句树段,给出每个函数的函数依赖集;

(3)根据扫描程序识别出的能产生信息流的语句和变量,作为信息流分析的输入,构造函数信息流树,并进行剪枝;

(4)遍历函数信息流树,输出每个函数的信息流向图;

(5)根据函数依赖集和它的信息流向图,以函数依赖集为单位,获得依赖集中函数间的共享变量可见性和可修改性信息,生成共享资源矩阵;

(6)以共享资源矩阵作为输入,搜索隐通道,输出系统中存在的隐通道序列。

2.根据权利要求1所述的分析方法,其特征在于,所述扫描系统源代码步骤中具体采用词法分析程序对系统源代码进行扫描。

3.根据权利要求1所述的分析方法,其特征在于,所述语句信息流规则中,将语句分为赋值语句、函数返回值语句、函数调用语句、控制语句和嵌套控制语句五类,分别给出它们的信息流规则。

4.根据权利要求1所述的分析方法,其特征在于,所述语句树段构造规则是:语句信息流的源变量信息始终记录在左孩子变量结点中,而语句信息流的目标变量信息始终记录在右孩子变量结点中。

5.根据权利要求1所述的分析方法,其特征在于,所述剪枝算法包括以下步骤:

(1)对函数中的语句,构造语句树段,若语句为简单语句,则按步骤(2)处理;若语句为嵌套控制语句,则按步骤(3)处理;

(2)对函数中简单语句树段进行遍历,遍历的过程中查看是否需要剪枝:遍历源变量结点时,按步骤(4)处理;遍历目标变量结点时,按(5)处理;遍历非变量结点时,无需任何处理;

(3)函数中嵌套控制语句的信息流树进行遍历,遍历的过程中查看是否需要剪枝:遍历目标变量结点时,按步骤(5)处理;遍历源变量结点时,查看以它为源变量的目标变量结点:若有某一目标变量结点与其记录的变量相同,则无需任何处理;否则,按步骤(4)处理;遍历非变量结点时,无需任何处理;

(4)对源变量结点,考察已生成的函数信息流树中的每一个变量结点,若其中某一变量结点是它父结点的右孩子,且与该源变量结点记录的是同一变量,则分以下两种情况处理:

①记录的是局部变量,则将这一变量结点的父结点的左子树复制,并替换该源变量结点;

②记录的是全局变量,则将这一变量结点的父结点的左子树复制,并作为该源变量结点的左子树;

(5)对目标变量结点,考察已生成的函数信息流树中的每一个变量结点,若其中某一变量结点是它父结点的右孩子,且与该结点记录的是同一变量,则分以下三种情况处理:

①这一变量结点有左子树,则用“nullstmt”类型结点替换它;

②这一变量结点无左子树,且它的父结点和右孩子结点均为语句结点,则将它所在的语句树段从树中删除;

③这一变量结点无左子树,且它的父结点或右孩子结点不是语句结点,则仅将此变量结点从信息流树中删除;

(6)将经过剪枝处理的语句树段连到函数信息流树中;

(7)对函数中每一条语句,重复以上步骤,直到函数体结束;

(8)对得到的函数信息流树考察其所有变量结点,若某一变量结点是它父结点的左孩子,且结点中记录的是局部变量,则将该变量结点从树中删除;

(9)对得到的函数信息流树考察其每一个语句树段,对简单语句树段,按步骤(10)处理;对嵌套控制语句树段,按步骤(11)处理;

(10)对简单语句树段,若其中某一变量结点是它父结点的右孩子,且它记录的是局部变量,则分以下两种情况处理:

①这一变量结点的父结点和右孩子结点均为语句结点,则将此树段从信息流树中删除;

②这一变量结点的父结点或右孩子结点是变量结点,则仅将此结点从语句树段中删除;

(11)对嵌套控制语句树段,若其中某一变量结点是它父结点的右孩子,且它记录的是局部变量,则分以下两种情况处理:

①这一变量结点的父亲结点和右孩子结点都不是变量结点,则用null类型结点代替此结点;

②这一变量结点的父亲结点或右孩子结点是变量结点,则仅将此右子树结点从语句树段中删除。

6.根据权利要求1所述的分析方法,其特征在于,由函数信息流树生成信息流向图的方法如下:

(1)信息流树线索化

在构造语句树段时,令源变量结点的右子树指针始终指向其后生成的目标变量或null类型结点,并令目标变量结点的右子树指针也始终指向其后生成的结点;

(2)遍历线索化的信息流树,生成信息流向图

①遍历语句树段寻找目标变量的过程:

a)对树中某一语句树段中的一个源变量结点,设有一指针Q,令其指向该源变量结点的右指针指向的结点;

b)如果Q指向结点是变量类型结点,表示该结点记录的是目标变量,找到一条信息流,将信息流信息写入信息流向图中;

c)若此结点左指针不为空,则Q指向其左指针指向的结点,跳至步骤b);若其左指针为空,则Q指向其右指针指向的结点。若Q为空,或Q指向结点为语句结点,或Q指向结点与源变量结点不在同一语句结点下,则此次遍历结束;

d)如果Q指向结点是语句类型结点,则Q指向它的右指针指向的结点,跳至步骤b);

e)如果Q指向结点是null类型结点,表示则Q指向它的左子树结点,跳至步骤b);

②寻找源变量结点过程

设P为指向信息流树中某一源变量结点的指针,假设根据上述遍历语句树段中目标变量结点的过程,已经找出了所有以P指向结点为源变量的信息流的目标变量结点,接下来要找到树中下一个源变量结点,进行遍历,则在树中寻找下一个源变量结点的过程如下:

a)如果P的左指针不为空,则P指向它的左指针指向的结点,此结点即为要找的下一个源变量结点,寻找过程结束;

b)如果P的左指针为空,则P指向它的右指针指向的结点;

c)跳至第f)步,直至P的左指针不为空;

d)指向它的左指针指向的结点;

e)如果P指向结点是语句结点,则P指向它的左指针指向的结点,此结点即为要找的下一个源变量结点,寻找过程结束。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于镇江雅迅软件有限责任公司,未经镇江雅迅软件有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200910233881.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top