System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别涉及一种堆栈数据越界检测方法、装置、电子设备及存储介质。
技术介绍
1、进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位。线程是进程的子任务,是中央处理器(central processing unit,简称cpu)调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。
2、但是,由于同一进程内的多个线程通常共用同一地址空间,使得线程之间比较容易互相读写其他线程的堆栈,尤其是线程存在缺陷,保存数据越界溢出,可能踩坏其他线程堆栈,导致其他线程崩溃。所以如何快速检测线程堆栈的越界行为,避免线程越界导致的其他线程的崩溃成为了亟需解决的问题。
技术实现思路
1、为了解决现有技术的问题,本申请实施例提供了一种堆栈数据越界检测方法、装置、电子设备及存储介质。所述技术方案如下:
2、一方面,提供了一种堆栈数据越界检测方法,所述方法包括:
3、确定待执行的目标线程;
4、为待执行的目标线程分配堆栈;堆栈包括数据存储区,以及分别位于数据存储区前后端的第一检测区和第二检测区;第一检测区和第二检测区均包括外部越界检测区、隔离区和内部越界检测区;内部越界检测区靠近数据存储区;隔离区用于阻挡外部越界检测区与内部越界检测区的数据之间的互相越界;
5、对外部越界检测区和内部越界检测区内的数据分别进行检测,得到外部越界检测区的检测值和内部越界检测区的检测值;
7、可选的,隔离区位于内部越界检测区和外部越界检测区之间;对外部越界检测区和内部越界检测区内的数据分别进行检测,得到外部越界检测区的检测值和内部越界检测区的检测值,包括:
8、获取外部越界检测区内的数据和内部越界检测区内的数据;
9、对外部越界检测区内的数据和第一预设字符段进行校验处理,生成外部越界检测区内的检测值;
10、对内部越界检测区内的数据和第二预设字符段进行校验处理,生成内部越界检测区内的检测值。
11、可选的,预设检测值包括第一预设检测值和第二预设检测值;所述方法还包括:
12、对第一预设字符段进行校验处理,生成第一预设检测值;
13、对第二预设字符段进行校验处理,生成第二预设检测值。
14、可选的,若外部越界检测区的检测值和内部越界检测区的检测值中的至少一个检测值不符合预设检测值,则生成第一检测结果,包括:
15、若外部越界检测区的检测值不符合第一预设检测值,且内部越界检测区的检测值符合第二预设检测值,则生成第二检测结果;第二检测结果表征目标线程的堆栈存在外部数据越界情况;
16、若外部越界检测区的检测值符合第一预设检测值,且内部越界检测区的检测值不符合第二预设检测值,则生成第三检测结果;第二检测结果表征目标线程的堆栈存在本堆栈数据越界情况;
17、若外部越界检测区的检测值不符合第一预设检测值,且内部越界检测区的检测值不符合第二预设检测值,则生成第四检测结果;第二检测结果表征目标线程的堆栈同时存在外部数据和本堆栈数据越界情况。
18、可选的,对外部越界检测区和内部越界检测区内的数据分别进行检测,得到外部越界检测区的检测值和内部越界检测区的检测值之后,还包括:
19、若外部越界检测区的检测值和内部越界检测区的检测值均符合预设检测值,则生成第五检测结果;第五检测结果表征目标线程对应的堆栈不存在数据越界情况。
20、可选的,在为待执行的目标线程分配堆栈过程中,所述方法还包括:
21、将隔离区对应的访问权限模式设置成只读模式。
22、另一方面,提供了一种数据越界检测装置,所述装置包括:
23、确定模块,用于确定待执行的目标线程;
24、分配模块,用于为待执行的目标线程分配堆栈;堆栈包括数据存储区,以及分别位于数据存储区前后端的第一检测区和第二检测区;第一检测区和第二检测区均包括外部越界检测区、隔离区和内部越界检测区;内部越界检测区靠近数据存储区;隔离区用于阻挡外部越界检测区与内部越界检测区的数据之间的互相越界;
25、检测模块,用于对外部越界检测区和内部越界检测区内的数据分别进行检测,得到外部越界检测区的检测值和内部越界检测区的检测值;
26、生成模块,用于若外部越界检测区的检测值和内部越界检测区的检测值中的至少一个检测值不符合预设检测值,则生成第一检测结果;第一检测结果表征目标线程对应的堆栈存在数据越界情况。
27、另一方面,提供了一种电子设备,包括处理器和存储器,存储器中存储有至少一条指令或者至少一段程序,至少一条指令或者至少一段程序由处理器加载并执行以实现上述任一方面的堆栈数据越界检测方法。
28、另一方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有至少一条指令或者至少一段程序,至少一条指令或者至少一段程序由处理器加载并执行以实现如上述任一方面的堆栈数据越界检测方法。
29、另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一方面的堆栈数据越界检测方法。
30、本申请实施例通过确定待执行的目标线程;为待执行的目标线程分配堆栈;堆栈包括数据存储区,以及分别位于数据存储区前后端的第一检测区和第二检测区;第一检测区和第二检测区均包括外部越界检测区、隔离区和内部越界检测区;内部越界检测区靠近数据存储区;隔离区用于阻挡外部越界检测区与内部越界检测区的数据之间的互相越界;对外部越界检测区和内部越界检测区内的数据分别进行检测,得到外部越界检测区的检测值和内部越界检测区的检测值;若外部越界检测区的检测值和内部越界检测区的检测值中的至少一个检测值不符合预设检测值,则生成第一检测结果;第一检测结果表征目标线程对应的堆栈存在数据越界情况。如此情况下,能够通过对第一检测区和第二检测区进行检测从而确定当前堆栈是否存在数据越界情况,后续可以根据检测结果快速定位越界来源,避免数据进一步的越界而造成的程序错误。
本文档来自技高网...【技术保护点】
1.一种堆栈数据越界检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述隔离区位于所述内部越界检测区和所述外部越界检测区之间;所述对所述外部越界检测区和所述内部越界检测区内的数据分别进行检测,得到所述外部越界检测区的检测值和所述内部越界检测区的检测值,包括:
3.根据权利要求2所述的方法,其特征在于,所述预设检测值包括第一预设检测值和第二预设检测值;所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述若所述外部越界检测区的检测值和所述内部越界检测区的检测值中的至少一个检测值不符合预设检测值,则生成第一检测结果,包括:
5.根据权利要求1所述的方法,其特征在于,所述对所述外部越界检测区和所述内部越界检测区内的数据分别进行检测,得到所述外部越界检测区的检测值和所述内部越界检测区的检测值之后,还包括:
6.根据权利要求1所述的方法,其特征在于,在为所述待执行的目标线程分配堆栈过程中,所述方法还包括:
7.一种数据越界检测装置,其特征在于,所述装置包括:
8.一
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如权利要求1~6任一项所述的堆栈数据越界检测方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1~6任一项所述的堆栈数据越界检测方法。
...【技术特征摘要】
1.一种堆栈数据越界检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述隔离区位于所述内部越界检测区和所述外部越界检测区之间;所述对所述外部越界检测区和所述内部越界检测区内的数据分别进行检测,得到所述外部越界检测区的检测值和所述内部越界检测区的检测值,包括:
3.根据权利要求2所述的方法,其特征在于,所述预设检测值包括第一预设检测值和第二预设检测值;所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述若所述外部越界检测区的检测值和所述内部越界检测区的检测值中的至少一个检测值不符合预设检测值,则生成第一检测结果,包括:
5.根据权利要求1所述的方法,其特征在于,所述对所述外部越界检测区和所述内部越界检测区内的数据分别进行检测,得到所述外部越界检测区的检测值和所述内部越界检测区的检测值之后,还包括:
6.根据...
【专利技术属性】
技术研发人员:孙炳彤,秦明,
申请(专利权)人:中汽创智科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。