全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211121918.2 (22)申请日 2022.09.15 (71)申请人 武汉大学 地址 430072 湖北省武汉市武昌区珞珈山 街道八一路2 99号 (72)发明人 王丽娜 邓颖川 张桐 余荣威  高昊  (74)专利代理 机构 武汉科皓知识产权代理事务 所(特殊普通 合伙) 42222 专利代理师 罗飞 (51)Int.Cl. G06F 21/54(2013.01) G06F 21/53(2013.01) G06F 21/44(2013.01) G06F 21/78(2013.01)G06F 21/64(2013.01) G06F 21/62(2013.01) G06F 21/60(2013.01) G06F 12/14(2006.01) (54)发明名称 一种函数指针及其数据依赖的识别与保护 方法、 装置 (57)摘要 本发明公开了一种函数指针及其数据依赖 的识别与保护方法、 装置, 其中的方法首先从给 定的程序中识别出属于函数指针或至少包含一 个函数指针的内存对象, 然后采用污点分析的方 法对函数指针及其数据依赖进行识别, 再使用 Intel MPK对这些数据进行保护。 确保了它们的 完整性, 从而阻止了程序的执行路径被修改, 提 高了程序的安全性。 权利要求书2页 说明书9页 附图3页 CN 115510430 A 2022.12.23 CN 115510430 A 1.一种函数指针及其数据依赖的识别与保护方法, 其特 征在于, 包括: S1: 对给定的程序进行基于类型和基于指针的分析, 从中识别出属于函数指针或至少 包含一个函数指针的内存 对象; S2: 将每个函数的定义信息和使用信息进行串连构造过程间数据流图; S3: 将识别出的属于或者包含函数指针的内存对象作为污点源, 并将所有间接函数调 用点作为汇 聚点, 在构造的过程间数据流图中进行深度优先搜索实现前向污点传播, 得到 的从在污点源到汇聚点的路径表示一种可能的函数指针的计算流程, 将路径上的指令作为 参与函数指针 计算的敏感指令; S4: 将得到的敏感指令作为污点源, 以识别出的属于或者包含函数指针的内存对象作 为汇聚点, 在构造的过程间数据流图中进行深度优先搜索实现后向污点传播, 得到的从污 点源到汇聚点的路径, 将路径上的内存 对象作为敏感指令中函数指针所依赖的数据; S5: 将识别出的所有函数指针及其依赖的数据分配到硬件保护的内存中; S6: 将所述硬件保护的内存使用Intel  MPK进行保护, 并使用call  gate切换特权用以 允许程序中原本会写入函数指针及其依赖的数据的指令的访问。 2.如权利要求1所述的函数指针及其数据依赖的识别与保护方法, 其特征在于, 步骤S1 包括: 依次遍历给定的程序的中的类型, 如果一个类型是函数指针类型, 则为敏感类型, 如果 一个类型是包含一个或多个敏感类型 的复合类型, 则递归判断该复合类型中的所有元素, 若有一个元素为敏感类型, 则该类型为敏感类型; 在识别出所有 敏感类型后, 再次遍历给定 的程序中的所有变量, 如果 一个变量的类型 是敏感类型, 则是这个 变量为敏感变量; 采用基于指针的分析方法进行分析, 如果一个指针的目标集合中存在函数, 则将该指 针视作为 函数指针, 并加入敏感变量 集合中, 同时将指针包 含变量也加入敏感变量 集合中。 3.如权利要求1所述的函数指针及其数据依赖的识别与保护方法, 其特征在于, S3的前 向污点传播过程中, 从包含函数指 针的内存对象开始, 在间接函数调用点处结束, 前向污点 传播结束后, 确定了所有从污点源到间接调用点的污点路径, 每一条污点路径由一组污点 指令组成, 用以描述 一个函数指针从创建到调用的生命周期。 4.如权利要求1所述的函数指针及其数据依赖的识别与保护方法, 其特征在于, S4在后 向污点传播中, 从步骤S2识别出的污点指 令开始, 在碰到内存对象时结束传播, 后向污点传 播结束后, 确定了所有从污点源到内存对 象的污点路径, 将污点路径上 的内存对 象作为函 数指针依赖的数据。 5.如权利要求1所述的函数指针及其数据依赖的识别与保护方法, 其特征在于, 步骤S5 包括: 如果函数指针及其依赖的数据 是局部变量, 则在分离的栈为所在的函数分配对应的栈 帧; 如果函数指针及其依赖的数据 是动态分配的变量, 则用分离的堆的内存申请和释放函 数替换原本的函数; 如果函数指针及其依赖的数据是在BBS段或DATA段中的静态变量, 在pass中创建一个 新的段和对应的全局变量, 并将静态变量 转移到全局变量中。 6.一种函数指针及其数据依赖的识别与保护装置, 其特 征在于, 包括:权 利 要 求 书 1/2 页 2 CN 115510430 A 2函数指针识别模块, 用于对给定的程序进行基于类型和基于指针的分析, 从中识别出 属于函数指针或至少包 含一个函数指针的内存 对象; 过程间数据流图构造模块, 用于将每个函数的定义信 息和使用信 息进行串连构造过程 间数据流图; 敏感指令识别模块, 用于将识别出的属于或者包含函数指针的内存对象作为污点源, 并将所有间接函数调用点作为汇聚点, 在构造的过程间数据流图中进 行深度优先搜索实现 前向污点传播, 得到的从在污点源到汇 聚点的路径表示一种 可能的函数指针的计算流程, 将路径上的指令作为 参与函数指针 计算的敏感指令; 数据依赖识别模块, 用于将得到的敏感指令作为污点源, 以识别出的属于或者包含函 数指针的内存对象作为汇聚点, 在构 造的过程间数据流图中进行深度优先搜索实现后向污 点传播, 得到的从污点源到汇 聚点的路径, 将路径上 的内存对 象作为敏感指令中函数指针 所依赖的数据; 内存分配模块, 用于将识别出的所有函数指针及其依赖的数据分配到硬件保护的内存 中; 保护模块, 用于将所述硬件保护的内存使用Intel  MPK进行保护, 并使用call  gate切 换特权用以允许程序中原本会写入函数指针及其依赖的数据的指令的访问。 7.一种计算机可读存储介质, 其上存储有计算机程序, 其特征在于, 该程序被执行时实 现如权利要求1至 5中任一项权利要求所述的方法。 8.一种计算机设备, 包括存储器、 处理器及存储在存储器上并可在处理器上运行的计 算机程序, 其特征在于, 所述处理器执行所述程序时实现如权利要求1至5中任一项权利要 求所述的方法。权 利 要 求 书 2/2 页 3 CN 115510430 A 3

PDF文档 专利 一种函数指针及其数据依赖的识别与保护方法、装置

文档预览
中文文档 15 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共15页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种函数指针及其数据依赖的识别与保护方法、装置 第 1 页 专利 一种函数指针及其数据依赖的识别与保护方法、装置 第 2 页 专利 一种函数指针及其数据依赖的识别与保护方法、装置 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-18 22:34:18上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。