[发明专利]一种基于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中获取的数据结构,通过子图匹配算法,发现所有的依赖发生处,并从中挖掘判断隐式依赖模式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210647102.7/1.html,转载请声明来源钻瓜专利网。





