[发明专利]一种带环路径的编码、执行及解码方法有效
申请号: | 201210159676.6 | 申请日: | 2012-05-22 |
公开(公告)号: | CN102693133A | 公开(公告)日: | 2012-09-26 |
发明(设计)人: | 李必信;王璐璐 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 王玉梅 |
地址: | 211189 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 带环 路径 编码 执行 解码 方法 | ||
技术领域
本发明涉及动态程序分析过程中执行信息的收集技术领域,特别是一种带环路径的编码、执行及解码方法。
背景技术
动态程序分析是基于程序执行的分析技术,所以收集程序的执行信息是动态分析方法不可缺少的一部分。为了高效的收集路径的执行信息,现有技术普遍采用路径编码的方式,将每条路径映射到一个或一组整数,以快速的判断当前执行的路径是否与已执行的某条路径相同,方便的进行执行次数的累加。相应的,为了实现路径的编码,在程序执行之前,首先要对程序进行插装,在分析程序的控制流图(CFG,control flow graph)的基础上,在程序的相关位置插入一个或多个探针变量的值操作语句及相关的逻辑控制、探针收集等语句。这样当程序每一次执行完毕之后,所收集的路径编码计算结果就唯一确定该次执行的路径。
对于无环控制流,现有技术采用的路径编码方式是:首先将无环控制流图的每条边分配一个整数权值,各条无环路径的编码即为该路径中所有边对应权值之和。为了实现该种路径编码,在程序中插装的语句仅需在执行中将所执行的边的权值进行累加,便可计算出最终的路径编码。此类方法在处理无环路径上是精确的,且可以保证所有无环路径的编码是连续的整数(即路径编码是紧凑的),从而具有较高的存储效率。
在处理循环的问题上,现有技术沿袭使用边的权值累加的办法进行编码的方案,但每条边在不同的循环执行情况可能具有不同的权值,采用带有逻辑判断的权值累加方案保证各条有环路径具有唯一的编码。但是在实际应用中,复杂的循环往往会导致逻辑判断过于复杂,难以处理。
在实际的应用中,所处理的程序往往是带有循环的,且循环的结构和执行情况多种多样,因此,针对带环路径的实用编码方案不可缺少。
发明内容
本发明的目的是提供一种带环路径的精确编码方法,其能够满足:探针计算与路径编码方式能够保证各条路径的编码具有唯一性,达到精确收集有环控制流执行信息的效果;处理过程间各种调用的能力使该方法能够运用到在面向对象的场景之下。
为了实现上述目的,本发明采取的技术方案为:一种带环路径的编码、执行及解码方法,其包括以下步骤:
(1). 从程序源码中获取各个过程之间的调用关系、每个过程内部的控制结构以及在控制结构基础上的无环子图;
(2). 按照路径的不同类型执行相应的插装算法,即:
对于过程内的路径,首先求出过程内部具有多个入边的节点集合,对于集合中的每个节点,定义其具有n条入边,将这n条入边依次与从0开始的n-1个连续整数相对应;然后在该边上插装加法和乘法相结合的探针计算语句,执行终点处的探针变量的值对应于所执行路径的编码,以使得到的路径编码具有唯一性;
对于过程间的路径,基于目标程序中各个过程之间的调用关系,以适当的策略将过程集簇;如果一个多态调用涉及的被调用方法分布在多个簇中,则对相应的调用语句进行拆解,以使每个调用边的动态绑定情况局限于单个簇中;然后组合各个过程内的控制流图得到全局控制流;对于全局控制流图中的节点,按照过程内路径的方式按序进行插装,且对于有多个入边的节点,依次在其所有入边上插装乘法和加法相结合的探针计算语句;
(3). 执行插装后的程序,并收集相应的路径编码及其频率;
(4). 由收集到的信息在控制流图上进行回溯,将路径编码转化为路径,以获取路径的执行结果。
具体的,在步骤(1)中,由控制流分析器获取控制流结构的相关信息,如过程间的调用关系、过程内的控制流图以及在控制流图上得出无环子图,以应用于编码算法。
无环子图(RAS,Reduciable Acyclic Subgraph)是控制流图中满足如下的条件的子图:(1)子图是一个单入口单出口结构;(2)子图中没有回边;(3)对于控制流图中子图之外的任意一个节点A,不存在从A指向子图入口以外节点的边,也不存在从子图出口以外节点指向A的边;(4)以子图中节点为端点的所有非回边都在子图中,即如果控制流中存在一条从子图的出口节点到其入口节点的回边,那么该回边可以不包括在子图中。
在控制流结构中获取无环子图的意义在于,本发明的路径编码方法可以与已有的无环路径编码方法结合起来进行,能够在一定程度上压缩编码,提升效率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210159676.6/2.html,转载请声明来源钻瓜专利网。