[发明专利]一种基于机器学习的C程序内存泄漏智能化检测方法有效
申请号: | 201810613423.9 | 申请日: | 2018-06-14 |
公开(公告)号: | CN108804332B | 公开(公告)日: | 2021-12-17 |
发明(设计)人: | 王林章;朱亚伟;李宣东 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 机器 学习 程序 内存 泄漏 智能化 检测 方法 | ||
1.一种基于机器学习的C程序内存泄漏智能化检测方法,该方法分为三个阶段:模型构建阶段,程序分析与特征获取阶段,缺陷检测与报告阶段;其特征在于:模型构建阶段,首先根据已有的内存泄漏构建两个数据集,一个是包含真正的内存泄漏的数据集,另一个是包含虚假的内存泄漏的数据集,然后分别从两个数据中提取内存泄漏特征,将内存泄漏特征输入机器学习的分类器进行训练,并进行交叉验证,然后修改分类器类型及参数,保留分类准确率达到设定目标值的分类器,从保留的分类器中选取分类准确率最高的作为分类器模型来检测内存泄漏;程序分析与特征获取阶段,首先对源程序进行预分析,获取所有的内存分配点o,然后进行指针分析,构建从o开始的VFG,提取VFG中每条路径对应的内存泄漏特征;缺陷检测与报告阶段,将程序分析与特征获取阶段的内存泄漏特征输入到模型构建阶段的分类器模型中进行检测,判断从o开始的路径中是否存在内存泄漏,得到内存泄漏报告;
该方法包括以下步骤:
步骤1)根据已有的内存泄漏构建两个数据集,一个是包含真正的内存泄漏的数据集,另一个是包含虚假的内存泄漏的数据集;
步骤2)提取内存泄漏特征;内存泄漏特征包括两类:类型信息以及指针信息;
步骤3)构建分类器模型,具体步骤如下:
步骤3.1)将提取的内存泄漏特征作为训练集输入到分类器中;
步骤3.2)在训练过程中进行交叉验证,查看分类器分类的准确率;
步骤3.3)调整分类器参数,重复3.1,3.2步骤,若分类准确率超过设定目标值,则记录当前分类器的类型、参数及其准确率;
步骤3.4)调整分类器的类型,重复3.1,3.2,3.3步骤;
步骤3.5)在当前记录的分类器中选取准确率最高的分类器类型及参数,确定唯一的分类器模型;
步骤4)程序预分析,具体步骤如下:
步骤4.1)对于需要检测的C程序,将其转化为LLVM的中间码.bc文件;
步骤4.2)在LLVM中间码上获取所有的内存分配点o;
步骤5)程序指针分析,具体步骤如下:
步骤5.1)对每个函数使用流不敏感、上下文不敏感、域敏感以及调用点敏感的安德森指针分析,获取每个指针指向的内存区域集合;每个指针的指向集用ps表示,格式如下:
ps(v)={o,o′}
v表示指针变量,ps(v)表示指针v指向的内存区域,{o,o′}表示内存区域o和o′的集合;
步骤5.2)获取基于SSA的内存信息;在安德森指针分析之后,获取所有指针变量的def和use;对于函数调用点,分析不在本函数内部但是可以在本函数内部修改读取的非全局指针变量,然后生成指针变量指向的内部区域,构建每个函数SSA形式;
步骤5.3)构建每个分配点o的VFG;已知每个指针的指向内存区域集合ps(v)和基于SSA的内存信息,可从分配点o开始构建VFG;
步骤6)提取每个分配点每条路径的内存泄漏特征,每条路径提取的特征组成一个向量,所有路径的向量构成测试集;
步骤7)将测试集进行预处理,调整为符合分类器模型的输入格式,输入到分类器模型中,获取分类检测结果即漏洞报告。
2.根据权利要求1所述的基于机器学习的C程序内存泄漏智能化检测方法,其特征在于:根据常见的C程序内存泄漏特征,本方法能够检测C程序中的内存泄漏。
3.根据权利要求1所述的基于机器学习的C程序内存泄漏智能化检测方法,其特征在于:本方法在逐步增加训练集后,分类器结果会更加准确。
4.根据权利要求1所述的基于机器学习的C程序内存泄漏智能化检测方法,其特征在于:使用程序静态分析方法提取内存泄漏特征,不实际运行程序,消耗时间短,能够快速检测大型程序中的内存泄漏。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810613423.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种自动化测试用例的自动排序方法
- 下一篇:一种测试用例与CQ关联方法及系统