说明:收录全网最新的团体标准 提供单次或批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211008686.X (22)申请日 2022.08.22 (71)申请人 上海蜚语信息科技有限公司 地址 201900 上海市宝山区一 二八纪念路 968号120 5-A86室 (72)发明人 束骏亮 杨文博  (74)专利代理 机构 上海宏京知识产权代理事务 所(普通合伙) 31297 专利代理师 王琦玲 (51)Int.Cl. G06F 11/36(2006.01) G06N 3/04(2006.01) G06N 3/08(2006.01) G06F 9/50(2006.01) (54)发明名称 一种自定义内存管理函数的代码缺陷检测 方法 (57)摘要 本发明提供一种自定义内存管理函数的代 码缺陷检测方法, 收集内存管 理函数原型作为正 样本, 收集非内存管理函数原型作为负样本; 使 用训练样 本数据集训练孪生神经网络模型, 通过 已经训练完成的模型对待测 内存管理函数进行 分类; 当被分类为内存分配函数或内存释放函数 时, 对其检查是否与标准内存管 理函数存在关联 关系; 捕捉待测内存管理函数的特征信息, 记录 其内存对象结构信息, 通过内存对象结构信息进 行代码缺陷检测。 本发明使用训练好的孪生神经 网络模型来对函数进行分类确定是否为自定义 内存管理函数, 捕获特征信息记录其内存对象结 构信息, 通过内存对象结构信息进行代码缺陷检 测, 从很大程度上提高了精准度, 也使其适用于 大型程序的检测。 权利要求书2页 说明书5页 附图2页 CN 115357499 A 2022.11.18 CN 115357499 A 1.一种自定义内存管理函数的代码缺陷检测方法, 其特征在于, 所述方法包括以下步 骤: 步骤1, 收集内存管理函数原型作为 正样本, 收集非内存管理函数原型作为负 样本; 步骤2, 通过正样本和负 样本构建用于训练孪生神经网络模型的训练样本数据集; 步骤3, 使用所述训练样本数据集训练孪生神经网络模型, 通过已经训练完成的模型对 待测内存管理函数进行分类; 步骤4, 当被分类为内存分配函数或内存释放函数时, 对其检查是否与标准内存管理函 数存在关联关系; 如果存在关联关系, 则被判定为自定义内存管理函数; 步骤5, 捕捉待测内存管理函数的特征信息, 记录其内存对象结构信息, 通过所述内存 对象结构信息进行代码缺陷检测。 2.根据权利要求1所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 所述步骤2包括对所述正样本和负样本中函数原型 的函数名和参数名进行分词化处理, 并 且将函数原型的返回类型和参数类型根据指针 类型进行归一 化处理。 3.根据权利要求1所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 所述步骤3中, 使用所述训练样本数据集训练孪生神经网络模型包括以下步骤: 步骤3.1, 将卷积神经网络作为两个分支使用; 步骤3.2, 将所述 正样本和负 样本中的函数原型映射 为数字向量; 步骤3.3, 将所述正样本和 负样本中函数原型对应的数字向量进行平均值计算, 得到参 考向量; 步骤3.4, 待分类样本通过与所述 参考向量的余弦相似度进行分类; 步骤3.5, 每次选择将两个不同的待分类样本输入到上下两个分支中, 根据其分类结果 进行反馈训练。 4.根据权利要求3所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 所述参考向量包括内存分配函数参考向量、 内存释放函数参考向量和非内存函数参考向 量。 5.根据权利要求1所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 所述步骤4包括分类结束后产生被归类为内存分配函数或内存释放函数 的候选函数, 对候 选函数进 行内部实现的数据流分析; 如果候选函数的子 分支调用了至少一个标准内存管理 函数, 且该标准内存管理函数分配或释放的内存对象通过子分支返回到该候选函数的参数 或返回值中, 则判定该候选函数为自定义内存管理函数。 6.根据权利要求1所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 所述特征信息包括 函数名、 函数属性、 内存 对象和对象类型。 7.根据权利要求6所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 生成以函数名、 函数属性、 内存 对象和对象类型为内容的自定义内存管理函数的特 征列表。 8.根据权利要求7所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 在生成所述特征列表 时, 对自定义内存管理函数进行数据流分析, 跟踪标准内存管理函数 分配或释放的内存对 象; 如果标准内存管理函数执行内存分配操作, 则将所有从标准内存 管理函数流向返回值和参数的数据流进行合并; 如果标准内存管理函数执行内存释放操 作, 则合并所有从函数参数流向标准内存管理函数的数据流。权 利 要 求 书 1/2 页 2 CN 115357499 A 29.根据权利要求1所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在于: 所述步骤5包括 通过建立或销毁一个抽象内存 对象进行代码缺陷检测。 10.根据权利要求9所述的一种自定义内存管理函数的代码缺陷检测方法, 其特征在 于: 如果待测内存管理函数是自定义内存分配函数, 则按照其动态管理的内存对 象生成用 于指代该内存对象的符号表达式, 并将其加入到当前内存对象列 表中, 并传递给后续分析; 如果待测内存管理函数是自定义内存释放函数, 则根据其传入参数指定的符号表达式, 更 新其状态为释放, 并将其从当前内存对 象列表中移除销毁; 如果一个标记为释放状态的符 号表达式被再次更新为释放状态, 则检测出双重释放缺陷; 如果一个标记为释放状态的符 号表达式被读写后续代码访问, 则检测出释放后使用缺陷。权 利 要 求 书 2/2 页 3 CN 115357499 A 3

.PDF文档 专利 一种自定义内存管理函数的代码缺陷检测方法

文档预览
中文文档 10 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种自定义内存管理函数的代码缺陷检测方法 第 1 页 专利 一种自定义内存管理函数的代码缺陷检测方法 第 2 页 专利 一种自定义内存管理函数的代码缺陷检测方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:10:37上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。