[发明专利]基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质在审
申请号: | 202210863584.X | 申请日: | 2022-07-21 |
公开(公告)号: | CN115048641A | 公开(公告)日: | 2022-09-13 |
发明(设计)人: | 周维;罗宗扬;李长才 | 申请(专利权)人: | 苏州忆联信息系统有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F11/36;G06F9/445 |
代理公司: | 深圳市精英专利事务所 44242 | 代理人: | 冯筠 |
地址: | 215000 江苏省苏州市中国(江苏)自由贸*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mpu 溢出 自动 拦截 方法 装置 计算机 设备 存储 介质 | ||
本发明涉及基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质,该方法,包括:配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;根据配置信息,CPU运行;判断CPU运行是否访问到MPU区域;若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。本发明可以在CPU没有额外开销的情况下,实现栈溢出的自动拦截,提高了CPU的性能。
技术领域
本发明涉及栈溢出拦截技术领域,尤其是指基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质。
背景技术
CPU在程序的运行过程中,会将一些临时变量保存在stack(堆栈)中。对于ARMcortex-R系列CPU,一般会在B0TCM中分配一块memory(存储器)作为stack区域,硬件无法直接拦截堆栈溢出错误,一般只能通过软件拦截。现有方案主要包括以下两种:1、不拦截栈溢出;2、通过软件(比如struts2或spark)进行拦截;软件拦截是在栈的底部设置一个标记(guard_pattern),软件定期检查标记是否被篡改,如果篡改则认为stack曾经发生了溢出;但是现有方案存在以下缺点:1、需要软件定期检查标记,增加了CPU开销;2、标记如果正好和压栈的数据一致,则无法识别到溢出;但是该拦截方案不能在溢出现场立即拦截,而是检查标记后才能发现识别。
发明内容
本发明的目的在于克服现有技术的不足,提供基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质。
为了解决上述技术问题,本发明采用如下技术方案:
第一方面,本实施例提供了一种基于MPU的栈溢出自动拦截方法,包括以下步骤:
配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;
根据配置信息,CPU运行;
判断CPU运行是否访问到MPU区域;
若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。
其进一步技术方案为:所述MPU区域的访问属性为只读。
其进一步技术方案为:所述判断CPU运行是否访问到MPU区域步骤之后,还包括:若CPU运行未访问到MPU区域,则跳转执行所述根据配置信息,CPU运行。
其进一步技术方案为:所述发生访问异常,自动拦截栈溢出步骤之后,还包括:读取异常状态寄存器,转储用户模式调用栈,分析调用路径。
第二方面,本实施例提供了一种基于MPU的栈溢出自动拦截装置,包括:配置单元,运行单元,判断单元及拦截单元;
所述配置单元,用于配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;
所述运行单元,用于根据配置信息,CPU运行;
所述判断单元,用于判断CPU运行是否访问到MPU区域;
所述拦截单元,用于若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。
其进一步技术方案为:所述MPU区域的访问属性为只读。
其进一步技术方案为:还包括:跳转单元,用于若CPU运行未访问到MPU区域,则跳转执行所述根据配置信息,CPU运行。
其进一步技术方案为:还包括:读取分析单元,用于读取异常状态寄存器,转储用户模式调用栈,分析调用路径。
第三方面,本实施例提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上述所述的基于MPU的栈溢出自动拦截方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州忆联信息系统有限公司,未经苏州忆联信息系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210863584.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电化学装置和电子装置
- 下一篇:半导体装置及其制造方法