[发明专利]基于代码行为单位的程序变量有效定义检测方法及装置有效
申请号: | 201910132689.6 | 申请日: | 2019-02-22 |
公开(公告)号: | CN111611149B | 公开(公告)日: | 2023-03-31 |
发明(设计)人: | 孟罡;王磊;沈亮;孙振;赵荣彩 | 申请(专利权)人: | 上海信息安全工程技术研究中心 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 周艳巧 |
地址: | 200021 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 代码 行为 单位 程序 变量 有效 定义 检测 方法 装置 | ||
1.一种基于代码行为单位的程序变量有效定义检测方法,其特征在于,包含:
A)收集用于检测的代码样本数据集;
B)针对代码样本数据集,提取代码抽象语法树,并生成控制流图;
C)遍历控制流图中每行代码,构建各行代码变量的有效定义集合;
D)依据有效定义集合,分析各行代码的输入集合,构建每个定义变量的使用-定义链,该使用-定义链用于检测代码函数及相关联的有效变量定义;
C)中,根据控制流某条路径执行过程中,将对于执行过程中执行点的所有定义过且没有被重新复制的变量定义作为有效定义,依据该有效定义构建每行代码的有效定义集合;
C)中,有效定义集合依据变量使用和定义分为输入集合、输出集合、生成集合和销毁集合,其中,每行代码中,所有进来的变量定义归类到输入集合,通过控制流进来的变量定义且未被当前行代码重写或销毁、以及当前行变量定义归类到输出集合,当前行代码变量定义归类到生成集合,当前行代码重写的来自于其他地方的定义变量归类到销毁集合;
将输入集合、输出集合、生成集合和销毁集合表示成位向量,代码中发生的每个赋值对应唯一标志位;
C)中,遍历每一行代码,对有效定义集合进行初始化,并将代码块改变状态设置为逻辑真值;执行循环过程,该循环过程包含如下内容:判断代码块改变状态是否为逻辑真值,若不是,则结束循环,并输出有效定义集合,否则,将其设置为逻辑假值,遍历代码块中每一行代码,将当前代码行的输入集合的值设置为上一行代码输出集合值,将当前代码行的输出集合复制给临时变量,将当前代码行的生成集合和输入集合值相加并减去销毁集合值,将运算结果重新复制给输出集合,判断该重新复制的输出集合值是否与临时变量相等,若不等,则设置代码块改变状态为逻辑真值,返回循环过程开始段,重新执行,若相等,则结束循环,输出有效定义集合。
2.根据权利要求1所述的基于代码行为单位的程序变量有效定义检测方法,其特征在于,B)中,控制流图表示程序代码在执行过程中所有可能的执行路径。
3.根据权利要求1或2所述的基于代码行为单位的程序变量有效定义检测方法,B)中,控制流图包含表示进入控制流图的入口块、表示基本块的节点、表示控制流传递关系的边和表示控制流图流出的出口块。
4.一种基于代码行为单位的程序变量有效定义检测装置,其特征在于,基于权利要求1所述的方法实现,包含:收集模块、提取模块、遍历模块和构建模块,其中,
收集模块,用于收集用于检测的代码样本数据集;
提取模块,用于针对代码样本数据集,提取代码抽象语法树,并生成控制流图;
遍历模块,用于遍历控制流图中每行代码,构建各行代码变量的有效定义集合;
构建模块,用于依据有效定义集合,分析各行代码的输入集合,构建每个定义变量的使用-定义链,该使用-定义链用于检测代码函数及相关联的有效变量定义。
5.根据权利要求4所述的基于代码行为单位的程序变量有效定义检测装置,其特征在于,遍历模块中,有效定义集合依据变量使用和定义分为输入集合、输出集合、生成集合和销毁集合,其中,每行代码中,所有进来的变量定义归类到输入集合,通过控制流进来的变量定义且未被当前行代码重写或销毁、以及当前行变量定义归类到输出集合,当前行代码变量定义归类到生成集合,当前行代码重写的来自于其他地方的定义变量归类到销毁集合。
6.根据权利要求5所述的基于代码行为单位的程序变量有效定义检测装置,其特征在于,遍历模块包含初始化子模块和循环执行子模块,其中,
初始化子模块,用于遍历每一行代码,对有效定义集合进行初始化,并将代码块改变状态设置为逻辑真值;
循环执行子模块,用于依据代码块改变状态执行有效定义集合获取的循环过程,循环过程中,首先,判断代码块改变状态是否为逻辑真值,若不是,则结束循环,并输出有效定义集合,否则,将其设置为逻辑假值,遍历代码块中每一行代码,将当前代码行的输入集合的值设置为上一行代码输出集合值,将当前代码行的输出集合复制给临时变量,将当前代码行的生成集合和输入集合值相加并减去销毁集合值,将运算结果重新复制给输出集合,判断该重新复制的输出集合值是否与临时变量相等,若不等,则设置代码块改变状态为逻辑真值,返回循环过程开始段,重新执行,若相等,则结束循环,输出有效定义集合。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海信息安全工程技术研究中心,未经上海信息安全工程技术研究中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910132689.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种非线性刚度的空气弹簧
- 下一篇:折盖装置、包装机以及计算机可读介质