[发明专利]一种基于CPG+图的隐式依赖模式分析方法在审

专利信息
申请号: 202210647102.7 申请日: 2022-06-09
公开(公告)号: CN114879974A 公开(公告)日: 2022-08-09
发明(设计)人: 晋武侠;周瑞彪;刘烃;范铭;刘杨;钟定洪 申请(专利权)人: 西安交通大学
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 西安通大专利代理有限责任公司 61200 代理人: 王艾华
地址: 710049 *** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 cpg 依赖 模式 分析 方法
【权利要求书】:

1.一种基于CPG+图的隐式依赖模式分析方法,其特征在于,包括如下步骤:

S1:输入Python项目,通过ENRE工具获取对象的依赖关系;

S2:获取对象的抽象语法树;

S3:预处理以便后续对图的操作;

S4:获取代码中方法的控制流图,获取节点顺序;

S5:若方法中含有隐式依赖,获得其隐式依赖发生节点的数据流;

S6:合并抽象语法树、控制流图以及基于隐式依赖的数据流图;

S7:从合并的图中通过VF2算法获得隐式依赖发生处,寻找它们的父节点。赋值替换,获取从函数到依赖发生处的变换,从而判断隐式依赖模式。

2.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S1中,采用ENRE工具分析对象的隐式依赖模式并输出,作为信息输入到程序中。

3.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S2中,获取对象的抽象语法树json格式,并根据json数据绘制抽象语法树(Abstract SyntaxTree,AST),过程中保留需要的信息lineno属性、type属性、value属性。

4.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S3中,为了便于后续的三种图的合并,需要进行预处理,步骤S3具体包括:

S301:当函数体中调用与控制流起始节点函数名相同的方法时,会出现指向控制流起始节点的边,造成循环,控制流起始节点是函数控制流的根节点,不应该存在父节点,在生产控制流的过程中进行删除;

S302:由于是根据json数据生成抽象语法树,而ast2json项目只是简单的返回Python文件被AST库解析语法树后所有的属性和对应的值,在实际代码分析中,节点的“lineno(开始行)”属性和“end_lineno(结束行)”属性会被一些属性分开,在递归地处理json数据时,会造成节点只有“lineno(开始行)属性”,从而在后续的处理中发生错误,因此需要调整解析语法树后返回的json数据,对控制流图返回的语句节点规定排序,从而保证顺序一致,从而便于后续的图合并操作;

S303:由于程序依赖图Program Dependency Graph,PDG与控制流图Control FlowGraph,CFG都是在语句层面的解析,因此,先将PDG与CFG的信息联立,从而便于后续信息建立,为此通过CFG去寻找隐式依赖,从而无需在考虑PDG的节点顺序关系;

S304:初始的绘制控制流图仅有基本的if、for语句的处理,根据出现频次,优先增加对raise、with、try-except语句的处理;添加Python特有的for-else、while-else语句。

5.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S4中,获取的控制流程图对于for else、with、try-except语句,获得的控制流图节点顺序与抽象语法树中节点顺序不尽相同,需要调整顺序,以便能合并到抽象语法树中。

6.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S5中,首先寻找到方法中隐式依赖的源码,并往上寻找与依赖有关的数据流,对此进行了一系列的处理,步骤S5具体包括:

S501:正则化隐式依赖信息,并与源码匹配,寻找隐式依赖的源码;

S502:从隐式依赖源码处往上寻找与隐式依赖有关的数据流,数据流可能存在分支,因此最终可能会有多条数据流指向隐式依赖。

7.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S6中,合并获取的抽象语法树、控制流图、隐式依赖数据流图,形成一个联合数据结构,从而批量化的处理及挖掘。

8.根据权利要求1所述基于CPG+图的隐式依赖模式分析方法,其特征在于,所述步骤S7中,根据S6中获取的数据结构,通过子图匹配算法,发现所有的依赖发生处,并从中挖掘判断隐式依赖模式。

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

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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