CN113687968B - 一种适用通用操作系统sil4栈检测方法 - Google Patents

一种适用通用操作系统sil4栈检测方法 Download PDF

Info

Publication number
CN113687968B
CN113687968B CN202110835650.8A CN202110835650A CN113687968B CN 113687968 B CN113687968 B CN 113687968B CN 202110835650 A CN202110835650 A CN 202110835650A CN 113687968 B CN113687968 B CN 113687968B
Authority
CN
China
Prior art keywords
stack
array
sil4
detection
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110835650.8A
Other languages
English (en)
Other versions
CN113687968A (zh
Inventor
严光明
胡明明
陈小杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unittec Co Ltd
Original Assignee
Unittec Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unittec Co Ltd filed Critical Unittec Co Ltd
Priority to CN202110835650.8A priority Critical patent/CN113687968B/zh
Publication of CN113687968A publication Critical patent/CN113687968A/zh
Application granted granted Critical
Publication of CN113687968B publication Critical patent/CN113687968B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种适用通用操作系统SIL4栈检测方法,包括如下步骤:步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组以及栈保护区段StackGuard2数组;步骤S3、根据同一个栈数组的起始、结束位置判定运行环境在栈上是使用地址向上生长还是向下生长;步骤S4、按栈数组的大小排序,main函数将安全程序所使用的栈空间写入特定的值并对全栈数组进行内存检测;步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测。栈检测方法通用性强,动态适应各种CPU、操作系统、编译器,从而实现SIL4级栈内存检测。

Description

一种适用通用操作系统SIL4栈检测方法
技术领域
本发明涉及计算机数据结构技术领域,具体的,涉及一种适用通用操作系统SIL4栈检测方法。
背景技术
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,最后一个数据被第一个读出来。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;一些嵌入式操作系统提供了固定栈空间大小,栈检测的功能,栈溢出作为栈检测的一项重要检测项,栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围;在系统出现异常时,无接口通知SIL4安全程序;对于闭源的操作系统,无法感知其处理是否符合SIL4要求;另外一些操作系统无栈检测功能,在有足够的资源下,可以任意分配随意多的栈空间,然而SIL4安全程序无法感知到栈是否出现越界等异常。
发明内容
针对上述弊端,本发明的目的是提出一种适用通用操作系统SIL4栈检测方法,通过栈只往一个方向生长以及预先分配的事实,动态适应各种CPU、操作系统、编译器,从而实现SIL4级栈内存检测。
为实现上述技术目的,本发明提供的一种技术方案是,一种适用通用操作系统SIL4栈检测方法,包括如下步骤:
步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;
步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组,以及栈保护区段StackGuard2数组;
步骤S3、根据同一个栈数组的起始、结束位置判定运行环境在栈上是使用地址向上生长还是向下生长;同时根据三个栈数组的先后顺序获知对多个栈变量的分配是向上生长还是向下生长;
步骤S4、按栈数组的大小排序,main函数将安全程序所使用的栈空间写入特定的值;并对全栈数组进行符合SIL4标准的内存检测;
步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;
步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测,比较判定其值是否仍然为预先设置的特定值;如否,则判定栈异常,从而进行导向安全处理;如是,则栈异常,不报警。
作为优选,步骤S1还包括:利用全局变量P3记录StackGuard1数组的起始位置以及利用全局变量P4记录StackGuard1数组结束位置。
作为优选,步骤S2还包括:利用全局变量P1记录Stack数组的起始位置以及利用全局变量P2记录Stack数组结束位置,然后返回。
作为优选,步骤S2还包括:利用全局变量P5记录StackGuard2数组起始位置以及利用全局变量P6记录StackGuard2数组结束位置,然后返回。
作为优选,同一个栈数组为Stack数组、StackGuard1数组或者StackGuard2数组三者任一一个。
作为优选,Fsafety所使用的栈与Finit声明的Stack数组为相同的内存空间。
作为优选,按栈数组的大小排序表示为:P1<P2<P3<P4<P5<P6,其中区段[P1,P2]和[P5,P6]为安全程序所使用的栈空间,区段[P3,P4]为栈保护的栈空间。
本发明的有益效果:本发明一种适用通用操作系统SIL4栈检测方法的通用性强,不依赖于安全程序所运行的操作系统,不依赖于目标CPU,也不依赖于所使用的编译器对栈生长方向的分配。SIL4安全程序能够按需调整栈保护的空间大小,进行特定值选择,通过栈检测算法Fcheck对安全程序所使用的栈空间进行检测,通过比较特征值的异同判定异常情况。
附图说明
图1为本发明的一种适用通用操作系统SIL4栈检测方法的流程图。
具体实施方式
为使本发明的目的、技术方案以及优点更加清楚明白,下面结合附图和实施例对本发明作进一步详细说明,应当理解的是,此处所描述的具体实施方式仅是本发明的一种最佳实施例,仅用以解释本发明,并不限定本发明的保护范围,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:如图1所示,一种适用通用操作系统SIL4栈检测方法的流程图,包括如下步骤;
步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;利用全局变量P3记录StackGuard1数组的起始位置以及利用全局变量P4记录StackGuard1数组结束位置。
步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组以及栈保护区段StackGuard2数组;其中,利用全局变量P1记录Stack数组的起始位置以及利用全局变量P2记录Stack数组结束位置,然后返回;利用全局变量P5记录StackGuard2数组起始位置以及利用全局变量P6记录StackGuard2数组结束位置,然后返回。
步骤S3、根据同一个栈数组(Stack数组、StackGuard1数组或者StackGuard2数组三者任一一个)的起始、结束位置判定运行环境在栈上是使用地址向上生长(内存地址变大)还是向下生长(内存地址变小);同时根据三个栈数组的先后顺序获知运行环境对多个栈变量的分配是向上生长(内存地址变大)还是向下生长(内存地址变小)。
步骤S4、按栈数组的大小排序,表示为:P1<P2<P3<P4<P5<P6,其中区段[P1,P2]和[P5,P6]为安全程序所使用的栈空间,区段[P3,P4]为栈保护的栈空间;main函数将安全程序所使用的栈空间写入特定的值;并对全栈数组进行符合SIL4标准的内存检测。
步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;Fsafety所使用的栈与Finit声明的Stack数组为相同的内存空间。
步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测,比较判定其值是否仍然为预先设置的特定值;如否,则判定栈异常(栈溢出或者被OS损坏),从而进行导向安全处理;如是,则栈异常,不报警。
以上所述之具体实施方式为本发明一种适用通用操作系统SIL4栈检测方法的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明之形状、结构所作的等效变化均在本发明的保护范围内。

Claims (6)

1.一种适用通用操作系统SIL4栈检测方法,其特征在于:包括如下步骤:
步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;
步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组以及栈保护区段StackGuard2数组;
步骤S3、根据同一个栈数组的起始、结束位置判定运行环境在栈上是使用地址向上生长还是向下生长;同时根据三个栈数组的先后顺序获知运行环境对多个栈变量的分配是向上生长还是向下生长;
步骤S4、按栈数组的大小排序,main函数将安全程序所使用的栈空间写入特定的值;并对全栈数组进行符合SIL4标准的内存检测;
步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;
步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测,比较判定其值是否仍然为预先设置的特定值;如否,则判定栈异常,从而进行导向安全处理;如是,则栈异常,不报警;
按栈数组的大小排序表示为: P1<P2<P3<P4<P5<P6,其中 区段[P1,P2]和[P5,P6]为安全程序所使用的栈空间,区段[P3,P4]为栈保护的栈空间,P1记录Stack数组的起始位置,P2记录Stack数组结束位置,P3记录StackGuard1数组的起始位置,P4记录StackGuard1数组结束位置,P5记录StackGuard2数组起始位置,P6记录StackGuard2数组结束位置。
2.根据权利要求1所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
步骤S1还包括:利用全局变量P3记录StackGuard1数组的起始位置以及利用全局变量P4记录StackGuard1数组结束位置。
3.根据权利要求1或2所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
步骤S2还包括:利用全局变量P1记录Stack数组的起始位置以及利用全局变量P2记录Stack数组结束位置,然后返回。
4.根据权利要求3所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
步骤S2还包括:利用全局变量P5记录StackGuard2数组起始位置以及利用全局变量P6记录StackGuard2数组结束位置,然后返回。
5.根据权利要求1或2所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
同一个栈数组为Stack数组、StackGuard1数组或者StackGuard2数组三者任一一个。
6.根据权利要求1所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
Fsafety所使用的栈与Finit声明的Stack数组为相同的内存空间。
CN202110835650.8A 2021-07-23 2021-07-23 一种适用通用操作系统sil4栈检测方法 Active CN113687968B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110835650.8A CN113687968B (zh) 2021-07-23 2021-07-23 一种适用通用操作系统sil4栈检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110835650.8A CN113687968B (zh) 2021-07-23 2021-07-23 一种适用通用操作系统sil4栈检测方法

Publications (2)

Publication Number Publication Date
CN113687968A CN113687968A (zh) 2021-11-23
CN113687968B true CN113687968B (zh) 2024-11-26

Family

ID=78577750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110835650.8A Active CN113687968B (zh) 2021-07-23 2021-07-23 一种适用通用操作系统sil4栈检测方法

Country Status (1)

Country Link
CN (1) CN113687968B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294517A (zh) * 2012-02-22 2013-09-11 国际商业机器公司 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置
CN106547606A (zh) * 2016-10-25 2017-03-29 交控科技股份有限公司 堆栈自检方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578094B1 (en) * 2000-03-02 2003-06-10 International Business Machines Corporation Method for preventing buffer overflow attacks
JP5039728B2 (ja) * 2009-02-24 2012-10-03 三菱重工業株式会社 コンピュータメモリにおけるスタック領域のデータの保護方法
CN109214169B (zh) * 2017-06-30 2023-12-08 芜湖美的厨卫电器制造有限公司 堆栈溢出检测方法、装置及家用电器
CN108268770B (zh) * 2018-02-05 2020-05-05 烽火通信科技股份有限公司 一种栈溢出检测系统及方法
CN112286684B (zh) * 2020-10-29 2022-08-02 苏州浪潮智能科技有限公司 一种内存使用量控制方法、装置、设备及介质
CN112631510B (zh) * 2020-12-02 2023-05-12 海光信息技术股份有限公司 堆栈区域扩充的方法、装置及硬件平台

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294517A (zh) * 2012-02-22 2013-09-11 国际商业机器公司 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置
CN106547606A (zh) * 2016-10-25 2017-03-29 交控科技股份有限公司 堆栈自检方法及装置

Also Published As

Publication number Publication date
CN113687968A (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
US8397048B2 (en) Memory leak detection during dynamic memory allocation
US8990510B2 (en) Read-copy update system and method
US7690003B2 (en) System and method for increasing data throughput using thread scheduling
US8868851B2 (en) Data access method of a memory device
CN110865888A (zh) 一种资源加载方法、装置、服务器及存储介质
US20120166710A1 (en) Flash Memory Device and Data Access Method Thereof
US10353636B2 (en) Write filter with dynamically expandable overlay
US20090240750A1 (en) Memory system and data access method
CN112148221B (zh) 一种磁盘冗余阵列的巡检方法、装置、设备及存储介质
KR20090026296A (ko) 예측 데이터 로더
CN102693164B (zh) 防止缓存溢出的设备和方法
CN117725035B (zh) 一种针对lsm树的文件合并方法及相关设备
US9239742B2 (en) Embedded systems and methods for threads and buffer management thereof
US7634496B1 (en) Techniques for managing state changes of a data storage system utilizing the object oriented paradigm
CN108710475B (zh) 增强固态硬盘低温鲁棒性的方法、装置及计算机设备
CN114461323A (zh) 一种卡顿处理方法、装置、电子设备及存储介质
US20100005265A1 (en) Method for isolating objects in memory region
CN113687968B (zh) 一种适用通用操作系统sil4栈检测方法
US11392510B2 (en) Management method of cache files in storage space and recording device for storing cache files
US11789899B2 (en) High-performance data lake system and data storage method
CN111258649A (zh) 处理器、芯片和电子设备
CN113253932B (zh) 一种分布式存储系统的读写控制方法和系统
US8381234B2 (en) System and method for managing applications having logical pointer and flag
US6697889B2 (en) First-in first-out data transfer control device having a plurality of banks
CN111858402A (zh) 一种基于cache的读写数据处理方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant