CN109144760B - 用于获取内存状态的方法、装置、系统及介质 - Google Patents

用于获取内存状态的方法、装置、系统及介质 Download PDF

Info

Publication number
CN109144760B
CN109144760B CN201810704405.1A CN201810704405A CN109144760B CN 109144760 B CN109144760 B CN 109144760B CN 201810704405 A CN201810704405 A CN 201810704405A CN 109144760 B CN109144760 B CN 109144760B
Authority
CN
China
Prior art keywords
access
memory pages
processor
original
memory
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
CN201810704405.1A
Other languages
English (en)
Other versions
CN109144760A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN201810704405.1A priority Critical patent/CN109144760B/zh
Publication of CN109144760A publication Critical patent/CN109144760A/zh
Application granted granted Critical
Publication of CN109144760B publication Critical patent/CN109144760B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种用于获取内存状态的方法。所述方法包括:在目标运行过程的起点处,暂停处理器的程序执行,备份所述处理器对内存页面的原始访问权限,并将所述内存页面的访问权限设置为无权访问;恢复所述处理器的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面;以及在所述目标运行过程的终点处,根据所述异常处理程序的信息拷贝对应的最终内存页面。本发明还提供了一种用于获取内存状态的装置、系统及介质。本发明实施例能够降低存储成本。

Description

用于获取内存状态的方法、装置、系统及介质
技术领域
本发明涉及处理器安全检测领域,更具体地,涉及一种用于获取内存状态的方法、装置、系统及介质。
背景技术
随着网络信息化等新技术的大规模应用,信息安全成为日益严峻的问题。通常我们讨论的信息安全都局限于网络安全、软件安全等方面,但是随着近年来研究表明,硬件安全也应受到关注。硬件设计的规模随着硬件设计水平的提升日渐提升,使得硬件木马成为可能:当前以CPU(处理器)为代表的大规模电路中用到的硬件IP(知识产权)的来源多样化,硬件设计的流程复杂化,设计制造流程分工细化等因素造成了硬件最终产品的安全可控性下降。在设计中被注入恶意木马或者漏洞(下文简称木马)的可能性增加,同时硬件规模的增加也增加了木马被识别和发现的困难。近年来,随着信息安全概念的发展,硬件的安全性逐渐成为信息安全的研究热点。在硬件安全检测的过程中,访存操作的安全性是安全检测的重点之一。
发明内容
在对处理器进行安全性检测时,可以实现为对处理器在某一阶段的运行过程(即,目标运行过程)的安全性检测。在基于重放执行的处理器安全检测过程中,目标运行过程中内存的初始状态与终止状态是安全检测的重要指标之一。
本发明的一个方面提供了一种用于获取内存状态的方法。所述方法包括:在目标运行过程的起点处,暂停处理器的程序执行,备份所述处理器对内存页面的原始访问权限,并将所述内存页面的访问权限设置为无权访问;恢复所述处理器的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面;以及在所述目标运行过程的终点处,根据所述异常处理程序的信息拷贝对应的最终内存页面。
可选地,在所述恢复本次访问的内存页面的原始访问权限之前,还包括:确定在所述目标运行过程中所述处理器是否访问过本次访问的内存页面;当已经访问过本次访问的内存页面时,返回程序执行点继续执行所述异常处理程序;或者当未访问过本次访问的内存页面时,再执行所述恢复本次访问的内存页面的原始访问权限。
可选地,在所述备份本次访问的原始内存页面之后,还包括返回程序执行点重新执行本次访问操作。
可选地,所述将所述内存页面的访问权限设置为无权访问,包括将内存页表中各页表项的访问权限设为无权访问。可选地,当所述处理器具有转换后备缓冲区时,所述将所述内存页面的访问权限设置为无权访问,还包括将所述转换后备缓冲区中的全部页表项标记为无效。
本发明的另一方面还提供了一种用于获取内存状态的装置。所述装置包括原始访问权限备份模块、程序恢复模块、以及最终内存页面拷贝模块。原始访问权限备份模块用于在目标运行过程的起点处,暂停处理器的程序执行,备份所述处理器对内存页面的原始访问权限,并将所述内存页面的访问权限设置为无权访问。程序恢复模块用于恢复所述处理器的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面。最终内存页面拷贝模块用于在所述目标运行过程的终点处,根据所述异常处理程序的信息拷贝对应的最终内存页面。
可选地,所述程序恢复模块具体包括包括访问记录确定子模块、程序返回子模块和恢复访问子模块。访问记录确定子模块用于在所述恢复本次访问的内存页面的原始访问权限之前,确定在所述目标运行过程中所述处理器是否访问过本次访问的内存页面。程序返回子模块用于当已经访问过本次访问的内存页面时,返回程序执行点继续执行所述异常处理程序。恢复访问子模块用于当未访问过本次访问的内存页面时,再执行所述恢复本次访问的内存页面的原始访问权限。
可选地,所述装置还包括重新执行本次访问模块。重新执行本次访问模块用于在所述备份本次访问的原始内存页面之后,返回程序执行点重新执行本次访问操作。
可选地,所述将所述内存页面的访问权限设置为无权访问,包括将内存页表中各页表项的访问权限设为无权访问。可选地,当所述处理器具有转换后备缓冲区时,所述将所述内存页面的访问权限设置为无权访问,还包括将所述转换后备缓冲区中的全部页表项标记为无效。
本发明的另一方面还提供了一种用于获取内存状态的系统。所述系统包括存储器,以及耦接至所述存储器的检测处理器。所述检测处理器被配置为基于存储在所述存储器中的指令,执行根据本发明实施例的用于获取内存状态的方法。
本发明的另一方面还提供了一种非易失性存储介质,存储有计算机可执行指令。所述指令在被执行时用于实现根据本发明实施例的用于获取内存状态的方法。
本发明的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的用于获取内存状态的方法。
附图说明
为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本发明实施例的用于获取内存状态的方法、装置、系统和介质的应用场景;
图2示意性示出了分页存储管理系统中用户程序访问内存的原理;
图3示意性示出了根据本发明实施例的用于获取内存状态的方法的流程图;
图4示意性示出了根据本发明另一实施例的用于获取内存状态的方法的流程图;
图5示意性示出了根据本发明实施例的图3或图4中操作S320的方法的流程图;
图6示意性示出了根据本发明实施例的用于获取内存状态的方法的一个应用实例;
图7示意性示出了根据本发明实施例的用于获取内存状态的装置的框图;以及
图8示意性示出了根据本发明实施例的用于获取内存状态的计算系统的框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本发明的实施例提供一种用于获取内存状态的方法、装置、系统及介质。该方法包括:在目标运行过程的起点处,暂停处理器的程序执行,备份该处理器对内存页面的原始访问权限,并将该内存页面的访问权限设置为无权访问;恢复该处理器的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面;以及在该目标运行过程的终点处,根据该异常处理程序的信息拷贝对应的最终内存页面。根据本发明实施例的技术方案,能够针对性地获取处理器在目标运行过程中所访问的内存的初始状态和终止状态。因而,避免了备份内存的全部页表及页面,节省了存储空间,降低了存储成本。
图1示意性示出了根据本发明实施例的用于获取内存状态的方法、装置、系统和介质的应用场景100。需要注意的是,图1所示仅为可以应用本发明实施例的应用场景的示例,以帮助本领域技术人员理解本发明的技术内容,但并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。
如图1所示,该应用场景100包括处理器101、内存102、外设103、以及检测处理器104。
处理器101在目标运行过程中与内存102和/或外设103进行数据的输入输出。该目标运行过程可以是处理器101从开机到关机的整个运行过程中的一个阶段,例如,可以将处理器101的整个运行过程划分为多个运行区间对应的多个目标运行过程。
在基于重放执行的处理器安全检测过程中,检测处理器104以处理器101在一个目标运行过程中的输入信息作为输入信息,根据处理器101在该目标运行过程中的初始运行状态信息设置检测处理器104的初始运行状态,以符合预定义行为的方式执行该目标运行过程的任务,得到检测处理器104在该目标运行过程中的输出信息和/或该目标运行过程的终止运行状态信息,然后根据检测处理器104的输出信息和/或终止状态信息来判断处理器101在该目标运行过程中是否安全。其中,预定义行为是处理器的硬件行为标准。
在基于重放执行的处理器安全检测过程中,目标运行过程中内存102的初始状态与终止状态是安全检测的重要指标之一。
在现有技术中,为获得目标运行过程中内存102的初始状态和终止状态,一种最简单的方法是在目标运行过程的起点处拷贝整个内存102,并在目标运行过程的终点处时再拷贝整个内存102,进而获得内存102的初始状态与终止状态。但是,这种方法效率很低,而且占用很多资源。另一种获得内存102状态的方法是在处理器101与内存102之间设置一个记录装置。该记录装置可以用于记录处理器101对内存102之间的所有读写操作。然后,逐条读取并分析记录装置中记录的读写操作信息,从而生成一个目标运行过程中的内存102的初始状态和终止状态。然而,这种方法需要改变已有的处理器101与内存102之间的连接关系,并增设一个记录装置,技术复杂度高且成本高
发明人在实现本发明的构思的过程中发现,可以利用存储器的分页存储管理机制来获取目标运行过程中处理器101对内存102访问记录。在处理器101的实际工作过程中,一段时间内通常仅仅访问几个内存页面,因而在获取目标运行过程获取中内存102的状态时,可以仅备份被处理器访问的内存页面,而不备份内存102的全部页面,这样可以极大地节省存储空间,进而降低存储成本。以下结合图2对分页存储管理系统的工作原理进行简单介绍。
图2示意性示出了分页存储管理系统中用户程序访问内存102的原理。
如图2所示,在分页存储管理系统中,首先处理器101在运行用户程序的过程中产生逻辑地址,然后在页表中根据页号与块号的对应关系完成该逻辑地址到物理地址的地址映射,之后再根据该物理地址访问内存。其中,图2示意的页表中的页号指的是逻辑地址所在的页面的标识信息,块号是内存中物理地址的标识信息。
物理地址为内存102所使用的地址,逻辑地址是处理器运行用户程序生成的地址。用户程序无法直接使用物理地址。处理器101运行用户程序时产生的是逻辑地址,需要通过逻辑地址与物理地址的地址映射之后才能访问内存102。地址映射是将用户程序使用的逻辑地址变换成内存102中的物理地址的过程。例如,用户程序使用逻辑地址空间为0到max,而其对应的物理地址范围实际上可以是从R+0到R+max,其中R为基地址,max为页面的大小。
在分页存储管理系统将逻辑地址划分为一系列同等大小的部分,称为页面。在分页存储管理系统中,页面的存放可以是连续的,也可以是不连续的,这增加了逻辑地址到物理地址的转换难度。为此,操作系统为每个进程创建了页表,通过页表来记录逻辑地址到物理地址的地址映射关系。页表是一种特殊的数据结构,放在操作系统空间的页表区,其中存放有逻辑地址与物理地址的映射关系。
具体而言,每个进程的逻辑地址空间中的每一个页面依次对应于页表中的一个表项。该表项记录了该页面对应的物理地址。处理器生成的逻辑地址可以包括p(页号)和d(页偏移)。其中,p(页号),包含每个页在物理内存中的基址,用来作为页表的索引;d(页偏移),同基址相结合,用来确定送入内存102的物理地址。此外,页表除了用于实现逻辑地址与物理地址的地址映射外,页表还可以用于管理处理器101对各个页面的访问权限,例如是否可读和/或可写。
根据本发明的实施例,该用于获取内存状态的方法可以应用于检测处理器104。相应地,该用于获取内存状态的装置、介质或系统可以设置于检测处理器104中。
图3示意性示出了根据本发明实施例的用于获取内存状态的方法的流程图。如图3所示,根据本发明的实施例,该用于获取内存状态的方法包括操作S310~操作S330。
在操作S310,在目标运行过程的起点处,暂停处理器101的程序执行,备份该处理器101对内存页面的原始访问权限,并将该内存页面的访问权限设置为无权访问。
根据本发明的实施例,为了获取目标运行过程内处理器101对内存102的访问记录,在目标运行过程的起点处需要将内存页面的访问权限修改为无权访问(即,不可读也不可写)。在这种情况下,当恢复处理器101的程序执行后,处理器101访问内存102时会由于没有访问权限而进入异常处理程序。
在一个实施例中,在目标运行过程的起点处,可以将页表备份一下,以便获得该页表对应的内存页面的原始访问权限。在另一实施例中,在目标运行过程的起点处,可以只记录所要修改的内存页面的的原始访问权限,而不再备份对应的所有页表。
在一个实施例中,将内存页面的访问权限设置为无权访问时,可以将“异常处理程序”访问的内存页面之外的所有内存页面的访问权限修改为不可访问。在另一实施例中,将内存页面的访问权限设置为无权访问时,可以将虚拟环境下虚拟机(例如,guest程序)能访问的所有内存页面的访问权限修改为不可访问。
根据本发明的实施例,将该内存页面的访问权限设置为无权访问,包括将内存102页表中各页表项的访问权限设为无权访问。
根据本发明的另一实施例,当该处理器101具有转换后备缓冲区时,将该内存页面的访问权限设置为无权访问,还包括将该转换后备缓冲区中的全部页表项标记为无效。
在一个实施例中,对于包含转换后备缓冲区(TLB,Translation LookasideBuffer)结构的处理器101,由于TLB内存储的地址转换关系不可修改,为了能获取处理器101在目标运行过程中完整的访问记录,可以在目标运行过程起点处将TLB中的全部页表项标记为无效。而在ARM系统中,全部页表直接存储于TLB中不需要通过内存管理单元(MMU,Memory Management Unit)完成地址映射,所以上述“将该内存页面的访问权限设置为无权访问”,等同于将TLB中的所有页表标记为无效。
在操作S320,恢复处理器101的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面。
在处理器101恢复程序执行,并试图访问内存102时,由于此时对内存102没有访问权限,处理器101将会进入异常处理程序。此时,可以记录本次异常处理程序的信息,例如可以包括处理器101本次访问的地址和访问类型(读或写)。
之后,恢复本次访问的内存页面的原始访问权限。若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面。
在操作S330,在该目标运行过程的终点处,根据该异常处理程序的信息拷贝对应的最终内存页面。
根据本发明的实施例,利用存储器分页存储管理机制,在处理器101运行目标运行过程的起点处,将内存页面设置为无权访问。这样在处理器101恢复运行时,迫使处理器101进入异常处理程序中,以记录本次异常处理程序的信息。然后,根据记录的本次异常处理程序的信息可以针对性地确定出处理器101本次访问的内存页面。此时,获取到该内存页面的初始状态。之后,处理器101可以按照恢复后的原始访问权限对该内存页面进行访问。并且当处理器101再次访问已经访问过的内存页面时,可以按照该内存页面的原始访问权限正常完成访问。另外,当处理器101需要访问新的内存页面时,会再次执行操作S320,并最终在操作S330针对性地获取处理器101在目标运行过程中访问过的内存页面和终止状态。通过这种方式,可以比较有针对性地获取处理器访问的内存页面的初始状态和终止状态,有效地节省了存储空间。
图4示意性示出了根据本发明另一实施例的用于获取内存状态的方法的流程图。
如图4所示,根据本发明实施例,该用于获取内存状态的方法除了包括操作S310~操作S330之外,还可以包括操作S320’。在本发明的一个实施例中,操作S320’可以在操作S320之后执行。
在操作S320’,返回程序执行点重新执行本次访问操作。具体地,在恢复了该处理器101的程序执行,根据异常处理程序记录了本次访问的内存页面,且恢复了本次访问的内存页面的原始访问权限之后,返回程序执行点重新执行本次访问操作,这样可以按照该内存页面的原始访问权限对该内存页面进行访问,避免了阻断处理器101的程序执行。
此后,当该目标运行过程达到终点时,在操作S330中根据异常处理程序的信息拷贝对应的内存页面,从而针对性地获取被访问的内存页面在该目标运行过程的终点处的存储状态。
根据本发明的实施例,在获取目标运行过程中内存102的状态时,可以仅备份被处理器101访问的内存102的页表及页面,而不需要备份内存102的全部页表及页面,这样可以极大地节省存储空间,进而降低存储成本。
图5示意性示出了根据本发明实施例的图3或图4中操作S320的方法的流程图。如图5所示,操作S320可以包括操作S321、操作S322、以及操作S323或操作S324。
在操作S321,恢复处理器101的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息。
在操作S332,确定在目标运行过程中处理器101是否访问过本次访问的内存页面。若是,则执行操作S323;若否,则执行操作S324。
在操作S323,当已经访问过本次访问的内存页面时,返回程序执行点继续执行该异常处理程序。
在操作S324,当未访问过本次访问的内存页面时,再执行该恢复本次访问的内存页面的原始访问权限。
根据本发明的实施例,进入异常处理程序后先判断本次访问的内存页面是否在该目标运行过程中已经被访问过。如果已经被访问过,则表明该内存页面的原始访问权限在之前已经被恢复了。如果没有被访问过,就恢复该内存页面的原始访问权限。
在操作S324,当未访问过本次访问的内存页面时,恢复本次访问的内存页面的原始访问权限,进而可以根据该原始访问权限判断处理器101对该内存页面是否具有访问权限。当原始访问权限为有权访问时,备份处理器101将要访问的内存页面,然后可以返回程序执行点,按照该原始访问权限完成处理器101对内存102的访问;当原始访问权限为无权访问时,则进入程序本身的异常处理程序。
在操作S323,当已经访问过本次访问的内存页面时,可以确定该内存页面的原始访问权限为无权访问。因而,本次的异常处理程序是用户程序原有的page fault处理程序,从而返回程序执行点继续执行本次的异常处理程序。
以下结合图6的应用实例,对根据本发明实施例的用于获取内存状态的方法进行进一步说明。
图6示意性示出了根据本发明实施例的用于获取内存状态的方法的一个应用实例。如图6所示,该应用实例大致可以包括以下步骤S1~S10。
S1,在目标运行过程的起点处,暂停处理器101的程序执行。
S2,备份全部页表中所有内存页面的原始访问权限,并将除异常处理程序以外的所有页表中的内存页面的访问权限设置为不可访问,然后恢复处理器101的程序执行。
S3,接收到处理器101对内存102的访问请求。
S4,由于各个页表中内存页面的访问权限被设置为不可访问,因而处理器101访问内存页面时会失败,从而处理器101进入异常处理程序。
S5,判断本次要访问的内存页面在该目标运行过程中是否已被访问过。若已经访问过,进入S6;若没有访问过,则进入S7。具体地,可以根据该目标运行过程中保存的异常处理程序的信息来确定本次要访问的内存页面是否已经访问过。
S6,返回程序执行点,使得处理器101执行程序原有的异常处理程序。
S7,恢复本次要访问的内存页面的原始访问权限。
S8,判断该内存页面的原始访问权限是否为有权访问。如果该内存页面的原始访问权限为有权访问,进入S9;否则进入S6;
S9,备份本次访问的原始内存页面;
S10,返回程序执行点,使得处理器101根据恢复后的原始访问权限完成内存102访问。
应理解,以上步骤S1~S10仅是实现本发明实施例的一个具体示例。在实际执行本发明实施例的过程中,根据现实情况的不同,可能仅会执行以上步骤S1~S10中的部分步骤。例如,当处理器101新接收到的访问请求中的访问地址为已经恢复原始访问权限的有权访问时,将不会执行以上步骤S4~S9。
在目标运行区间的终点处,可以将所有内存页面的访问权限恢复为原始访问权限,并根据异常处理程序的信息拷贝对应的内存页面,以获得内存的最终存储状态。
根据本发明的实施例,在目标运行过程的起点处备份处理器101对内存页面的原始访问权限。在目标运行过程中,进入异常处理程序后,先执行S5、S7、S8等,然后视进入异常处理程序的触发机制决定是否返回程序执行点并继续执行原有的异常处理程序。待目标运行区间行进至终点时,可以根据该目标运行过程中记录的异常处理程序的信息获得处理器101所访问的所有内存页面的清单,然后根据该清单在终点处拷贝对应的内存页面的最终状态。在基于重放执行的硬件安全检测过程中,使用以上在异常处理程序中备份的内存初始状态和在终点处拷贝的内存最终状态,来完成处理器101的安全检测。
图7示意性示出了根据本发明实施例的用于获取内存状态的装置700的框图。
根据本发明的实施例,该用于获取内存状态的装置700包括原始访问权限备份模块710、程序恢复模块720以及最终内存页面拷贝模块730。根据本发明的另一些实施例,该装置700还可以包括重新执行本次访问模块740。
原始访问权限备份模块710用于在目标运行过程的起点处,暂停处理器101的程序执行,备份该处理器101对内存页面的原始访问权限,并将该内存页面的访问权限设置为无权访问。根据本发明的实施例,该将该内存页面的访问权限设置为无权访问,包括将内存102页表中各页表项的访问权限设为无权访问。
根据本发明的另一些实施例,当该处理器101具有转换后备缓冲区时,该将该内存页面的访问权限设置为无权访问,还包括将该转换后备缓冲区中的全部页表项标记为无效。
程序恢复模块720用于恢复该处理器101的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面。
根据本发明的实施例,程序恢复模块720可以包括访问记录确定子模块、程序返回子模块以及恢复防问子模块。访问记录确定子模块用于在该恢复本次访问的内存页面的原始访问权限之前,确定在该目标运行过程中该处理器101是否访问过本次访问的内存页面。程序返回子模块用于当已经访问过本次访问的内存页面时,返回程序执行点继续执行该异常处理程序。恢复访问子模块用于当未访问过本次访问的内存页面时,再执行该恢复本次访问的内存页面的原始访问权限。
最终内存页面拷贝模块730用于在该目标运行过程的终点处,根据该异常处理程序的信息拷贝对应的最终内存页面。
重新执行本次访问模块740用于在该备份本次访问的原始内存页面之后,返回程序执行点重新执行本次访问操作。
根据本发明的实施例,该装置700可以用于执行根据本发明实施例的用于获取内存状态的方法。该装置700可以在运行目标运行过程的起点处,根据记录的本次异常处理程序的信息可以针对性地获取处理器101访问的内存页面的初始状态。并在目标运行过程的终点处,根据该目标运行过程中记录的异常处理程序的信息针对性地拷贝处理器101在目标运行过程中访问过的内存页面的终止状态。从而能够针对性地获得该目标运行过程中处理器101访问的内存的初始状态和终止状态。具体可以参见上面参考图3~图6的描述,这里不再重复。
根据本发明的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本发明实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,原始访问权限备份模块710、程序恢复模块720、最终内存页面拷贝模块730、重新执行本次访问模块740以及访问记录确定子模块、程序返回子模块和恢复访问子模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,原始访问权限备份模块710、程序恢复模块720、最终内存页面拷贝模块730、重新执行本次访问模块740以及访问记录确定子模块、程序返回子模块和恢复访问子模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,原始访问权限备份模块710、程序恢复模块720、最终内存页面拷贝模块730、重新执行本次访问模块740以及访问记录确定子模块、程序返回子模块和恢复访问子模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图8示意性示出了根据本发明实施例的用于获取内存状态的计算系统800的框图。图8示出的计算机系统仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,装置800包括检测处理器810、和计算机可读存储介质820。检测处理器810是检测处理器104的一种实施例。该装置800可以执行根据本发明实施例的方法。
具体地,检测处理器810例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。检测处理器810还可以包括用于缓存用途的板载存储器。检测处理器810可以是用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质820,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质820可以包括计算机程序821,该计算机程序821可以包括代码/计算机可执行指令,其在由检测处理器810执行时使得检测处理器810执行根据本发明实施例的方法或其任何变形。
计算机程序821可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序821中的代码可以包括一个或多个程序模块,例如包括821A、模块821B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被检测处理器810执行时,使得检测处理器810可以执行根据本发明实施例的方法或其任何变形。
根据本发明的实施例,原始访问权限备份模块710、程序恢复模块720、最终内存页面拷贝模块730、重新执行本次访问模块740以及访问记录确定子模块、程序返回子模块和恢复访问子模块中的至少一个可以实现为参考图8描述的计算机程序模块,其在被检测处理器810执行时,可以实现上面描述的相应操作。
本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。
根据本发明的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (12)

1.一种用于获取内存状态的方法,其特征在于,包括:
在目标运行过程的起点处,暂停处理器的程序执行,备份所述处理器对内存页面的原始访问权限,并将所述内存页面的访问权限设置为无权访问,其中,所述目标运行过程为所述处理器的一个运行过程;
恢复所述处理器的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面;
在所述目标运行过程的终点处,根据所述异常处理程序的信息拷贝对应的最终内存页面。
2.根据权利要求1所述的方法,其特征在于,在所述恢复本次访问的内存页面的原始访问权限之前,还包括:
确定在所述目标运行过程中所述处理器是否访问过本次访问的内存页面;
当已经访问过本次访问的内存页面时,返回程序执行点继续执行所述异常处理程序;
当未访问过本次访问的内存页面时,再执行所述恢复本次访问的内存页面的原始访问权限。
3.根据权利要求1所述的方法,其特征在于,在所述备份本次访问的原始内存页面之后,还包括:
返回程序执行点重新执行本次访问操作。
4.根据权利要求1所述的方法,其特征在于,所述将所述内存页面的访问权限设置为无权访问,包括:
将内存页表中各页表项的访问权限设为无权访问。
5.根据权利要求4所述的方法,其特征在于,当所述处理器具有转换后备缓冲区时,所述将所述内存页面的访问权限设置为无权访问还包括:
将所述转换后备缓冲区中的全部页表项标记为无效。
6.一种用于获取内存状态的装置,其特征在于,包括:
原始访问权限备份模块,用于在目标运行过程的起点处,暂停处理器的程序执行,备份所述处理器对内存页面的原始访问权限,并将所述内存页面的访问权限设置为无权访问,其中,所述目标运行过程为所述处理器的一个运行过程;
程序恢复模块,用于恢复所述处理器的程序执行,当因访问失败进入异常处理程序时,记录本次异常处理程序的信息,恢复本次访问的内存页面的原始访问权限,若本次访问的内存页面的原始访问权限为有权访问,备份本次访问的原始内存页面;
最终内存页面拷贝模块,用于在所述目标运行过程的终点处,根据所述异常处理程序的信息拷贝对应的最终内存页面。
7.根据权利要求6所述的装置,其特征在于,程序恢复模块包括:
访问记录确定子模块,用于在所述恢复本次访问的内存页面的原始访问权限之前,确定在所述目标运行过程中所述处理器是否访问过本次访问的内存页面;
程序返回子模块,用于当已经访问过本次访问的内存页面时,返回程序执行点继续执行所述异常处理程序;
恢复访问子模块,用于当未访问过本次访问的内存页面时,再执行所述恢复本次访问的内存页面的原始访问权限。
8.根据权利要求6所述的装置,其特征在于,还包括:
重新执行本次访问模块,用于在所述备份本次访问的原始内存页面之后,返回程序执行点重新执行本次访问操作。
9.根据权利要求6所述的装置,其特征在于,所述将所述内存页面的访问权限设置为无权访问,包括:
将内存页表中各页表项的访问权限设为无权访问。
10.根据权利要求9所述的装置,其特征在于,当所述处理器具有转换后备缓冲区时,所述将所述内存页面的访问权限设置为无权访问还包括:
将所述转换后备缓冲区中的全部页表项标记为无效。
11.一种用于获取内存状态的系统,其特征在于,包括:
存储器;以及
耦接至所述存储器的检测处理器,所述检测处理器被配置为基于存储在所述存储器中的指令,执行根据权利要求1~5中任一项所述的用于获取内存状态的方法。
12.一种非易失性存储介质,存储有计算机可执行指令,其特征在于,所述指令在被执行时用于实现根据权利要求1~5中任一项所述的用于获取内存状态的方法。
CN201810704405.1A 2018-06-29 2018-06-29 用于获取内存状态的方法、装置、系统及介质 Active CN109144760B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810704405.1A CN109144760B (zh) 2018-06-29 2018-06-29 用于获取内存状态的方法、装置、系统及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810704405.1A CN109144760B (zh) 2018-06-29 2018-06-29 用于获取内存状态的方法、装置、系统及介质

Publications (2)

Publication Number Publication Date
CN109144760A CN109144760A (zh) 2019-01-04
CN109144760B true CN109144760B (zh) 2019-10-11

Family

ID=64802595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810704405.1A Active CN109144760B (zh) 2018-06-29 2018-06-29 用于获取内存状态的方法、装置、系统及介质

Country Status (1)

Country Link
CN (1) CN109144760B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111797063A (zh) * 2020-06-28 2020-10-20 中孚信息股份有限公司 一种流式数据处理方法与系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226612A (zh) * 2013-05-08 2013-07-31 华北计算技术研究所 一种基于内存数据库的内容管理系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100432955C (zh) * 2005-09-02 2008-11-12 中兴通讯股份有限公司 一种非法内存读写的检测方法
CN101079083B (zh) * 2006-05-25 2010-05-12 中国科学院计算技术研究所 一种对访存操作进行权限检查的系统、装置及方法
US8990627B2 (en) * 2012-05-23 2015-03-24 Red Hat, Inc. Leveraging page fault and page reclaim capabilities in debugging
CN106294089A (zh) * 2015-06-23 2017-01-04 阿里巴巴集团控股有限公司 辅助对被监控内存空间的访问监控的方法和装置
CN108345788A (zh) * 2017-04-01 2018-07-31 清华大学 输入输出记录装置及方法、cpu及其数据读写操作方法
CN107562515B (zh) * 2017-08-04 2021-09-07 海光信息技术股份有限公司 一种在虚拟化技术中管理内存的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226612A (zh) * 2013-05-08 2013-07-31 华北计算技术研究所 一种基于内存数据库的内容管理系统

Also Published As

Publication number Publication date
CN109144760A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
US8332367B2 (en) Parallel data redundancy removal
US10613940B2 (en) Tracking modifications to a virtual machine image that occur during backup of the virtual machine
US9058195B2 (en) Virtual machines failover
RU2550558C2 (ru) Сравнение и замена позиции таблицы динамической трансляции адреса
JP6192660B2 (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
US11429416B2 (en) Memory deduplication based on guest page hints
US9069701B2 (en) Virtual machine failover
US10114701B2 (en) Space efficient cascading point in time copying
US10007436B2 (en) Storage control apparatus and control method of storage control apparatus
US11062020B2 (en) Processor checking method, checking device and checking system
US20180357131A1 (en) Virtual machine backup
US10162616B2 (en) System for binary translation version protection
US20180157605A1 (en) Configuration of a memory controller for copy-on-write
CN104461730A (zh) 一种虚拟资源分配方法及装置
CN109144760B (zh) 用于获取内存状态的方法、装置、系统及介质
US8375188B1 (en) Techniques for epoch pipelining
JP2001222466A (ja) マルチプロセッサ・システムと共有メモリ制御システム及び方法並びに記録媒体
US9513824B2 (en) Control method, control device, and recording medium
US11093169B1 (en) Lockless metadata binary tree access
KR20210152929A (ko) Ssd에서의 라이트 명령하기
US9122637B1 (en) Systems and methods for enhancing electronic discovery searches
CN115485668A (zh) 存储器页标记作为基于处理器的执行跟踪的日志记录线索
CN103164290A (zh) 应用内存管理方法和装置
US20180341422A1 (en) Operation interlocking in an address-sliced cache system
RU2775818C2 (ru) Запись трассировки на основе кэша с использованием данных протокола когерентности кэша

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