基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:34933150 阅读:25 留言:0更新日期:2022-09-15 07:29
本发明专利技术涉及基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质,该方法,包括:配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;根据配置信息,CPU运行;判断CPU运行是否访问到MPU区域;若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。本发明专利技术可以在CPU没有额外开销的情况下,实现栈溢出的自动拦截,提高了CPU的性能。提高了CPU的性能。提高了CPU的性能。

【技术实现步骤摘要】
基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质


[0001]本专利技术涉及栈溢出拦截
,尤其是指基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质。

技术介绍

[0002]CPU在程序的运行过程中,会将一些临时变量保存在stack(堆栈)中。对于ARM cortex

R系列CPU,一般会在B0TCM中分配一块memory(存储器)作为stack区域,硬件无法直接拦截堆栈溢出错误,一般只能通过软件拦截。现有方案主要包括以下两种:1、不拦截栈溢出;2、通过软件(比如struts2或spark)进行拦截;软件拦截是在栈的底部设置一个标记(guard_pattern),软件定期检查标记是否被篡改,如果篡改则认为stack曾经发生了溢出;但是现有方案存在以下缺点:1、需要软件定期检查标记,增加了CPU开销;2、标记如果正好和压栈的数据一致,则无法识别到溢出;但是该拦截方案不能在溢出现场立即拦截,而是检查标记后才能发现识别。

技术实现思路

[0003]本专利技术的目的在于克服现有技术的不足,提供基于MPU的栈溢出自动拦截方法、装置、计算机设备及存储介质。
[0004]为了解决上述技术问题,本专利技术采用如下技术方案:
[0005]第一方面,本实施例提供了一种基于MPU的栈溢出自动拦截方法,包括以下步骤:
[0006]配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;
[0007]根据配置信息,CPU运行;
[0008]判断CPU运行是否访问到MPU区域;
[0009]若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。
[0010]其进一步技术方案为:所述MPU区域的访问属性为只读。
[0011]其进一步技术方案为:所述判断CPU运行是否访问到MPU区域步骤之后,还包括:若CPU运行未访问到MPU区域,则跳转执行所述根据配置信息,CPU运行。
[0012]其进一步技术方案为:所述发生访问异常,自动拦截栈溢出步骤之后,还包括:读取异常状态寄存器,转储用户模式调用栈,分析调用路径。
[0013]第二方面,本实施例提供了一种基于MPU的栈溢出自动拦截装置,包括:配置单元,运行单元,判断单元及拦截单元;
[0014]所述配置单元,用于配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;
[0015]所述运行单元,用于根据配置信息,CPU运行;
[0016]所述判断单元,用于判断CPU运行是否访问到MPU区域;
[0017]所述拦截单元,用于若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢
出。
[0018]其进一步技术方案为:所述MPU区域的访问属性为只读。
[0019]其进一步技术方案为:还包括:跳转单元,用于若CPU运行未访问到MPU区域,则跳转执行所述根据配置信息,CPU运行。
[0020]其进一步技术方案为:还包括:读取分析单元,用于读取异常状态寄存器,转储用户模式调用栈,分析调用路径。
[0021]第三方面,本实施例提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上述所述的基于MPU的栈溢出自动拦截方法。
[0022]第四方面,本实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现如上述所述的基于MPU的栈溢出自动拦截方法。
[0023]本专利技术与现有技术相比的有益效果是:可以在CPU没有额外开销的情况下,实现栈溢出的自动拦截,提高了CPU的性能。
[0024]下面结合附图和具体实施例对本专利技术作进一步描述。
附图说明
[0025]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为本专利技术实施例提供的基于MPU的栈溢出自动拦截方法的流程示意图;
[0027]图2为本专利技术实施例提供的基于MPU的栈溢出自动拦截装置的示意性框图;
[0028]图3为本专利技术实施例提供的计算机设备的示意性框图。
具体实施方式
[0029]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0030]应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0031]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0032]还应当进一步理解,在本专利技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0033]请参阅图1所示的具体实施例,本专利技术公开了一种基于MPU的栈溢出自动拦截方
法,包括以下步骤:
[0034]S1,配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;
[0035]具体地,根据分配的stack(堆栈)区域,配置堆栈指针及在栈底位置配置一段MPU区域,MPU区域为32字节。
[0036]具体地,所述MPU区域的访问属性为只读。若CPU压栈(写操作)访问到该区域,则触发CPU产生data abort(数据访问中止)异常。
[0037]S2,根据配置信息,CPU运行;
[0038]具体地,CPU运行SDD固件,执行任务。
[0039]S3,判断CPU运行是否访问到MPU区域;
[0040]具体地,在S3步骤之后,还包括:若CPU运行未访问到MPU区域,则跳转执行S2步骤。
[0041]S4,若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。
[0042]具体地,若CPU压栈(写操作)访问到该区域,则触发CPU产生data abort(数据访问中止)异常,自动拦截栈溢出。
[0043]具体地,在S4步骤之后,还包括:读取异常状态寄存器,转储用户模式调用栈,分析调用路径,为分析堆栈溢出原因提供帮助。
[0044]本专利技术可以在CPU没有额外开销的情况下,实现栈溢出本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于MPU的栈溢出自动拦截方法,其特征在于,包括以下步骤:配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;根据配置信息,CPU运行;判断CPU运行是否访问到MPU区域;若CPU运行访问到MPU区域,则发生访问异常,自动拦截栈溢出。2.根据权利要求1所述的基于MPU的栈溢出自动拦截方法,其特征在于,所述MPU区域的访问属性为只读。3.根据权利要求1所述的基于MPU的栈溢出自动拦截方法,其特征在于,所述判断CPU运行是否访问到MPU区域步骤之后,还包括:若CPU运行未访问到MPU区域,则跳转执行所述根据配置信息,CPU运行。4.根据权利要求1所述的基于MPU的栈溢出自动拦截方法,其特征在于,所述发生访问异常,自动拦截栈溢出步骤之后,还包括:读取异常状态寄存器,转储用户模式调用栈,分析调用路径。5.基于MPU的栈溢出自动拦截装置,其特征在于,包括:配置单元,运行单元,判断单元及拦截单元;所述配置单元,用于配置堆栈指针及在栈底位置配置一段MPU区域,以得到配置信息;所述运行单元,用于根据配置信息,CPU运行;所述判断单元,用于判断CPU运...

【专利技术属性】
技术研发人员:周维罗宗扬李长才
申请(专利权)人:苏州忆联信息系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1