[发明专利]一种内存访问溢出的检测方法及装置有效
申请号: | 201510072058.1 | 申请日: | 2015-02-11 |
公开(公告)号: | CN104573503B | 公开(公告)日: | 2018-04-27 |
发明(设计)人: | 朱浩 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 王宝筠 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 访问 溢出 检测 方法 装置 | ||
1.一种内存访问溢出的检测方法,其特征在于,包括:
对源代码进行预处理和词法分析、语法分析以及语义分析,生成控制流图、数据依赖图以及抽象语义树;
针对不同的检测场景建立多种检测模型,并根据多种检测模型分析所述控制流图、数据依赖图以及抽象语义树,进行表达式迭代以及状态机分析,输出检测结果;
根据所述检测结果判断所述源代码中是否存在内存访问溢出,并对检测出的内存访问溢出进行反馈输出;
所述针对不同的检测场景建立多种检测模型,并根据多种检测模型分析所述控制流图、数据依赖图以及抽象语义树,进行表达式迭代以及状态机分析,包括:
针对不同的检测场景定义多种检测模型,所述检测模型包括:指针操作模型、数组访问模型、标准库函数模型和循环体与抽象迭代模型;
对所述控制流图和所述数据依赖图进行剪裁,沿所述控制流图和所述数据依赖图中的路径将常量节点依次向后继节点传递,并计算常量表达式,通过操作符连接并迭代内存访问操作的输入条件,进行表达式迭代并得到所述输入条件的迭代结果;
扫描所述抽象语义树的结构,对所述抽象语义树中的指针和数组变量的声明、赋值、访问以及标准库函数的节点进行关键词标记,并查找所述抽象语义树中与所述多种检测模型中相匹配的节点以及分支;
建立状态机,并分析内存访问操作和所述输入条件的迭代结果,判断当前的内存访问操作是否在全量环境下有效。
2.根据权利要求1所述的方法,其特征在于,所述对源代码进行预处理和词法分析、语法分析以及语义分析,生成控制流图、数据依赖图以及抽象语义树,包括:
对所述源代码进行词法分析和语法分析,并基于词法分析和语法分析的结果进行语义分析以及上下文分析,生成抽象语义树;
根据所述源代码的分支跳转和函数调用关系,将所述源代码切分为多个基本块,并分析每个基本块之间的跳转关系,根据所述跳转关系生成控制流图;
分析所述源代码的变量之间的数据依赖关系,生成数据依赖图。
3.根据权利要求1所述的方法,其特征在于,所述对所述控制流图和所述数据依赖图进行剪裁,包括:
分析所述抽象语义树中被标记节点所在基本块对应于所述控制流图上的节点,删除其余节点,重新建立节点之间的连接关系;
保留所述控制流图中被保留下的节点以及内存访问操作的变量在所述数据依赖图中的依赖关系,删除所述数据依赖图中的其余依赖关系。
4.根据权利要求1所述的方法,其特征在于,所述根据所述检测结果判断所述源代码中是否存在内存访问溢出,包括:
如果当前的内存访问操作在全量环境下有效,则判断不存在内存访问溢出,如果当前的内存访问操作不是在全量环境下有效,则判断存在内存访问溢出。
5.一种内存访问溢出的检测装置,其特征在于,包括:
分析模块,用于对源代码进行预处理和词法分析、语法分析以及语义分析,生成控制流图、数据依赖图以及抽象语义树;
检测模块,用于针对不同的检测场景建立多种检测模型,并根据多种检测模型分析所述控制流图、数据依赖图以及抽象语义树,进行表达式迭代以及状态机分析,输出检测结果;
输出模块,用于根据所述检测结果判断所述源代码中是否存在内存访问溢出,并对检测出的内存访问溢出进行反馈输出;
所述检测模块,包括:
定义单元,用于针对不同的检测场景定义多种检测模型,所述检测模型包括:指针操作模型、数组访问模型、标准库函数模型和循环体与抽象迭代模型;
裁剪单元,用于对所述控制流图和所述数据依赖图进行剪裁,沿所述控制流图和所述数据依赖图中的路径将常量节点依次向后继节点传递,并计算常量表达式,通过操作符连接并迭代内存访问操作的输入条件,进行表达式迭代并得到所述输入条件的迭代结果;
扫描单元,用于扫描所述抽象语义树的结构,对所述抽象语义树中的指针和数组变量的声明、赋值、访问以及标准库函数的节点进行关键词标记,并查找所述抽象语义树中与所述多种检测模型中相匹配的节点以及分支;
判断单元,用于建立状态机,并分析内存访问操作和所述输入条件的迭代结果,判断当前的内存访问操作是否在全量环境下有效。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510072058.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:微机安全执行方法
- 下一篇:一种清除密码锁的方法及终端