[发明专利]用于对函数调用提供安全保护的方法、装置及存储介质在审
申请号: | 202210726002.3 | 申请日: | 2022-06-23 |
公开(公告)号: | CN115168911A | 公开(公告)日: | 2022-10-11 |
发明(设计)人: | 高斐;杜超;王峰 | 申请(专利权)人: | 北京奕斯伟计算技术股份有限公司 |
主分类号: | G06F21/64 | 分类号: | G06F21/64 |
代理公司: | 北京市立方律师事务所 11330 | 代理人: | 张筱宁 |
地址: | 100176 北京市北京经济技*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 函数 调用 提供 安全 保护 方法 装置 存储 介质 | ||
本申请实施例提供了一种用于对函数调用提供安全保护的方法、装置及存储介质,涉及计算机技术领域。该方法包括:确定是否对目标函数的调用进行安全保护;若确定对目标函数的调用进行安全保护,保存至少一个寄存器的值,该寄存器的值在目标函数的调用前后保持不变;执行目标函数的调用过程后,获取所保存的至少一个寄存器的值对相应的寄存器进行校验。本申请实施例的方案,通过在目标函数调用前对寄存器的值进行保存,在目标函数调用后,获取所保存的寄存器的值对相应的寄存器进行校验,由于所保存的寄存器的值在目标函数的调用前后保持不变,从而可以确定函数调用过程中寄存器的内容是否被篡改。
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种用于对函数调用提供安全保护的方法、装置及计算机可读存储介质。
背景技术
应用程序二进制接口(application binary interface,简称为“ABI”)定义了函数调用的规范,包括定义哪些寄存器的值在函数调用的前后要保持不变(即定义跨函数调用值保留的寄存器,registers preserved across calls)。黑客攻击时,通过直接或者间接篡改某些寄存器或者基于某些寄存器的内存内容,达到获取控制权的目的。
因此,函数调用过程的安全性问题亟待解决。
发明内容
本申请实施例提供了一种用于对函数调用提供安全保护的方法、装置及计算机可读存储介质,旨在解决现有技术中的至少一个技术问题。
根据本申请实施例的第一方面,提供了一种用于对函数调用提供安全保护的方法,该方法包括:
确定是否对目标函数的调用进行安全保护;
若确定对目标函数的调用进行安全保护,保存至少一个寄存器的值,所述寄存器的值在所述目标函数的调用前后保持不变;
执行所述目标函数的调用过程后,获取所保存的至少一个寄存器的值对相应的寄存器进行校验。
在一个可能的实现方式中,通过编译器的新增接口供用户指定待进行安全保护的目标函数,所述新增接口包括目标函数的属性值设定接口或编译开关。
在又一个可能的实现方式中,所述获取至少一个寄存器的值对相应的寄存器进行校验,包括:
逐个获取所保存的至少一个寄存器的值作为参考值;
将获取的一个参考值与相应的寄存器的值进行比较,若二者不一致,则进行预警或报错;
重复执行将获取的一个参考值与相应的寄存器的值进行比较的步骤,直至遍历保存的所有寄存器。
在另一个可能的实现方式中,所述保存至少一个寄存器的值,包括:
利用内存中的一个内存单元管理的内存空间保存所述至少一个寄存器的值。
在另一个可能的实现方式中,所述逐个获取所保存的至少一个寄存器的值作为参考值,包括:
逐个获取所述内存单元管理的内存空间中保存的至少一个寄存器的值到临时寄存器;
将所述临时寄存器的值作为所述参考值。
在另一个可能的实现方式中,在利用内存中的一个内存单元管理的内存空间保存所述至少一个寄存器的值之前,所述方法还包括:
通过链接脚本或编译器的新增接口设定所述内存单元在内存中的地址。
在另一个可能的实现方式中,所述保存至少一个寄存器的值,包括:
利用一个硬件寄存器管理的内存保存所述至少一个寄存器的值。
根据本申请实施例的第二方面,提供了一种用于对函数调用提供安全保护的装置,该装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奕斯伟计算技术股份有限公司,未经北京奕斯伟计算技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210726002.3/2.html,转载请声明来源钻瓜专利网。