CN107818034B - 监测计算机设备中的进程的运行空间的方法以及装置 - Google Patents

监测计算机设备中的进程的运行空间的方法以及装置 Download PDF

Info

Publication number
CN107818034B
CN107818034B CN201610825243.8A CN201610825243A CN107818034B CN 107818034 B CN107818034 B CN 107818034B CN 201610825243 A CN201610825243 A CN 201610825243A CN 107818034 B CN107818034 B CN 107818034B
Authority
CN
China
Prior art keywords
function
space
instruction
monitored
monitored function
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
CN201610825243.8A
Other languages
English (en)
Other versions
CN107818034A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610825243.8A priority Critical patent/CN107818034B/zh
Publication of CN107818034A publication Critical patent/CN107818034A/zh
Application granted granted Critical
Publication of CN107818034B publication Critical patent/CN107818034B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种监测计算机设备中的进程的运行空间的方法以及装置,应用于计算机设备中的操作系统,其方法部分包括:确定被监测函数,被监测函数为进程运行过程中被调用的函数;获得计算机设备中的处理器执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;判断执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容是否一致,若不一致,则确定被监测函数破坏进程的运行空间。即可以及时监测到进程中直接引起运行空间被破坏的具体函数,可以及时监测进程运行空间是否被破坏。

Description

监测计算机设备中的进程的运行空间的方法以及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种监测计算机设备中的进程的运行空间的方法,装置以及计算机设备。
背景技术
在操作系统中运行的每个进程都有自己独立的栈空间。栈空间是操作系统分配给该进程使用的内存,例如用于保存局部变量,保存进程运行时的函数调用信息以及进程切换时的上下文信息等。然而,在实际进程运行过程中,常常会出现进程的运行空间被破坏的情况。其中进程的运行空间包含进程的栈空间以及进程运行中涉及到的寄存器。以下对常见的进程的运行空间被破坏的情况及原因进行简单介绍:
第一,在一些实时操作系统中,例如VxWorks操作系统、嵌入式操作系统(Operating System Embedded,OSE)等,操作系统为了提高运行效率,通常不进行虚拟内存管理。包括内核态进程在内的所有进程共享同一物理地址空间,进程之间没有地址保护机制,即进程切换时不需要进行虚拟地址空间切换,进程间可以直接共享变量,不需要通过内核态在不同的地址空间之间复制数据。操作系统在运行多个程序时不需要在内核态和用户态之间切换,对进程的管理相当于进行直接函数调用。由于所有的进程均在同一物理地址空间上运行,这对操作系统设置栈空间大小的合理性提出了很高的要求。如果栈空间太大会浪费内存空间,栈空间太小则在内存使用峰值时可能会引起某些进程的栈空间被破坏。例如,由于进程A的栈空间发生了溢出,导致相邻的进程B运行所依赖的栈空间中的内容被改写;若改写的是进程B内局部变量,则可能造成进程B地址访问异常,若改写的是进程B的函数调用指针信息,则可能造成指令访问异常,即进程A导致的栈空间被破坏,表现出来的现象却是进程B运行异常,严重干扰了程序开发人员分析和定位问题。
第二种情况,在当前网络与分布式系统安全中,恶意攻击者往往利用缓冲区溢出这一手段实现非法目的。而在所有类型的缓冲区溢出漏洞中,最为危险的是堆栈溢出。因为恶意攻击者可以利用堆栈溢出,在函数返回时改变返回地址,让进程跳转到任意地址,例如跳转并且执行病毒程序,以获得操作系统的控制权等危险情况。
现有技术通过查询发生切换时栈空间的使用情况来试图避免栈空间被破坏。例如,将钩子程序挂钩到进程切换事件,即操作系统在发生进程切换时,调用钩子程序。当操作系统由进程A切换到进程B时,通过钩子函数查询进程A栈空间的使用情况,或者通过监测函数定时监测某个进程的栈空间是否被破坏。例如,如果进程A的栈空间溢出,则将进程A挂起,并以进程B的身份,构造警告消息,上报监控中心服务器。然而采用上述监测方法的问题在于,当监测到进程A的栈空间被破坏时,破坏已经产生,即很有可能已经对其它的进程的运行空间造成破坏。另外,无论是进程切换时监测到栈空间溢出还是定时监测进程的运行空间被破坏,都不能保证操作系统及时发现进程的运行空间被破坏。
发明内容
本申请实施例提供了一种监测计算机设备中的进程运行空间的方法、装置,以及计算机设备,可以及时监测到计算机设备中的进程中直接引起进程的运行空间被破坏的具体函数,即可以及时监测进程的运行空间是否被破坏,有利于后续操作系统的维护。
有鉴于此,第一方面,本申请实施例提供一种监测计算机设备中的进程的运行空间的方法,应用于计算机设备中的操作系统,在该方法中,可以确定监测的进程,具体地,确定进程中需要进行监测的函数,即确定被监测函数,其中,该被监测函数可以为进程中被调用的函数;之后,进一步获得计算机设备中的处理器执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;当获得了被监测函数执行前进程的运行空间的内容与执行后的进程的运行空间的内容后,判断被监测函数执行前进程的运行空间内容与执行后进程的运行空间内容是否一致,若不一致,则确定被监测函数破坏进程的运行空间。
通过以上技术方案可以看出,本领域技术人员可以知道的是,当被监测函数有破坏进程的运行空间的内容时,会导致进程的运行空间的内容发生变化,故本申请中,具体通过监测被监测函数执行前后的进程的运行空间的内容来确定进程的运行空间是否被破坏。相对于现有技术,在本申请中,可以及时监测到进程中直接引起进程的运行空间发生错误,即被破坏的具体函数,可以及时监测进程的运行空间是否被破坏。
在一种可能的实现中,上述进程的运行空间的内容具体包括被监测函数的栈空间的内容或寄存器组的内容,或者被监测函数的栈空间以及寄存器组这两者的内容,寄存器组包括被监测函数执行时所用到的所有寄存器。
即进程的运行空间内容具体是包含了被监测函数的栈空间内容,和/或者被监测函数执行时用到的所有寄存器,本领域技术人员可以知道的是,当被监测函数有破坏进程的运行空间的内容时,会导致对应的栈空间的内容和/或寄存器组的内容发生变化,故本申请中,具体通过监测被监测函数栈空间的内容和/或寄存器组的内容来确定被监测函数是否被破坏,提高方案的可实现性。
在一种可能的实现中,可以先确定进程中的函数调用轨迹,按照确定的按函数调用轨迹依次选取函数作为被监测函数进行监测。
即在确定进程中的被监测函数时,先确定具体的函数的监测顺序,优选地,按照函数调用轨迹来确定被监测函数,即按照函数调用顺序依次选取被监测函数进行依次监测,应理解,这样可以更快的找出进程中破坏进程的运行空间的具体函数。
在一种可能的实现中,上述获得被监测函数执行前后,进程的运行空间的内容具体可以通过以下方式:
可以通过设置第一trap(陷阱)指令以及第二trap指令,根据第一trap指令将处理器执行被监测函数前进程的运行空间的内容保存至第一临时空间,根据第二trap指令将处理器执行被监测函数后进程的运行空间的内容保存至第二临时空间;最后根据第一临时空间获得处理器执行被监测函数前进程的运行空间的内容,根据第二临时空间获得处理器执行被监测函数后进程的运行空间的内容。
即在该实现中,提出了确定被监测函数执行前后,所述进程的运行空间的内容的方式,增加了方案的实施性。
在一种可能的实现中,上述设置第一trap指令以及第二trap指令,具体是指,将被监测函数的入口指令替换为第一trap指令并记录入口指令,以及入口指令对应的入口地址;将被监测函数的返回指令替换为第二trap指令并记录返回指令,以及返回指令对应的返回地址;当处理器执行到第一trap指令时,将当前进程的运行空间的内容保存至第一临时空间,将第一trap指令替换回入口指令,并执行第一异常返回(exception return,eret)指令跳回入口地址;当处理器执行到第二trap指令时,将当前进程的运行空间的内容保存至第二临时空间,将第二trap指令替换回返回指令并执行第二eret指令跳回返回地址。
即本实现中,通过在替换被监测函数的入口指令以及返回指令替换为第一trap指令,以及第二trap指令,可以理解的是,此时,当处理器执行被监测函数执行到入口地址所对应的第一trap指令时,将当前所述进程的运行空间的内容保存至第一临时空间,即将被监测函数执行前的所述进程的运行空间的内容保存到了第一临时空间,并将第一trap指令替换回所述入口指令;当第一trap指令替换回所述入口指令后,被监测函数可以被正常执行,当处理器执行到被监测函数的返回地址所对应的第二trap指令时,将当前所述进程的运行空间的内容保存至所述第二临时空间,应理解,执行到被监测函数的返回地址时,说明被监测函数的内容已经被执行完,需要通过返回地址跳出被监测函数,由于被监测函数的返回指令被替换成第二trap指令,当处理器执行到被监测函数的返回地址所对应的第二trap指令时,将当前所述进程的运行空间的内容保存至第二临时空间即是指将被监测函数执行后的所述进程的运行空间的内容保存至第二临时空间,通过以上更为具体的方式提出了确定被监测函数执行前后,所述进程的运行空间的内容的方式,增加了方案的实施性。
在一种可能的实现中,当确定被监测函数破坏进程运行空间之后,还可以继续判断被监测函数是否为可重入函数,若判断被监测函数为不可重入函数,则生成用于指示所述被监测函数破坏所述进程的运行空间的第一警告信息,并向计算机设备所处网络中的监控中心服务器发送该第一警告信息。通过该监控中心服务器,监控人员可以监控到计算机设备的运行状态。
即当确定了被监测函数破坏了进程运行空间以及为不可重入函数时,可以及时生成第一警告信息,并将生成的第一警告信息反馈给监控中心服务器,以便后续及时发现问题并及时进行计算机设备的操作系统的恢复工作。
在一种可能的实现中,若判断被监测函数为可重入函数,则进一步创建临时进程,其中,该临时进程的入口地址上述第一临时空间的入口地址,临时进程的入口函数为被监测函数,第一临时空间的页对齐,页被设置为只读属性,执行该临时进程,应理解,执行临时进程时会触发传输后备缓冲器(Translation Lookaside Buffer,TLB)异常,最后根据触发的TLB异常确定触发TLB异常的指令地址。
即当确定了破坏进程运行空间的具体函数后,通过上述实现,即通过创建以第一临时空间作为栈空间,以被监测函数作为入口函数的临时进程,并将临时空间页属性设置为只读,通过临时进程触发的TLB异常来确定出具体破坏进程运行空间的指令地址。不仅可以找到破坏进程运行空间的具体函数,若破坏进程运行空间的函数为可重入函数时,还可以进步一确定出具体函数中破坏进程运行空间的具体指令的地址,更为方便使得后续及时发现问题并及时进行计算设备的操作系统的恢复工作。
在一种可能的实现中,当根据TLB异常确定触发TLB异常的指令地址之后,可以根据指令地址生成用于指示所述被监测函数的所述指令地址破坏所述进程运行空间的第二警告信息,并向计算机设备所处网络中的监控中心服务器发送该第二警告信息。
即在本实现中,当确定了引发进程的运行空间被破坏的具体指令地址后,可以根据指令地址生成用于指示所述被监测函数的所述指令地址破坏所述进程运行空间的第二警告信息,并将该第二警告信息上报监控中心服务器。不仅可以找到破坏进程运行空间的具体函数,若为破坏进程运行空间的函数为可重入函数,还可以进步一确定出具体函数中破坏进程的运行空间被破坏的具体指令地址,并及时反馈给监控中心服务器,方便后续计算机设备的操作系统的维护恢复工作,可以极大的缩短计算机设备的操作系统维护恢复的时间。
本申请第二方面提供了一种监测计算机设备中进程的运行空间的装置,应用于计算机设备的操作系统,该装置具有实现上述第一方面方法设计中涉及到的行为以及功能。所述功能以及行为可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能以及行为相对应的模块。所述模块可以是软件和/或硬件。
在一种可能的实现中,该装置包括第一确定模块、获得模块、判断模块以及第二确定模块。其中,第一确定模块,用于确定被监测函数,被监测函数为进程运行过程中被调用的函数;获得模块,用于获得计算机设备中的处理器执行第一确定模块确定的被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;判断模块,用于判断获得模块获得的执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容是否一致;第二确定模块,用于若判断模块判断执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容不一致,则确定被监测函数破坏进程的运行空间。
其中,进程的运行空间的内容包括被监测函数的栈空间的内容和/或寄存器组的内容,寄存器组包括被监测函数执行时所用到的所有寄存器。
在一种可能的实现中,第一确定模块包括确定单元以及选取单元。其中,确定单元,用于确定进程的函数调用轨迹;选取单元,用于按照确定单元确定的函数调用轨迹依次选取函数作为被监测函数。
在一种可能的实现中,获得模块包括替换单元、记录单元、保存单元以及获得单元。其中,替换单元,用于将被监测函数的入口指令替换为第一trap指令,将被监测函数的返回指令替换为第二trap指令;记录单元,用于记录入口指令以及入口指令对应的入口地址,记录返回指令以及返回指令对应的返回地址;保存单元,用于当处理器执行到第一trap指令时,将当前进程的运行空间的内容保存至第一临时空间,当处理器执行到第二trap指令时,将当前进程的运行空间的内容保存至第二临时空间;替换单元,还用于当处理器执行到第一trap指令时,保存单元将当前进程的运行空间的内容保存至第一临时空间后,将第一trap指令替换回入口指令,并执行第一eret指令跳回入口地址;当处理器执行到第二trap指令时,保存单元将当前进程的运行空间的内容保存至第二临时空间后,将第二trap指令替换回返回指令,并执行第二eret指令跳回返回地址;获得单元,用于根据第一临时空间获得处理器执行被监测函数前进程的运行空间的内容,根据第二临时空间获得处理器执行被监测函数后进程的运行空间的内容。
在一种可能的实现中,第二确定模块确定被监测函数破坏进程运行空间之后,判断模块还用于:判断被监测函数是否为可重入函数;装置还包括:生成模块,用于若判断模块判断被监测函数为不可重入函数,则生成第一警告信息,第一警告信息用于指示被监测函数破坏进程的运行空间;发送模块,用于向计算机设备所处网络中的监控中心服务器发送第一警告信息。
在一种可能的实现中,装置还包括创建模块执行模块第三确定模块
创建模块,用于若判断模块判断被监测函数为可重入函数,则创建临时进程,临时进程的入口地址为第一临时空间的入口地址,临时进程的入口函数为被监测函数,第一临时空间的页对齐,页为只读属性;执行模块,用于执行创建模块创建的临时进程使得触发TLB异常;第三确定模块,用于根据执行模块执行后触发的TLB异常确定触发TLB异常的指令地址;生成模块,还用于当第三确定模块根据TLB异常确定触发TLB异常的指令地址之后,根据指令地址生成第二警告信息,第二警告信息用于指示被监测函数的指令地址破坏进程的运行空间;发送模块,还用于向计算机设备所处网络中的监控中心服务器发送第二警告信息。
本申请第三方面提供了一种计算机设备,该计算机设备平台包括处理器、内存、外设以及总线;其中,处理器、存储器通过总线连接;处理器,用于确定被监测函数,被监测函数为进程运行过程中被调用的函数;执行被监测函数;获得执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;判断执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容是否一致,若不一致,则确定被监测函数破坏进程的运行空间;存储器,用于存储执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容。
本申请第四方面提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码用于指示执行上述第一方面中的方法。
相较于现有技术,从以上技术方案可以看出,本申请中,确定被监测函数,被监测函数为进程运行过程中被调用的函数,获得计算机设备中的处理器执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;判断执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容是否一致,若不一致,则确定被监测函数破坏进程运行空间。即本申请中可以及时监测到进程中直接引起进程的运行空间错误的具体函数,可以及时监测进程的运行空间是否被破坏。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请中计算机设备的操作系统的一个架构示意图;
图2为本申请中搭载了图1所示的操作系统的一个计算机设备架构示意图:
图3为本申请中被监测进程中函数的栈空间布局的一个结构示意图;
图4为本申请实施例一种监测计算机设备中的进程的运行空间的方法一个实施例流程示意图;
图5为本申请实施例一种获得处理器执行被监测函数前后,进程的运行空间的内容的示意图;
图6为本申请实施例一种监测计算机设备中进程的运行空间的装置的一个实施例结构示意图;
图7为本申请实施例一种计算机设备的一个实施例结构示意图。
具体实施方式
本申请实施例提供了一种监测计算机设备中的进程的运行空间的方法、装置以及计算机设备,可以及时监测到进程中直接引起该进程的运行空间被破坏的具体函数,即可以及时监测进程的运行空间是否被破坏。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
操作系统是管理和控制计算机硬件与软件资源的一种计算机程序,是直接运行在计算机设备的硬件上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。其中,应理解,内核态与用户态是操作系统的两种运行级别,一个运行在内核模式的进程可以执行操作系统指令集中的任何指令,并且可以访问计算机设备中的任意存储器地址。运行在用户态中的进程不被允许执行特权指令,比如停止计算机设备的处理器、也不被允许直接引用地址空间中内核区内的代码和数据。换句话说,当一个进程通过操作系统调用、中断、异常陷入执行异常代码时,我们就称进程处于内核状态。
请参阅图1,图1为本申请中计算机设备的操作系统的一个架构示意图。
如图1所示:应理解,操作系统的内核态上有多个内核驱动模块。通过配置一个或多个内核驱动模块执行本申请后续实施例中的方法,从而实现本申请的方案。图1中以配置在驱动模块1上为例,即图1所示为加载了驱动模块1后的操作系统,后续本申请方法的执行主体均是指加载完所述驱动模块1的操作系统所对应的硬件平台。
本申请提供的方案适用于计算机设备的操作系统中,例如可以适用于windows操作系统或者欧拉linux等通用操作系统,也适用于实时操作系统(Real Time OperatingSystem,RTOS)中,例如常见的RTOS有基于嵌入式的VxWorks、RTOS linux等。实施本申请所提供的方案的具体的硬件运行平台环境,即计算机设备既可以是高级精简指令集处理器(Advanced RISC Machines,ARM)、无内部互锁流水级的微处理器(Microprocessorwithout interlocked piped stages,MIPS)和PowerPC(Erformance Optimization WithEnhanced RISC–Performance Computing)处理器等基于精简指令集(ReducedInstruction Set Computer,RISC)架构的计算机设备,也可以是支持X86等复杂指令集(Complex Instruction Set Computing,CISC)架构的计算机设备等,此处不做限定。
请参阅图2,图2为搭载了图1所示的操作系统的一个计算机设备架构示意图。图2中所示计算机设备包括处理器、内存、总线等核心组件以及外部设备。通过操作系统管理计算机设备中的各个组件。操作系统通过进程(Process)来为用户提供特定功能。进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
每个进程在运行过程中可以调用多个函数。这里以进程1为例进行说明,由图2中进程1的栈空间结构来看,可以知道进程1的函数调用轨迹为函数FuncC调用函数FuncB,函数FuncB调用函数FuncA。请参阅图3,这里假设被监测函数FuncC包含多个局部变量以及多个入口参数,则函数FuncC对应的栈空间示意图可以如图3所示。在本申请中,提出了一种监测计算机设备中的进程的运行空间的方法,应用于图2所示的计算机设备,其可以通过确定被监测函数,其中被监测函数为所述进程运行过程中调用的函数,图2中以被监测函数为FuncC为例,进一步获得计算机设备中的处理器执行被监测函数前的进程的运行空间的内容与执行被监测函数前后的进程的运行空间的内容;判断所述被监测函数执行前后,进程的运行空间的内容是否一致,若不一致,则确定所述被监测函数破坏该进程1的运行空间。
这里需要说明的是,上述图2所示只是本申请中,计算机设备的一个架构示意图,并不对本申请中的计算机设备构成限定。
为了便于理解,下面对本申请中一种监测计算机设备中的进程的运行空间的方法进行详细的描述:
请参阅图4,图4为本申请一种监测计算机设备中的进程运行空间的方法的一个实施例流程示意图,包括:
401、确定进程的函数调用轨迹。
本申请中,可以获取被监测进程的函数调用轨迹。在本申请中,函数调用轨迹是指基于调用发生的先后顺序,由各个函数之间调用关系组成的序列。通常可以利用现有调试工具,例如通过GDB,IDA,确定上述进程的函数调用轨迹。
为了便于理解,这里假设被监测进程的函数调用轨迹,即被监测进程中具体函数之间的调用关系为:主函数调用函数FuncC,函数FuncC调用函数FuncB,函数FuncB调用函数FuncA。
402、按照函数调用轨迹依次选取函数作为被监测函数。
当确定了进程的函数调用轨迹后,可以选取函数调用轨迹中出现的函数作为被监测函数。优选地,按照上述函数调用轨迹依次选取函数调用轨迹中出现的函数作为被监测函数,即依次选取函数FuncC、函数FuncB以及函数FuncA作为被监测函数依次进行监测。
为了便于说明,本实施例中,将以函数FuncC的监测过程进行描述,函数FuncB以及函数FuncA的监测过程类似,在本实施例中将不再赘述。
另外需要说明的是,也可以不严格按照进程的函数调用轨迹的顺序依次对函数进行监测,对于被监测进程中函数的监测顺序,此处不做限定。只要使得进程中的函数一一被作为被监测函数进行监测即可。
本实施例中结合如图5所示的被监测函数FuncC的具体内容的实例,来介绍获得处理器执行被监测函数前后进程的运行空间的内容的过程。该过程具体包括以下步骤403-407。
403、将被监测函数的入口指令替换为第一trap指令,将被监测函数的返回指令替换为第二trap指令,记录所述入口指令,以及所述入口指令对应的入口地址,并记录所述返回指令,以及所述返回指令对应的返回地址。
本申请中的入口指令是指被监测函数对应的程序代码被编译之后,生成的汇编指令中的第一条汇编指令。返回指令调用该被监测函数的上一级函数的汇编指令中调用该函数后的第一条汇编指令。如在图5中,被监测函数FuncC的入口指令是“2d62f0:27bdff88addiu sp,sp,-120”,返回指令是“ad8875:2486001addiu a2,a0,1”。
404、当计算设备中的处理器执行到第一trap指令时,将进程当前的运行空间的内容保存至第一临时空间。
其中,上述运行空间内容具体包括被监测函数的栈空间的内容和/或寄存器组的内容,寄存器组包括被监测函数执行时所用到的所有寄存器,即被监测函数的污染寄存器。
在本实施例中,当计算设备中的处理器执行到所述第一trap指令时,将当前所述进程的运行空间的内容保存至第一临时空间,即保存被监测函数压栈前,被监测函数执行时会用到的所有寄存器的寄存器值,以及被监测函数的栈空间的内容至第一临时空间。具体可以通过以下方式实现:
通过预设初始化第一异常处理函数,其中,该第一异常处理函数为执行到第一trap指令时触发的函数,该第一异常处理函数用于将当执行到第一trap指令时,将当前的进程的运行空间的内容保存至第一临时空间。
应理解,当执行到被监测函数的入口地址时,由于入口地址对应的入口指令已经被替换为第一trap指令,则不会进入执行被监测函数,而是因为第一trap指令陷入trap异常,进入第一异常处理函数,当触发了第一异常处理函数,将当前的进程的运行空间的内容保存至第一临时空间,即将被监测函数执行前的运行空间内容保存至第一临时空间。
405、将所述第一trap指令替换回所述入口指令并执行第一异常返回(eret)指令跳回所述入口地址。
本实施例中,当计算设备中的处理器执行到所述第一trap指令,将当前所述进程的运行空间的内容保存至第一临时空间后,将第一trap指令替换回入口指令,并执行第一eret指令跳回所述入口地址。应理解,当将第一trap指令替换为入口指令,并执行eret指令跳回所述入口指令对应的地址后,由于被监测函数的入口地址所对应的指令已经替换回入口指令,此时,可以根据入口指令,正常执行被监测函数。
406、当所述处理器执行到所述第二trap指令时,将当前所述进程的运行空间的内容保存至所述第二临时空间。
在本实施例中,由于在步骤403中,被监测函数的返回地址被替换为第二trap指令,当计算设备中的处理器执行到所述第二trap指令时,将当前所述进程的运行空间的内容保存至第一临时空间,即保存被监测函数退栈后,被监测函数执行时会用到的所有寄存器的寄存器值,以及被监测函数的栈空间的内容至第二临时空间。具体可以通过以下方式实现:
通过预设初始化第二异常处理函数,其中,该第二异常处理函数为执行到第二trap指令时触发的函数,该第二异常处理函数用于将当执行到第二trap指令时,将当前的进程的运行空间的内容保存至第二临时空间。
应理解,当执行到被监测函数的返回地址时,说明被监测函数已经执行完,但由于返回地址对应的返回指令已经被替换为第二trap指令,则不会立即跳出被监测函数,而是因为第二trap指令陷入trap异常,进入第二异常处理函数,通过第二异常处理函数将当前的进程的运行空间的内容保存至第二临时空间,即将被监测函数执行后的进程的运行空间内容保存至第二临时空间。
407、将所述第二trap指令替换回所述返回指令并执行第二eret指令跳回所述返回地址。
本实施例中,当计算设备中的处理器执行到所述第二trap指令,将被监测函数执行后的所述进程的运行空间的内容保存至第二临时空间后,将第二trap指令替换回为返回指令,并执行第二eret指令跳回所述返回地址。应理解,当将第二trap指令替换为返回指令,并执行第二eret指令跳回所述返回地址后,由于被监测函数的返回地址所对应的指令已经替换回上述返回指令,此时,可以根据返回指令,可以跳出被监测函数。
从步骤403-407中,可以看出,本申请实施例中,具体通过替换被监测函数的入口指令以及返回指令,最终达到将被监测函数执行前进程的运行空间的内容保存至第一临时空间,以及将被监测函数执行后进程的运行空间的内容保存至第二临时空间的目的。然而,需要说明的是,上述步骤403至407中描述的只是本申请中的一个优选方式,除此之外,还可以有其他设置第一trap指令以及第二trap指令的方式,只要使得最终达到将被监测函数执行前进程的运行空间的内容保存至第一临时空间,以及将被监测函数执行后进程的运行空间的内容保存至第二临时空间的目的即可,具体此处不做限定。例如:
可以将在被监测函数入口地址对应的指令的上一条指令替换为第一trap指令,将被监测函数返回地址对应的指令的下一条指令替换为第二trap指令。
408、根据第一临时空间确定被监测函数执行前进程的运行空间的内容。
当将监测函数执行前的运行空间保存至第一临时空间后,可以根据第一临时空间确定被监测函数执行前进程的运行空间的内容。
409、根据第二临时空间确定被监测函数执行后进程的运行空间的内容。
当将被监测函数执行后的运行空间内容保存至第二临时空间后,可以根据第二临时空间确定所述被监测函数执行后进程的运行空间的内容。
需要说明的是,步骤408在步骤404之后即可执行,步骤409在步骤406之后即可执行,具体此处不做限定。
410、判断被监测函数执行前进程的运行空间的内容与执行后的进程的运行空间的内容是否一致,则确定所述被监测函数破坏所述进程运行空间。
本实施例中,当根据第一临时空间确定了被监测函数执行前的运行空间内容,以及根据第二临时空间确定了被监测函数执行后的运行空间内容后,判断被监测函数执行前进程的运行空间的内容与执行后的进程的运行空间的内容是否一致,即第一临时空间以及第二临时空间中,保存的栈空间和污染寄存器组值的是否变化,若二者任意一种发生变化,则确定所述被监测函数破坏所述进程运行空间。
若判断被监测函数执行前的运行空间内容与执行后的运行空间内容一致,则确定被监测函数未破坏进程运行空间,此时则选取进程中另一函数作为被监测函数进行监测,具体此处不再赘述。
相较于现有技术,从以上技术方案可以看出,本申请实施例中,确定被监测函数,被监测函数为计算机设备中,进程运行过程中被调用的函数;获得计算机设备中的处理器执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;判断执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容是否一致,若不一致,则确定被监测函数破坏进程运行空间。即本申请中可以及时监测到进程中直接引起进程的运行空间被破坏的具体函数,可以及时监测进程的运行空间是否被破坏。
可选地,当确定被监测函数破坏了进程运行空间之后,还可以包括以下步骤:
411、判断被监测函数是否为可重入函数,若否,执行步骤412;若是,则执行步骤413至步骤416。
其中,为了便于理解,先对可重入函数以及不可重入函数做个简单的介绍:
可重入函数主要用于多进程环境中,一个可重入函数是指一个可以被多个进程调用的函数,进程在调用时不必担心数据是否会出错。不可重入函数为使用了一些操作系统资源,比如全局变量区,中断向量表等,不同进程调用这个函数时可能修改其他进程用到的数据,从而导致不可预料的后果。
可重入函数具有以下5个特点:
1、不能含有静态(全局)非常量数据。
2、不能返回静态(全局)非常量数据的地址。
3、只能处理由调用者提供的数据。
4、不能依赖于单实例模式资源的锁。
5、不能调用不可重入的函数。
现有的开源工具可以依据一个函数是否符合以上5个特点来判别是否为可重入函数,若均符合则为可重入函数,若有至少一个特点不符合,则为不可重入函数。
在本实施例中当确定被监测函数破坏了进程的运行空间后,判断被监测函数是否为可重入函数,若否,执行步骤412:若是,则执行步骤413至步骤416。
412、生成第一警告信息,并向计算机设备所处网络中的监控中心服务器发送所述第一警告信息。
本实施例中,当判断被监测函数为不可重入函数后,则直接生成第一警告信息,并向计算机设备所处网络中的监控中心服务器发送所述第一警告信息,其中,该第一警告信息用于指示被监测函数破坏了进程运行空间。
需要说明的是,文中所描述的监控中心服务器是指信息监控中心的服务器,监控人员通过监控中心服务器发出的警告信息来得到进程的监控状态。
本申请实施例中,当确定被监测函数破坏进程运行空间,生成第一警告信息,再将第一警告信息发送给监控中心服务器,可以及时监测到进程中直接引起栈空间错误的具体函数,以缩短后续对操作系统故障恢复的时间。
413、创建临时进程。
本实施例中,若判断被监测函数为可重入函数,则创建临时进程,其中,临时进程的入口地址为所述第一临时空间的入口地址,将被监测函数作为临时进程的入口函数,并配置第一临时空间为页对齐,并配置页为只读属性。
414、执行临时进程使得触发TLB异常。
本领域技术人员可以清楚的知道,经过步骤413中对临时进程的配置后,临时进程以第一临时空间作为自己的栈空间,以被监测函数作为入口函数,由于被监测函数经过前述步骤已经确定为破坏运行空间的函数,且第一临时空间配置为页只读属性,当执行该临时进程时,本领域技术人员可以知道,此时会触发TLB异常。
415、根据TLB异常确定触发TLB异常的指令地址。
当触发TLB异常后,根据该TLB异常确定出触发该TLB异常的指令地址,即触发异常的地址。
416、根据指令地址生成第二警告信息,并向计算机设备所处网络中的监控中心服务器发送第二警告信息。
本实施例中,当确定了触发TLB异常的指令地址后,可以根据该指令地址生成第二警告信息,并向所述计算机设备所处网络中的监控中心服务器发送所述第二警告信息,其中第二警告信息用于指示被监测函数的指令地址破坏进程运行空间。
即通过本实施例,确定了触发TLB异常的指令地址后,生成第二警告信息并上报至监控中心服务器,使得后续进行计算机设备的操作系统恢复处理时,可以准确的定位出导致进程的运行空间被破坏的具体指令,可以缩短后续对计算机设备操作系统故障恢复的时间。
上面对本申请中一种监测计算机设备中的进程的运行空间的方法进行了描述,下面对本申请中一种监测计算机设备中的进程的运行空间的装置进行描述。
请参阅图6,图6为本申请一种监测计算机设备中的进程的运行空间的装置的一个结构示意图,该装置包括第一确定模块601、获得模块602、判断模块603以及第二确定模块604。
其中,第一确定模块601用于确定被监测函数,被监测函数为进程运行过程中被调用的函数;获得模块602用于获得计算机设备中的处理器执行第一确定模块601确定的被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容;判断模块603用于判断获得模块602获得的执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容是否一致;第二确定模块604用于若判断模块603判断执行被监测函数前进程的运行空间的内容与执行被监测函数后进程的运行空间的内容不一致,则确定被监测函数破坏进程的运行空间。
其中,进程的运行空间的内容包括被监测函数的栈空间的内容和/或寄存器组的内容,寄存器组包括被监测函数执行时所用到的所有寄存器。
结合上述实施例,,第一确定模块601包括确定单元6011以及选取单元6012。其中,确定单元6011用于确定进程的函数调用轨迹;选取单元6012用于按照确定单元确定的函数调用轨迹依次选取函数作为被监测函数。
结合上述实施例,获得模块602包括替换单元6021、记录单元6022、保存单元6023以及获得单元6024。其中,替换单元6021用于将被监测函数的入口指令替换为第一trap指令,将被监测函数的返回指令替换为第二trap指令;记录单元6022用于记录入口指令以及入口指令对应的入口地址,记录返回指令以及返回指令对应的返回地址;保存单元6023用于当处理器执行到第一trap指令时,将当前进程的运行空间的内容保存至第一临时空间,当处理器执行到第二trap指令时,将当前进程的运行空间的内容保存至第二临时空间;替换单元6021还用于当处理器执行到第一trap指令时,保存单元6023将当前进程的运行空间的内容保存至第一临时空间后,将第一trap指令替换回入口指令,并执行第一eret指令跳回入口地址;当处理器执行到第二trap指令时,保存单元6023将当前进程的运行空间的内容保存至第二临时空间后,将第二trap指令替换回返回指令,并执行第二eret指令跳回返回地址;获得单元6024用于根据第一临时空间获得处理器执行被监测函数前进程的运行空间的内容,根据第二临时空间获得处理器执行被监测函数后进程的运行空间的内容。
结合上述实施例,第二确定模块604确定被监测函数破坏进程运行空间之后,判断模块603还用于判断被监测函数是否为可重入函数;该装置还包括生成模块605以及发送模块606。其中,生成模块605用于若判断模块603判断被监测函数为不可重入函数,则生成第一警告信息,第一警告信息用于指示被监测函数破坏进程的运行空间;发送模块606用于向计算机设备所处网络中的监控中心服务器发送第一警告信息。即当确定被监测函数破坏进程运行空间,生成第一警告信息,再将第一警告信息发送给监控中心服务器,可以及时监测到进程中直接引起栈空间错误的具体函数,以缩短后续对操作系统故障恢复的时间。
结合上述实施例,装置还包括创建模块607、执行模块608以及第三确定模块609。
创建模块607用于若判断模块603判断被监测函数为可重入函数,则创建临时进程,临时进程的入口地址为第一临时空间的入口地址,临时进程的入口函数为被监测函数,第一临时空间的页对齐,页为只读属性;执行模块608用于执行创建模块创建的临时进程使得触发TLB异常;第三确定模块609用于根据执行模块执行后触发的TLB异常确定触发TLB异常的指令地址;生成模块605还用于当第三确定模块609根据TLB异常确定触发TLB异常的指令地址之后,根据指令地址生成第二警告信息,第二警告信息用于指示被监测函数的指令地址破坏进程的运行空间;发送模块606还用于向计算机设备所处网络中的监控中心服务器发送第二警告信息。
即通过本实施例,确定了触发TLB异常的指令地址后,生成第二警告信息并上报至监控中心服务器,使得后续进行计算机设备的操作系统恢复处理时,可以准确的定位出导致进程的运行空间被破坏的具体指令,可以缩短后续对计算机设备操作系统故障恢复的时间。
需要说明的是,上述装置实施例中,各个模块的行为或者功能更多的细节可以参阅前述方法实施例中的描述,具体这里不再赘述。
前面对本申请中一种监测计算机设备中进程的运行空间的方法以及装置进行了描述,下面对本申请中的计算机设备进行描述:
请参阅图7,图7为本申请一种操作系统平台一个结构示意图,包括处理器701、存储器702、以及总线703,其中,处理器701、存储器702分别通过总线703连接;
其中,处理器701可以是中央处理器(central processing unit,CPU),网络处理器(networkprocessor,NP)或者CPU和NP的组合。处理器还可以进一步包括硬件芯片,具体可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器(programmable logic device,PLD)或其组合。另外PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合,在本申请中不做任何限定。
存储器702可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
总线703可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线还可以分为地址总线、数据总线、控制总线等。为便于表示,图7仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,所述存储器702可以用于存储执行本方法中的操作系统704、程序代码705以及上述方法实施例中涉及到的数据或者信息等,例如所述数据可以包括处理器701执行被监测函数前以及执行后的进程的运行空间的内容等,所述处理器701执行上述方法实施例中的步骤,使得最终计算机设备可以实现本申请中监测进程的运行空间的方法。
需要说明的是,计算机设备还可以包括电源706、通信接口707。需要说明的是,图7中示出的搭载操作系统704的计算机设备的结构示意图并不对本申请中的计算机设备构成限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不一一赘述。
本申请实施例中由计算机设备所执行的步骤,具体可以参考前述方法实施例中的对应过程,在此也不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,模块和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (11)

1.一种监测计算机设备中的进程的运行空间的方法,应用于所述计算机设备中的操作系统,其特征在于,包括:
确定被监测函数,所述被监测函数为所述进程运行过程中被调用的函数;
获得所述计算机设备中的处理器执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容;
判断执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容是否一致,若不一致,则确定所述被监测函数破坏所述进程的运行空间;
所述确定所述被监测函数破坏所述进程运行空间之后,所述方法还包括:
判断所述被监测函数是否为可重入函数;
若判断所述被监测函数为不可重入函数,则生成第一警告信息,并向所述计算机设备所处网络中的监控中心服务器发送所述第一警告信息,所述第一警告信息用于指示所述被监测函数破坏所述进程的运行空间。
2.根据权利要求1所述的方法,其特征在于,所述进程的运行空间的内容包括所述被监测函数的栈空间的内容和/或寄存器组的内容,所述寄存器组包括所述被监测函数执行时所用到的所有寄存器。
3.根据权利要求2所述的方法,其特征在于,所述确定被监测函数包括:
确定所述进程的函数调用轨迹;
按照所述函数调用轨迹依次选取函数作为所述被监测函数。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述获得所述计算机设备中的处理器执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容,包括:
将所述被监测函数的入口指令替换为第一trap指令,并记录所述入口指令以及所述入口指令对应的入口地址;
将所述被监测函数的返回指令替换为第二trap指令,并记录所述返回指令以及所述返回指令对应的返回地址;
当所述处理器执行到所述第一trap指令时,将当前所述进程的运行空间的内容保存至第一临时空间,将所述第一trap指令替换回所述入口指令,并执行第一异常返回eret指令跳回所述入口地址;
当所述处理器执行到所述第二trap指令时,将当前所述进程的运行空间的内容保存至第二临时空间,将所述第二trap指令替换回所述返回指令,并执行第二eret指令跳回所述返回地址;
根据所述第一临时空间获得所述处理器执行所述被监测函数前所述进程的运行空间的内容,根据所述第二临时空间获得所述处理器执行所述被监测函数后所述进程的运行空间的内容。
5.根据权利要求4所述的方法,其特征在于,
若判断所述被监测函数为可重入函数,则创建临时进程,所述临时进程的入口地址为所述第一临时空间的入口地址,所述临时进程的入口函数为所述被监测函数,所述第一临时空间的页对齐,所述页为只读属性;
执行所述临时进程使得触发TLB异常;
根据所述TLB异常确定触发所述TLB异常的指令地址;
根据所述指令地址生成第二警告信息,并向所述计算机设备所处网络中的监控中心服务器发送所述第二警告信息,所述第二警告信息用于指示所述被监测函数的所述指令地址破坏所述进程的运行空间。
6.一种监测计算机设备中的进程的运行空间的装置,应用于所述计算机设备中的操作系统,其特征在于,包括:
第一确定模块,用于确定被监测函数,所述被监测函数为所述进程运行过程中被调用的函数;
获得模块,用于获得所述计算机设备中的处理器执行所述第一确定模块确定的所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容;
判断模块,用于判断所述获得模块获得的执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容是否一致;
第二确定模块,用于若所述判断模块判断执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容不一致,则确定所述被监测函数破坏所述进程的运行空间;
所述第二确定模块确定所述被监测函数破坏所述进程运行空间之后,所述判断模块还用于:
判断所述被监测函数是否为可重入函数;
所述装置还包括:
生成模块,用于若所述判断模块判断所述被监测函数为不可重入函数,则生成第一警告信息,所述第一警告信息用于指示所述被监测函数破坏所述进程的运行空间;
发送模块,用于向所述计算机设备所处网络中的监控中心服务器发送所述第一警告信息。
7.根据权利要求6所述的装置,其特征在于,所述进程的运行空间的内容包括所述被监测函数的栈空间的内容和/或寄存器组的内容,所述寄存器组包括所述被监测函数执行时所用到的所有寄存器。
8.根据权利要求7所述的装置,其特征在于,所述第一确定模块包括:
确定单元,用于确定所述进程的函数调用轨迹;
选取单元,用于按照所述确定单元确定的所述函数调用轨迹依次选取函数作为所述被监测函数。
9.根据权利要求6至8中任一项所述的装置,所述获得模块包括:
替换单元,用于将所述被监测函数的入口指令替换为第一trap指令,将所述被监测函数的返回指令替换为第二trap指令;
记录单元,用于记录所述入口指令以及所述入口指令对应的入口地址,记录所述返回指令以及所述返回指令对应的返回地址;
保存单元,用于当所述处理器执行到所述第一trap指令时,将当前所述进程的运行空间的内容保存至第一临时空间,当所述处理器执行到所述第二trap指令时,将当前所述进程的运行空间的内容保存至第二临时空间;
所述替换单元,还用于当所述处理器执行到所述第一trap指令时,所述保存单元将当前所述进程的运行空间的内容保存至所述第一临时空间后,将所述第一trap指令替换回所述入口指令,并执行第一异常返回eret指令跳回所述入口地址;当所述处理器执行到所述第二trap指令时,所述保存单元将当前所述进程的运行空间的内容保存至所述第二临时空间后,将所述第二trap指令替换回所述返回指令,并执行第二eret指令跳回所述返回地址;
获得单元,用于根据所述第一临时空间获得所述处理器执行所述被监测函数前所述进程的运行空间的内容,根据所述第二临时空间获得所述处理器执行所述被监测函数后所述进程的运行空间的内容。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
创建模块,用于若所述判断模块判断所述被监测函数为可重入函数,则创建临时进程,所述临时进程的入口地址为所述第一临时空间的入口地址,所述临时进程的入口函数为所述被监测函数,所述第一临时空间的页对齐,所述页为只读属性;
执行模块,用于执行所述创建模块创建的所述临时进程使得触发TLB异常;
第三确定模块,用于根据所述执行模块执行后触发的所述TLB异常确定触发所述TLB异常的指令地址;
所述生成模块,还用于当所述第三确定模块根据所述TLB异常确定触发所述TLB异常的指令地址之后,根据所述指令地址生成第二警告信息,所述第二警告信息用于指示所述被监测函数的所述指令地址破坏所述进程的运行空间;
所述发送模块,还用于向所述计算机设备所处网络中的监控中心服务器发送所述第二警告信息。
11.一种计算机设备,其特征在于,包括:
处理器、存储器以及总线;
其中,所述处理器、存储器通过所述总线连接;
所述处理器,用于确定被监测函数,所述被监测函数为进程运行过程中被调用的函数;
执行所述被监测函数;
获得执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容;
判断执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容是否一致,若不一致,则确定所述被监测函数破坏所述进程的运行空间;
所述存储器,用于存储执行所述被监测函数前所述进程的运行空间的内容与执行所述被监测函数后所述进程的运行空间的内容;
所述处理器,还用于确定所述被监测函数破坏所述进程运行空间之后,
判断所述被监测函数是否为可重入函数;
若判断所述被监测函数为不可重入函数,则生成第一警告信息,所述第一警告信息用于指示所述被监测函数破坏所述进程的运行空间;
向所述计算机设备所处网络中的监控中心服务器发送所述第一警告信息。
CN201610825243.8A 2016-09-14 2016-09-14 监测计算机设备中的进程的运行空间的方法以及装置 Active CN107818034B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610825243.8A CN107818034B (zh) 2016-09-14 2016-09-14 监测计算机设备中的进程的运行空间的方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610825243.8A CN107818034B (zh) 2016-09-14 2016-09-14 监测计算机设备中的进程的运行空间的方法以及装置

Publications (2)

Publication Number Publication Date
CN107818034A CN107818034A (zh) 2018-03-20
CN107818034B true CN107818034B (zh) 2021-02-12

Family

ID=61600966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610825243.8A Active CN107818034B (zh) 2016-09-14 2016-09-14 监测计算机设备中的进程的运行空间的方法以及装置

Country Status (1)

Country Link
CN (1) CN107818034B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110874279B (zh) * 2018-08-29 2023-05-30 阿里巴巴集团控股有限公司 故障定位方法、装置和系统
CN110955546B (zh) * 2018-09-26 2023-03-21 迈普通信技术股份有限公司 一种内存地址监控方法、装置及电子设备
CN115017058B (zh) * 2022-08-04 2022-11-29 飞腾信息技术有限公司 一种内核模块的测试方法、装置、电子设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63184848A (ja) * 1987-01-27 1988-07-30 Nec Corp マイクロプロセツサ
KR20070041800A (ko) * 2005-10-17 2007-04-20 이종일 응용프로그램의 실행 코드 영역 수정을 통한 응용프로그램제어 방법
CN101281488A (zh) * 2007-04-06 2008-10-08 上海宇梦通信科技有限公司 Linux操作系统的内核调试方法
CN101436957A (zh) * 2007-11-13 2009-05-20 北京摩软科技有限公司 一种应用于移动终端的截获执行信息的方法和装置
CN102779030A (zh) * 2011-05-11 2012-11-14 奇智软件(北京)有限公司 一种注册表操作的执行方法及装置
CN102902559A (zh) * 2012-09-12 2013-01-30 成都四为电子信息股份有限公司 一种监视串口通信数据的方法
CN103106132A (zh) * 2013-03-05 2013-05-15 中标软件有限公司 Linux系统崩溃时内核函数调用栈分析调试方法
CN103559123A (zh) * 2013-10-24 2014-02-05 烽火通信科技股份有限公司 基于VxWorks操作系统的函数调用栈分析方法及装置
CN104252402A (zh) * 2014-09-05 2014-12-31 深圳创维数字技术有限公司 一种程序调试方法及装置
CN104679645A (zh) * 2013-11-28 2015-06-03 中国航空工业集团公司航空动力控制系统研究所 一种栈空间余量实时检测方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63184848A (ja) * 1987-01-27 1988-07-30 Nec Corp マイクロプロセツサ
KR20070041800A (ko) * 2005-10-17 2007-04-20 이종일 응용프로그램의 실행 코드 영역 수정을 통한 응용프로그램제어 방법
CN101281488A (zh) * 2007-04-06 2008-10-08 上海宇梦通信科技有限公司 Linux操作系统的内核调试方法
CN101436957A (zh) * 2007-11-13 2009-05-20 北京摩软科技有限公司 一种应用于移动终端的截获执行信息的方法和装置
CN102779030A (zh) * 2011-05-11 2012-11-14 奇智软件(北京)有限公司 一种注册表操作的执行方法及装置
CN102902559A (zh) * 2012-09-12 2013-01-30 成都四为电子信息股份有限公司 一种监视串口通信数据的方法
CN103106132A (zh) * 2013-03-05 2013-05-15 中标软件有限公司 Linux系统崩溃时内核函数调用栈分析调试方法
CN103559123A (zh) * 2013-10-24 2014-02-05 烽火通信科技股份有限公司 基于VxWorks操作系统的函数调用栈分析方法及装置
CN104679645A (zh) * 2013-11-28 2015-06-03 中国航空工业集团公司航空动力控制系统研究所 一种栈空间余量实时检测方法
CN104252402A (zh) * 2014-09-05 2014-12-31 深圳创维数字技术有限公司 一种程序调试方法及装置

Also Published As

Publication number Publication date
CN107818034A (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
KR100938306B1 (ko) Vt-인에이블드 시스템 상에서의 타겟 에이전트 실행 패턴모니터링
CN101256503B (zh) 通过多线程主虚拟机监视器来实现多线程客户操作系统执行的方法和装置
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
US10776491B2 (en) Apparatus and method for collecting audit trail in virtual machine boot process
CN104205113B (zh) 向操作系统报告恶意活动
EP3144813A1 (en) Information-processing device, information-processing monitoring method, program, and recording medium
EP4012554B1 (en) Chip patching method and chip
CN107818034B (zh) 监测计算机设备中的进程的运行空间的方法以及装置
US10503932B2 (en) Secure mode state data access tracking
CN105404559B (zh) 在数据处理装置中进行除错
CN107491373A (zh) 一种任务栈溢出监测方法及系统
CN111936972A (zh) 事务中的异常处理
US20220366036A1 (en) An apparatus and method for handling exceptions
EP3063692B1 (en) Virtual machine introspection
CN105224403A (zh) 一种中断处理方法及装置
CN117170806A (zh) 虚拟机运行稳定性增强的方法、装置、电子设备及介质
US20160292108A1 (en) Information processing device, control program for information processing device, and control method for information processing device
CN116776394A (zh) 一种设备安全防护方法、系统、设备及介质
US20180226136A1 (en) System management mode test operations
CN115576734A (zh) 一种多核异构日志存储方法和系统
CN109388948B (zh) 一种基于虚拟化技术的潜在恶意软件分析方法及相关装置
CN111221628A (zh) 虚拟化平台上对虚拟机文件的安全检测方法及装置
CN116483612B (zh) 内存故障处理方法、装置、计算机设备和存储介质
KR20190059955A (ko) 작업 메모리 보호 방법 및 그 장치
CN115114006A (zh) 单片机应用程序中断触发现场保护方法及装置

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