[发明专利]一种基于高阶函数的动态程序依赖簇检测方法有效
申请号: | 202310064888.4 | 申请日: | 2023-02-06 |
公开(公告)号: | CN115794120B | 公开(公告)日: | 2023-07-04 |
发明(设计)人: | 张迎周;杨嘉毅;卢跃;密杰;葛丽丽;帅东昕;许碧欢 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/71 |
代理公司: | 南京禹为知识产权代理事务所(特殊普通合伙) 32272 | 代理人: | 周局 |
地址: | 210003 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 函数 动态 程序 依赖 检测 方法 | ||
1.一种基于高阶函数的动态程序依赖簇检测方法,其特征在于,包括:
利用符号执行工具获取程序在给定输入条件下的语句执行历史和函数调用关系,根据实际的调用关系构建简化的函数调用图;
所述函数调用图中记录被调用的函数名称为Ncallee,对每个函数调用点,记录实际过程调用和被调用的函数名称,构成二元组;通过函数调用关系的二元组构建具体输入条件下的调用图再通过逆拓扑排序的顺序简化函数调用图确定子过程的分析顺序;自设定一个高阶函数,参数有实参的数据依赖、全局变量的数据依赖以及指令索引;
所述高阶函数的数据依赖参数初始化过程P的变量依赖集S,初始化语句依赖集L,依赖簇信息集C为空,获取过程P的入口基本块Bentry;计算Bentry中每条语句i的控制依赖关系即CDi,根据得到的语句执行历史和指令索引I计算当前指令的动态引用集REF(i,I),得到指令依赖l'(i);
所述指令依赖的应用规则为,
当前指令为phi指令时,根据得到的语句执行历史,和指令索引I计算phi指令的动态引用集,即当E(I)=n时,取phi指令的第n个选项为引用变量,其它指令,与它们的静态引用集保持一致,
f={fx,fy,...fn},g={gx,gy,...gn}
其中FRML(P)是过程P的形式参数集合;GLOB是程序的全局变量集合;ALLOCA(P)是过程P的局部变量集合;INST(P)是过程P的指令集合;i’,j对应了当前指令i的引用节点和控制节点属于INST(P),λ为匿名函数,参数为f,g,I;f集合是上层函数的实参对应的依赖集合,即fx为第一个实参的依赖集合,fy为第二个实参的依赖集合,以此类推,g集合是上层函数进行调用时,当前全局变量对应的依赖集合,即gx为第一个全局变量的依赖集合,gy为第二个全局变量的依赖集合,以此类推,I为上层函数进行调用时的指令索引;f,g,I在调用点处由具体的数据进行代入,R是控制依赖和数据依赖对应的集合,是关于R的函数,R的参数中使用了λ表达式中的变量f,g;
构建每个过程高阶函数形式的函数摘要,获取过程间由于过程调用和参数传递产生的依赖簇信息;
将计算得到的依赖簇信息进行汇总,获取给定输入条件下相互依赖的程序语句,从而检测动态程序依赖簇。
2.如权利要求1所述的一种基于高阶函数的动态程序依赖簇检测方法,其特征在于:所述符号执行当中将源程序进行编译得到中间代码,其次对中间码进行优化,约简程序中的select,switch语句分别转换为phi语句和有条件跳转语句;符号执行器接收经过优化的中间代码,在给定的用户输入参数下进行符号执行。
3.如权利要求2所述的一种基于高阶函数的动态程序依赖簇检测方法,其特征在于:所述有条件跳转语句是用0和1记录跳转的基本块,0表示条件为否时跳转的基本块,1表示条件为是时跳转的基本块。
4.如权利要求1所述的一种基于高阶函数的动态程序依赖簇检测方法,其特征在于:根据访问的语句类型和指令依赖,更新指令索引I,语句依赖集L,变量依赖集S和依赖簇信息集C,针对赋值语句或内存修改语句i,更新该语句i中所定义变量x的变量依赖集S(x)为l'(i),更新依赖簇信息集C(ij,x)=S(x),
针对赋值语句或内存修改语句以外的语句,更新该语句i语句的依赖集L(i)为l'(i),更新依赖簇信息集C(ij,i)=L(i),
针对有条件跳转语句,函数调用语句,和phi语句,当前指令索引I加1,其它语句的指令索引保持不变,
针对有条件跳转语句,根据E(I)=0或1,获取下一个分析的基本块,0表示条件为否时跳转的基本块,1表示条件为真时跳转的基本块,
针对无条件跳转语句,获取其跳转地址,
针对Return语句,此过程P结束,
针对Unreachable语句,此分析结束,退出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310064888.4/1.html,转载请声明来源钻瓜专利网。