CN117724979A - 实时操作系统的检测方法、设备及介质 - Google Patents
实时操作系统的检测方法、设备及介质 Download PDFInfo
- Publication number
- CN117724979A CN117724979A CN202311797511.6A CN202311797511A CN117724979A CN 117724979 A CN117724979 A CN 117724979A CN 202311797511 A CN202311797511 A CN 202311797511A CN 117724979 A CN117724979 A CN 117724979A
- Authority
- CN
- China
- Prior art keywords
- memory
- operating system
- time operating
- real
- write
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请涉及系统测试技术领域,具体提供一种实时操作系统的检测方法、设备及介质,旨在解决基于真实硬件设备进行测试存在许多缺陷且现有的模拟测试缺乏内存监控和异常检测逻辑的问题。为此目的,本申请通过创建目标实时操作系统的模拟器;基于模拟器对目标实时操作系统固件进行模拟运行,以对目标实时操作系统的内存操作进行检测。这样的设置能够基于模拟运行的方法对实时操作系统进行测试,并且该模拟运行的方法实现了完善的内存错误检测技术,从而为软件测试提供了便利。
Description
技术领域
本申请涉及系统测试技术领域,具体提供一种实时操作系统的检测方法、设备及介质。
背景技术
在当前物联网的各种设备中,例如智能汽车、机器人、智能交通系统中等等都运行着大量实时操作系统,以应对各种对实时性要求较高的功能任务。当前大量的物联网设备由于操作便捷化的需求被连入互联网,因此其上搭载的大量实时操作系统也暴露到复杂的网络环境中,使得他们可以被外部访问,但他们的安全性却未得到有效的测试,这也造成了各类安全事件频发。
目前针对物联网设备的安全测试主要适用两种方法,其一是基于真实硬件设备进行测试,但是这种方法存在许多缺陷:1.测试难度较大,在安全测试前必须调试好硬件状态使其能够完全正常工作。2.真实设备调试的难度较大,例如程序的实时运行状态以及出现错误时的状态都无法实时捕获等。3.测试效率低下并且对硬件寿命影响较大。物联网设备为了节约成本,性能通常只能满足功能需求,因此测试时运行效率不高,并且频繁的测试刷写对硬件损伤较大。基于此越来越多的物联网厂商采用第二种方法,即基于模拟的测试方法。但是目前基于模拟的测试方法也存在一定缺陷:不同于通常的桌面级操作系统,实时操作系统(例如FreeRTOS、SafeRTOS)大都没有足够完善的内存监控和异常检测逻辑,这导致动态测试时无法依赖系统或硬件功能对内存异常等漏洞进行有效的检测,这也降低了测试的有效性。
相应地,本领域需要一种新的实时操作系统的检测方法来解决上述问题。
发明内容
本申请旨在解决上述技术问题,即解决基于真实硬件设备进行测试存在许多缺陷且现有的模拟测试缺乏内存监控和异常检测逻辑的问题。
为了实现上述目的,在第一方面,本申请提供一种实时操作系统的检测方法,所述方法包含以下步骤:
创建目标实时操作系统的模拟器;
基于所述模拟器对目标实时操作系统固件进行模拟运行,以对所述目标实时操作系统的内存操作进行检测。
在上述实时操作系统的检测方法的可选技术方案中,“对目标实时操作系统固件进行模拟运行”的步骤包括:
获取所述目标实时操作系统固件的静态特征;
基于所述静态特征对所述目标实时操作系统固件进行模拟运行。
在上述实时操作系统的检测方法的可选技术方案中,所述目标实时操作系统的内存包括堆内存,“获取所述目标实时操作系统固件的静态特征”的步骤包括:
获取堆内存分配函数的地址;
“基于所述静态特征对所述目标实时操作系统固件进行模拟运行”的步骤包括:
获取堆内存初始大小,基于所述堆内存分配函数的地址对所述堆内存分配函数进行监测以在所述堆内存初始大小的基础上增加2n;在所述堆内存分配函数创建的堆内存空间地址的基础上增加n;
对分配的所述堆内存的前后n大小的内存空间进行内存读写监控,以判断所述目标实时操作系统是否出现内存读写越界
在上述实时操作系统的检测方法的可选技术方案中,所述目标实时操作系统的内存包括全局变量内存,“获取所述目标实时操作系统固件的静态特征”的步骤包括:
获取获取所述全局变量内存的地址信息、内存读写函数的地址以及内存读写函数的读写长度,并基于所述内存读写函数的地址以及所述内存读写函数的读写长度获取内存读写函数的操作范围;
“基于所述静态特征对所述目标实时操作系统固件进行模拟运行”的步骤包括:
基于所述全局变量内存的地址信息以及所述内存读写函数的操作范围对所述内存读写函数进行监测,以判断所述目标实时操作系统是否出现内存读写越界。
在上述实时操作系统的检测方法的可选技术方案中,“获取内存读写函数的地址”的步骤包括:
基于符号表和/或内存拷贝类函数的静态特征,获取所述内存读写函数的地址。
在上述实时操作系统的检测方法的可选技术方案中,所述方法还包括:
获取所述目标实时操作系统的动态运行特征;
基于所述静态特征以及所述动态运行特征对所述目标实时操作系统固件进行模拟运行。
在上述实时操作系统的检测方法的可选技术方案中,所述目标实时操作系统的内存包括栈变量内存,“获取所述静态特征以及所述动态运行特征”的步骤包括:
获取内存读写函数的地址并基于二进制文件符号信息和/或抬栈操作的执行获取函数栈空间大小;基于所述二进制文件符号信息和/或写入操作的执行获取栈变量内存大小;
“基于所述静态特征以及所述动态运行特征对所述目标实时操作系统固件进行模拟运行”的步骤包括:
当执行所述内存读写函数时,基于所述函数栈空间大小、所述栈变量内存大小以及所述内存读写函数的地址对所述内存读写函数进行监测,以判断所述目标实时操作系统是否出现内存读写越界。
在上述实时操作系统的检测方法的可选技术方案中,“获取内存读写函数的地址”的步骤包括:
基于符号表、内存拷贝类函数的静态特征以及所述目标实时操作系统的动态运行特征中的至少一种,获取所述内存读写函数的地址。
在第二方面,本申请还提供了一种计算机设备,所述计算机室设备包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述任一项所述的实时操作系统的检测方法。
在第三方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述任一项所述的实时操作系统的检测方法。
本领域技术人员能够理解的是,在本申请的技术方案中通过创建目标实时操作系统的模拟器;基于模拟器对目标实时操作系统固件进行模拟运行,以对目标实时操作系统的内存操作进行检测。这样的设置能够基于模拟运行的方法对实时操作系统进行测试,并且该模拟运行的方法实现了完善的内存错误检测技术,从而为软件测试提供了便利。
进一步地,获取内存读写函数的地址包括:基于符号表和/或内存拷贝类函数的静态特征,获取内存读写函数的地址;或者,基于符号表、内存拷贝类函数的静态特征以及目标实时操作系统的动态运行特征中的至少一种,获取内存读写函数的地址。这样的设置能够避免因编译时将内存读写函数进行内联,从而导致不能判断是否调用了内存读写函数的情况发生,增强了内存越界读写的检测能力。
附图说明
参照附图,本申请的公开内容将变得更易理解。本领域技术人员容易理解的是:这些附图仅仅用于说明的目的,而并非意在对本申请的保护范围组成限制。此外,图中类似的数字用以表示类似的部件,其中:
图1是根据本申请的一个实施例的实时操作系统的检测方法的主要步骤流程示意图;
图2是根据本申请的一个实施例的对目标实时操作系统固件进行模拟运行的主要步骤流程示意图;
图3是根据本申请的另一个实施例的对目标实时操作系统固件进行模拟运行的主要步骤流程示意图;
图4是根据本申请的一个实施例的模拟器进行内存检测的流程示意图;
图5是根据本申请的一个实施例的计算机设备的主要结构示意图。
具体实施方式
下面参照附图来描述本申请的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本申请的技术原理,并非旨在限制本申请的保护范围。
在本申请的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“A和/或B”表示所有可能的A与B的组合,比如只是A、只是B或者A和B。术语“至少一个A或B”或者“A和B中的至少一个”含义与“A和/或B”类似,可以包括只是A、只是B或者A和B。单数形式的术语“一个”、“这个”也可以包含复数形式。
如背景技术部分所述,针对基于真实硬件设备进行测试存在许多缺陷且现有的模拟测试缺乏内存监控和异常检测逻辑的问题,本申请提供了一种实时操作系统的检测方法。
参阅附图1,图1是根据本申请的一个实施例的实时操作系统的检测方法的主要步骤流程示意图。如图1所示,本申请的实时操作系统的检测方法包含以下步骤:
步骤S101:创建目标实时操作系统的模拟器。
具体来说,将目标实时操作系统固件进行解析,选择对应的架构指令翻译器,初始化各寄存器状态,按对应的可执行文件格式将目标实时操作系统固件装载进模拟内存,以创建目标实时操作系统的模拟器来实现对目标实时操作系统固件的CPU模拟执行。
步骤S102:基于模拟器对目标实时操作系统固件进行模拟运行,以对目标实时操作系统的内存操作进行检测。
具体来说,基于模拟器对目标实时操作系统固件进行模拟运行,这样的设置能够在基于CPU模拟的条件下不依赖于硬件对目标实时操作系统的内存访问行为、变量使用行为等各类内存操作等进行监控,及时正确地报告软件内存错误,既能降低测试成本,又能降低测试集成工作量。
基于上述步骤S101至S102,本申请通过创建目标实时操作系统的模拟器;基于模拟器对目标实时操作系统固件进行模拟运行,以对目标实时操作系统的内存操作进行检测。这样的设置能够基于模拟运行的方法对实时操作系统进行测试,并且该模拟运行的方法实现了完善的内存错误检测技术,从而为软件测试提供了便利。
接下来,对步骤S102作进一步说明。
参阅附图2,图2是根据本申请的一个实施例的对目标实时操作系统固件进行模拟运行的主要步骤流程示意图。如图2所示,在一些实施例中,对目标实时操作系统固件进行模拟运行包括以下步骤:
步骤S201:获取目标实时操作系统固件的静态特征。
步骤S202:基于静态特征对目标实时操作系统固件进行模拟运行。
具体来说,在对目标实时操作系统固件进行模拟运行之前先获取目标实时操作系统固件的静态特征,从而基于静态特征对目标实时操作系统固件进行模拟运行。
在一些实施例中,目标实时操作系统的内存包括堆内存,获取目标实时操作系统固件的静态特征包括:获取堆内存分配函数的地址;
基于静态特征对目标实时操作系统固件进行模拟运行包括以下步骤:
步骤S301:获取堆内存初始大小,基于堆内存分配函数的地址对堆内存分配函数进行监测以在堆内存初始大小的基础上增加2n。
步骤S302:在堆内存分配函数创建的堆内存空间地址的基础上增加n。
步骤S303:对分配的堆内存的前后n大小的内存空间进行内存读写监控,以判断目标实时操作系统是否出现内存读写越界。
具体来说,堆内存通常由堆管理器负责管理,其能够提供多对配对的内存分配以及释放函数接口。在获取目标实时操作系统固件的静态特征时获取堆内存分配函数和释放函数的地址。在基于静态特征对目标实时操作系统固件进行模拟运行时,动态控制堆内存分配及释放过程,以获取堆内存实际大小以及堆内存在运行时可被目标实时操作系统使用区域的起始地址。即在内存分配时修改各个内存申请函数(比如malloc)的参数寄存器的值(寄存器架构相关),以使得实际分配的堆内存大小在堆内存初始大小的基础上增加2n(n等于目标架构堆管理器对齐的最小单位);在堆内存分配函数创建的堆内存空间地址的基础上增加n,以获取堆内存在运行时可被目标实时操作系统使用区域的起始地址,从而在堆内存前后各留下n字节的空间。而在内存释放时修正释放函数(比如free)的参数,将传递过来的将要释放的内存指针上移n字节,以保证堆管理器的正确运行。
对分配的堆内存的前后n大小的内存空间进行内存读写监控,以判断目标实时操作系统是否出现内存读写越界。即通过CPU模拟提供的内存读写挂钩(hook)机制,对堆内存分配函数返回的堆内存前后n字节的空间进行读写挂钩。当这些内存被读写,则表明产生了越界读写的问题。此外,在内存释放时将对被读写挂钩的内存进行解挂钩,以便后续内存再次被正常分配。
在一些实施例中,目标实时操作系统的内存包括全局变量内存,获取目标实时操作系统固件的静态特征包括以下步骤:
步骤S401:获取获取全局变量内存的地址信息、内存读写函数的地址以及内存读写函数的读写长度。
步骤S402:基于内存读写函数的地址以及内存读写函数的读写长度获取内存读写函数的操作范围。
基于静态特征对目标实时操作系统固件进行模拟运行包括:
基于全局变量内存的地址信息以及内存读写函数的操作范围对内存读写函数进行监测,以判断目标实时操作系统是否出现内存读写越界。
具体来说,在目标实时操作系统固件的模拟中,目标实时操作系统的内存分布地址并不会随着程序运行而变化。基于此获取全局变量内存的地址信息即为获取目标可执行文件的符号表信息,并基于对目标可执行文件的符号表信息的解析获取全局变量内存的地址信息。进一步地,还可以将获取到的全局变量内存的地址信息添加至全局变量分析列表中。
基于全局变量内存的地址信息以及内存读写函数的操作范围对内存读写函数进行监测,以判断目标实时操作系统是否出现内存读写越界。即在目标实时操作系统的模拟运行中对内存读写函数进行监测,若监测到内存读写函数的操作范围跨越了全局变量分析列表中的至少两个全局变量内存的地址,则说明内存读写函数存在越界读写行为。
在一些实施例中,获取内存读写函数的地址包括:基于符号表和/或内存拷贝类函数的静态特征,获取内存读写函数的地址。
具体来说,当目标实时操作系统的内存为堆内存或者全局变量内存时,首先通过符号表确定各内存读写函数的地址;若内存读写函数经编译优化后直接内联为调用函数的一部分汇编代码,则进一步对内存拷贝函数的静态特征进行分析以获取内存读写函数的地址。即内存拷贝函数(memcpy)通常会被优化为三个序列的语句:读内存,写内存,判断并跳回读内存;将识别到的内联汇编代码片段标记为内存读写函数并提取出读写寄存器值以及操作范围。
参阅附图3,图3是根据本申请的另一个实施例的对目标实时操作系统固件进行模拟运行的主要步骤流程示意图。如图3所示,在一些实施例中,对目标实时操作系统固件进行模拟运行还包括以下步骤:
步骤S501:获取目标实时操作系统的动态运行特征。
步骤S502:基于静态特征以及动态运行特征对目标实时操作系统固件进行模拟运行。
具体来说,在对目标实时操作系统固件进行模拟运行之前先获取目标实时操作系统固件的静态特征以及目标实时操作系统的动态运行特征,从而基于静态特征以及动态运行特征对目标实时操作系统固件进行模拟运行。
在一些实施例中,目标实时操作系统的内存包括栈变量内存,获取静态特征以及动态运行特征包括以下步骤:
步骤S601:获取内存读写函数的地址并基于二进制文件符号信息和/或抬栈操作的执行获取函数栈空间大小。
步骤S602:基于二进制文件符号信息和/或写入操作的执行获取栈变量内存大小。
基于静态特征以及动态运行特征对目标实时操作系统固件进行模拟运行包括:
当执行内存读写函数时,基于函数栈空间大小、栈变量内存大小以及内存读写函数的地址对内存读写函数进行监测,以判断目标实时操作系统是否出现内存读写越界。
具体来说,获取二进制文件符号信息;当二进制文件符号信息中包含函数栈空间大小时,基于二进制文件符号信息获取函数栈空间大小;当二进制文件符号信息中未包含函数栈空间大小时,根据各架构的编译器对函数入口点执行抬栈操作,以获取函数栈空间大小。
当二进制文件提供了足够的符号信息时,从二进制文件的符号信息中提取每个函数的栈变量内存大小;并在进入函数时将每个栈变量内存标记为不同的颜色;当二进制文件未提供足够的符号信息时,基于目标实时操作系统的动态运行特征获取栈变量内存大小。即函数在每一个栈变量内存在初始化或者第一次被赋值时,会对其栈变量内存进行连续的写操作。因此在动态执行进入每一个函数中时,记录每一次对栈变量内存的写入操作,基于对栈变量内存的写入操作获取栈变量内存大小,进而将连续的写入内存标记为同一种颜色。
当执行内存读写函数时,基于函数栈空间大小、栈变量内存大小以及内存读写函数的地址对内存读写函数进行监测,以判断目标实时操作系统是否出现内存读写越界。即当执行内存读写函数时,判断内存读写函数的地址是否为栈地址;若内存读写函数的地址为栈地址,获取内存读写函数的栈内空间范围;判断内存读写函数的栈内空间范围是否位于同一栈变量内存的颜色中,若否,则说明出现越界读写操作。这样的设置能够使得本申请的检测方法不仅包含常见的堆内存和全局变量内存的错误检测,同时还包含了栈变量内存大小分析方法,该方法可以为缺乏符号信息的实时操作系统的栈变量内存错误检测提供检测能力,在缺乏源文件的栈变量符号信息的情况下,能够较准确地判断是栈变量内存的大小,进而准确判断出是否发生栈溢出读写行为。
进一步地,当内存读写函数执行完毕,需要将栈变量内存的染色记录删除,以免产生误报。由于内存读写函数退出点存在不唯一或者直接跳转等情况,难以确认。因此在将栈变量内存的染色记录删除时,预先对静态分析提取到的函数入口点添加挂钩,当程序执行到挂钩处时,删除被该函数栈所覆盖的旧栈内存的染色记录,从而达到清除已返回函数栈内存染色记录的目的。
示例性地,根据各架构的编译器对函数入口点执行抬栈操作以获取函数栈空间大小可以为:对于TriCore架构抬栈操作可以为sub a10,#0x20;对于ARMv7a架构抬栈操作可以为sub sp,#0x7c;对于MIPS架构抬栈操作可以为addiu sp,#-0x28;对于RISC-V架构抬栈操作可以为addi sp,sp,-0x28。以上所述的根据各架构的编译器对函数入口点执行抬栈操作的设置方式只是作为示例性说明,在实际应用中可以根据实际需要来进行选择。
在一些实施例中,获取内存读写函数的地址包括:基于符号表、内存拷贝类函数的静态特征以及目标实时操作系统的动态运行特征中的至少一种,获取内存读写函数的地址。
具体来说,当目标实时操作系统的内存为栈变量内存时,首先通过符号表确定各内存读写函数的地址;若内存读写函数经编译优化后直接内联为调用函数的一部分汇编代码,则进一步对内存拷贝函数的静态特征进行分析以获取内存读写函数的地址。即内存拷贝函数(memcpy)通常会被优化为三个序列的语句:读内存,写内存,判断并跳回读内存;将识别到的内联汇编代码片段标记为内存读写函数并提取出读写寄存器值以及操作范围。
进一步地,若内存拷贝函数的静态特征不足以进行恢复,则基于目标实时操作系统的动态运行特征获取内存读写函数的地址。例如记录程序执行中的循环节,进而判断出循环计数器以及是否存在连续的内存读写行为或其他明显函数特征;进而根据动态特征和读写函数是否匹配进行判断恢复。这样的设置能够在缺乏符号信息的情况下,识别出被优化后的内存读写函数,可以为内存错误检测提供源码级别信息,使得内存错误检测方案测试效果更加灵敏。
需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本申请的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本申请的保护范围之内。同时,上述所有的实施例方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
进一步地,本申请还提供了一种实时操作系统的模拟器。
本申请实施例中的目标实时操作系统可以为车辆远程唤醒系统,则此时的实时操作系统的模拟器主要包括宿主机操作系统、基于CPU模拟的实时操作系统模拟模块、内存读写函数恢复及栈变量识别模块、堆内存错误检测模块、全局变量内存错误检测模块以及栈变量内存错误检测模块。
具体来说,宿主机操作系统即运行硬件模拟器的宿主机(通常是服务器或传统PC)上的操作系统;基于CPU模拟的实时操作系统模拟模块被配置为以目标架构实时操作系统固件为输入,模拟虚拟硬件,并通过指令翻译的方式来实现模拟出和物理机不同的CPU架构,对指令翻译过程中遇到的中断及陷阱指令进行模拟执行,调度程序进入相应的处理流程;内存读写函数恢复及栈变量识别模块被配置为利用静态和动态特征对内存读写函数进行定位和恢复,对栈变量内存的大小进行识别;堆内存错误检测模块被配置为对固件模拟执行过程中的堆相关内存操作进行检测,及时准确报告出检测到的内存错误;全局变量内存错误检测模块被配置为对固件模拟执行过程中的全局变量相关内存操作进行检测,及时准确报告出检测到的内存错误;栈变量内存错误检测模块被配置为对固件模拟执行过程中的栈变量相关内存操作进行检测,及时准确报告出检测到的内存错误。
参阅附图4,图4是根据本申请的一个实施例的模拟器进行内存检测的流程示意图。如图4所示,在一些实施例中,内存读写函数恢复及栈变量识别模块首先使用静态特征恢复部分内存读写函数、提取各函数栈变量内存的大小、全局变量大小及位置信息;再使用基于CPU模拟的实时操作系统模拟模块将目标实时操作系统固件进行动态模拟运行,提取动态运行特征恢复部分内存读写函数及分析各函数栈变量内存的大小。
在一些实施例中,全局变量内存错误检测模块的输入是全局变量列表以及内存读写函数列表。本模块会对内存读写函数进行监测,当模拟器执行到内存读写函数时,检测包含全局变量的参数的读/写内存范围是否位于同一个全局变量内存中,若不是,则报告溢出。
在一些实施例中,堆内存错误检测模块利用CPU模拟提供的内存读写挂钩机制对内存分配和释放函数修改,在内存分配时,修改参数寄存器的值(寄存器架构相关)使得实际分配的堆内存大小略微大于程序需求的值,进而可以在原内存的前后进行监测,一旦发现读写操作即报告越界读写。而在内存释放时将修正释放函数的参数,保证堆管理器的正确性。
在一些实施例中,栈变量内存错误检测模块是根据静态及动态分析得到的栈变量内存大小对相关内存读写函数进行监测,一旦发现内存读写函数跨栈变量进行写入,即报告栈内变量溢出读写。
本领域技术人员能够理解的是,本申请实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
进一步,本申请还提供了一种计算机设备。
参阅附图5,图5是根据本申请的一个实施例的计算机设备的主要结构示意图。如图5所示,本申请实施例中的计算机设备主要包括存储装置11和处理器12,存储装置11可以被配置成存储执行上述方法实施例的实时操作系统的检测方法的程序,处理器12可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的实时操作系统的检测方法的程序。为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。
在本申请实施例中计算机设备可以是包括各种电子设备形成的控制装置设备。在一些可能的实施方式中,计算机设备可以包括多个存储装置11和多个处理器12。而执行上述方法实施例的实时操作系统的检测方法的程序可以被分割成多段子程序,每段子程序分别可以由处理器加载并运行以执行上述方法实施例的实时操作系统的检测方法的不同步骤。具体地,每段子程序可以分别存储在不同的存储装置11中,每个处理器12可以被配置成用于执行一个或多个存储装置11中的程序,以共同实现上述方法实施例的实时操作系统的检测方法,即每个处理器12分别执行上述方法实施例的实时操作系统的检测方法的不同步骤,来共同实现上述方法实施例的实时操作系统的检测方法。
上述多个处理器12可以是部署于同一个设备上的处理器,例如上述计算机设备可以是由多个处理器组成的高性能设备,上述多个处理器12可以是该高性能设备上配置的处理器。此外,上述多个处理器12也可以是部署于不同设备上的处理器,例如上述计算机设备可以是服务器集群,上述多个处理器12可以是服务器集群中不同服务器上的处理器。
进一步,本申请还提供了一种计算机可读存储介质。在根据本申请的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的实时操作系统的检测方法的程序,该程序可以由处理器加载并运行以实现上述实时操作系统的检测方法。为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本申请实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本申请的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
本领域技术人员能够理解的是,可以对装置中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本申请的原理,因此,拆分或合并之后的技术方案都将落入本申请的保护范围内。
至此,已经结合附图所示的优选实施方式描述了本申请的技术方案,但是,本领域技术人员容易理解的是,本申请的保护范围显然不局限于这些具体实施方式。在不偏离本申请的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本申请的保护范围之内。
Claims (10)
1.一种实时操作系统的检测方法,其特征在于,所述方法包含以下步骤:
创建目标实时操作系统的模拟器;
基于所述模拟器对目标实时操作系统固件进行模拟运行,以对所述目标实时操作系统的内存操作进行检测。
2.根据权利要求1所述的实时操作系统的检测方法,其特征在于,“对目标实时操作系统固件进行模拟运行”的步骤包括:
获取所述目标实时操作系统固件的静态特征;
基于所述静态特征对所述目标实时操作系统固件进行模拟运行。
3.根据权利要求2所述的实时操作系统的检测方法,其特征在于,所述目标实时操作系统的内存包括堆内存,“获取所述目标实时操作系统固件的静态特征”的步骤包括:
获取堆内存分配函数的地址;
“基于所述静态特征对所述目标实时操作系统固件进行模拟运行”的步骤包括:
获取堆内存初始大小,基于所述堆内存分配函数的地址对所述堆内存分配函数进行监测以在所述堆内存初始大小的基础上增加2n;在所述堆内存分配函数创建的堆内存空间地址的基础上增加n;
对分配的所述堆内存的前后n大小的内存空间进行内存读写监控,以判断所述目标实时操作系统是否出现内存读写越界。
4.根据权利要求2所述的实时操作系统的检测方法,其特征在于,所述目标实时操作系统的内存包括全局变量内存,“获取所述目标实时操作系统固件的静态特征”的步骤包括:
获取获取所述全局变量内存的地址信息、内存读写函数的地址以及内存读写函数的读写长度,并基于所述内存读写函数的地址以及所述内存读写函数的读写长度获取内存读写函数的操作范围;
“基于所述静态特征对所述目标实时操作系统固件进行模拟运行”的步骤包括:
基于所述全局变量内存的地址信息以及所述内存读写函数的操作范围对所述内存读写函数进行监测,以判断所述目标实时操作系统是否出现内存读写越界。
5.根据权利要求3至4中任一项所述的实时操作系统的检测方法,其特征在于,“获取内存读写函数的地址”的步骤包括:
基于符号表和/或内存拷贝类函数的静态特征,获取所述内存读写函数的地址。
6.根据权利要求2所述的实时操作系统的检测方法,其特征在于,所述方法还包括:
获取所述目标实时操作系统的动态运行特征;
基于所述静态特征以及所述动态运行特征对所述目标实时操作系统固件进行模拟运行。
7.根据权利要求6所述的实时操作系统的检测方法,其特征在于,所述目标实时操作系统的内存包括栈变量内存,“获取所述静态特征以及所述动态运行特征”的步骤包括:
获取内存读写函数的地址并基于二进制文件符号信息和/或抬栈操作的执行获取函数栈空间大小;基于所述二进制文件符号信息和/或写入操作的执行获取栈变量内存大小;
“基于所述静态特征以及所述动态运行特征对所述目标实时操作系统固件进行模拟运行”的步骤包括:
当执行所述内存读写函数时,基于所述函数栈空间大小、所述栈变量内存大小以及所述内存读写函数的地址对所述内存读写函数进行监测,以判断所述目标实时操作系统是否出现内存读写越界。
8.根据权利要求7所述的实时操作系统的检测方法,其特征在于,“获取内存读写函数的地址”的步骤包括:
基于符号表、内存拷贝类函数的静态特征以及所述目标实时操作系统的动态运行特征中的至少一种,获取所述内存读写函数的地址。
9.一种计算机设备,包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至8中任一项所述的实时操作系统的检测方法。
10.一种计算机可读存储介质,其中存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至8中任一项所述的实时操作系统的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311797511.6A CN117724979A (zh) | 2023-12-22 | 2023-12-22 | 实时操作系统的检测方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311797511.6A CN117724979A (zh) | 2023-12-22 | 2023-12-22 | 实时操作系统的检测方法、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117724979A true CN117724979A (zh) | 2024-03-19 |
Family
ID=90199723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311797511.6A Pending CN117724979A (zh) | 2023-12-22 | 2023-12-22 | 实时操作系统的检测方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724979A (zh) |
-
2023
- 2023-12-22 CN CN202311797511.6A patent/CN117724979A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3788490B1 (en) | Execution control with cross-level trace mapping | |
US20220335135A1 (en) | Vulnerability analysis and reporting for embedded systems | |
TWI410864B (zh) | 在一處理環境中控制指令執行 | |
US20100313185A1 (en) | Access to test-ready virtual environments | |
CN111756575A (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
CN103577328A (zh) | 一种应用的性能分析方法及装置 | |
CN110728575A (zh) | 一种电力交易平台web安全深度监控方法 | |
US10698805B1 (en) | Method and system for profiling performance of a system on chip | |
US10514972B2 (en) | Embedding forensic and triage data in memory dumps | |
US20120036501A1 (en) | Method and System for Capturing System and User Events Using Hardware Trace Devices | |
US9792402B1 (en) | Method and system for debugging a system on chip under test | |
CN105683985A (zh) | 虚拟机内省 | |
CN113987507A (zh) | 堆内存漏洞检测方法、装置、存储介质及电子设备 | |
CN116720192A (zh) | 一种面向mips架构基于混合分析技术的漏洞检测方法 | |
CN114741700B (zh) | 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置 | |
CN104750602B (zh) | 一种动态污点数据分析方法及装置 | |
CN113632067A (zh) | 利用跟踪代码的记录执行来仿真非跟踪代码 | |
CN115328796A (zh) | 一种用于arm架构的软件漏洞辅助定位方法和系统 | |
US9009671B2 (en) | Crash notification between debuggers | |
CN116414722B (zh) | 模糊测试处理方法、装置、模糊测试系统及存储介质 | |
Zhang et al. | Benchmarking for observability: The case of diagnosing storage failures | |
US11030075B2 (en) | Efficient register breakpoints | |
CN117724979A (zh) | 实时操作系统的检测方法、设备及介质 | |
CN117931540A (zh) | 预留指令处理方法、装置、电子设备和存储介质 | |
JP5766650B2 (ja) | 情報処理装置、監視方法および監視プログラム |
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 |