[发明专利]一种基于控制流图的函数调用路径提取方法及装置有效
申请号: | 201510542043.7 | 申请日: | 2015-08-28 |
公开(公告)号: | CN105138335B | 公开(公告)日: | 2018-01-23 |
发明(设计)人: | 牟永敏 | 申请(专利权)人: | 牟永敏;北京信息科技大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京远大卓悦知识产权代理事务所(普通合伙)11369 | 代理人: | 贺持缓 |
地址: | 100101 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 控制 函数 调用 路径 提取 方法 装置 | ||
1.一种基于控制流图的函数调用路径提取方法,其特征在于,包括:对源代码进行处理,获得包含控制流消息的中间代码;将所述中间代码转换为控制流图,并将函数调用保留在所述控制流图的节点中;根据所述控制流图中每一个节点包含的函数调用的个数对控制流图进行处理,将控制流图转换成函数调用关系图;以及根据所述函数调用关系图提取出函数调用路径;所述根据所述控制流图中每一个节点包含的函数调用的个数对控制流图进行处理,将控制流图转换成函数调用关系图,包括:对所述控制流图中每一个节点包含的函数调用的个数进行分类,分为没有函数调用、函数调用个数仅有一个和函数调用个数大于一个;对于没有函数调用的节点,删除该节点或者将该节点与其上层节点或下层节点进行合并;对于函数调用个数仅有一个的节点,将该节点的名称重命名为函数名称;对于函数调用个数大于一个的节点,为该节点的每个函数调用创建一个新节点,并按顺序连接创建的新节点,再删除该节点,并使该节点的上层节点指向按顺序连接的新节点中的第一个节点,而按顺序连接的新节点中最后一个节点则指向该节点的下层节点;以及根据对没有函数调用的节点、函数调用个数仅有一个的节点和函数调用个数大于一个的节点的处理结果,基于选定的数据结构将控制流图转换成函数调用关系图。
2.根据权利要求1所述的函数调用路径提取方法,其特征在于,所述对源代码进行处理,获得包含控制流消息的中间代码,包括:基于gcc编译器对源代码进行处理,获得包含控制流消息的GCC-GFG中间代码。
3.根据权利要求1或2所述的函数调用路径提取方法,其特征在于,将所述中间代码转换为控制流图,包括:采用pattern-action模式对所述中间代码进行静态分析,将所述中间代码转换为控制流图;其中,pattern-action模式中的pattern是指采用规则匹配,action是指当匹配到指定规则的代码串后,执行该代码串的相关动作。
4.根据权利要求3所述的函数调用路径提取方法,其特征在于,所述规则匹配包括函数声明匹配、基本代码块匹配、goto语句匹配和函数调用匹配。
5.一种基于控制流图的函数调用路径提取装置,其特征在于,包括:中间代码获取模块,用于对源代码进行处理,获得包含控制流消息的中间代码;控制流图获取模块,用于将所述中间代码转换为控制流图,并将函数调用保留在所述控制流图的节点中;函数调用关系图获取模块,用于根据所述控制流图中每一个节点包含的函数调用的个数对控制流图进行处理,将控制流图转换成函数调用关系图;以及函数调用路径获取模块,用于根据所述函数调用关系图提取出函数调用路径;所述函数调用关系图获取模块包括:分类模块,用于对所述控制流图中每一个节点包含的函数调用的个数进行分类,分为没有函数调用、函数调用个数仅有一个和函数调用个数大于一个;处理模块,用于根据所述分类模块的分析结果对各节点进行处理,包括:对于没有函数调用的节点,删除该节点或者将该节点与其上层节点或下层节点进行合并;对于函数调用个数仅有一个的节点,将该节点的名称重命名为函数名称;对于函数调用个数大于一个的节点,为该节点的每个函数调用创建一个新节点,并按顺序连接创建的新节点,再删除该节点,并使该节点的上层节点指向按顺序连接的新节点中的第一个节点,而按顺序连接的新节点中最后一个节点则指向该节点的下层节点;以及转换模块,用于根据所述处理模块的处理结果,基于选定的数据结构将控制流图转换成函数调用关系图。
6.根据权利要求5所述的函数调用路径提取装置,其特征在于,所述中间代码获取模块中包括gcc编译器模块,其用于对源代码进行处理,获得包含控制流消息的GCC-GFG中间代码。
7.根据权利要求5或6所述的函数调用路径提取装置,其特征在于,所述控制流程图获取模块将所述中间代码转换为控制流图,具体包括:采用pattern-action模式对所述中间代码进行静态分析,将所述中间代码转换为控制流图;其中,pattern-action模式中的pattern是指采用规则匹配,action是指当匹配到指定 规则的代码串后,执行该代码串的相关动作。
8.根据权利要求7所述的函数调用路径提取装置,其特征在于,所述规则匹配包括函数声明匹配、基本代码块匹配、goto语句匹配和函数调用匹配。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于牟永敏;北京信息科技大学,未经牟永敏;北京信息科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510542043.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种智能终端软件的自动更新方法
- 下一篇:客户机应用程序和网页集成