CN101154185A - 软件运行时执行恢复与重放方法 - Google Patents
软件运行时执行恢复与重放方法 Download PDFInfo
- Publication number
- CN101154185A CN101154185A CNA2007100498568A CN200710049856A CN101154185A CN 101154185 A CN101154185 A CN 101154185A CN A2007100498568 A CNA2007100498568 A CN A2007100498568A CN 200710049856 A CN200710049856 A CN 200710049856A CN 101154185 A CN101154185 A CN 101154185A
- Authority
- CN
- China
- Prior art keywords
- thread
- parts
- function
- kernel objects
- check point
- 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
Images
Landscapes
- Retry When Errors Occur (AREA)
Abstract
本发明涉及计算机二进制程序运行时的执行恢复与重放方法。该系统由代码注入部件、函数拦截部件、检测点设置部件和执行恢复部件组成。该方法是:系统启动目标二进制程序,由代码注入部件将检测点设置部件和执行恢复部件注入到目标二进制程序的进程空间,通过函数拦截部件监控记录进程、文件、注册表、网络等内核对象的行为,并由检测点设置部件在程序运行过程中安装检测点,得到恢复命令后,执行恢复部件将目标二进制程序的运行状态恢复到对应检测点位置的状态。本发明适用于对未知二进制程序的分析与容错,提高分析人员的效率,支持对软件运行时错误的分析和修复。
Description
技术领域
本发明涉及二进制程序运行时执行恢复与重放方法。本发明用于对二进制程序的执行分析与容错。
背景技术
软件容错系统一般采用冗余来满足系统高可靠性的要求,冗余可以划分为时间冗余和空间冗余两类。时间冗余是指出现故障时通过将控制回卷到一个无错的执行点,通过采用同种方法或不同方法再试的手段得到正确结果;空间冗余通常指由多个相同组件并行执行,通过将各自执行结果比较或者表决的方法来检测错误或者得到正确结果。空间冗余代价大,成本高,主要应用于特殊领域。时间冗余不仅开销小,而且行之有效。时间冗余方法中最常用的是进程检查点(Checkpointing)方法。
进程检查点机制是在进程正常运行时周期性的设置检查点,把进程在运行时的正确状态保存到稳定存储器中。如果在随后运行过程中发生故障,那么将进程进行卷回恢复,从稳定存储器中读出前一个检查点时的正确状态,从该点继续执行。这样就避免了由于故障而导致的程序从头重新执行,因而有效的减少了计算损失,设置检查点的时刻称之为检查点时刻;保存进程状态的文件称之为检查点文件。通过设置检查点能够保存和恢复程序的运行状态,因此它在许多领域都有重要的应用。
进程检查点可以分别在操作系统级、用户级或者应用程序级实现,但各自有其优缺点。操作系统级进程检查点对用户程序透明,容易得到进程的内核数据结构,但需要修改系统内核,因此对于基于封闭操作系统的进程检查点难以实现,并且其可配置性和移植性不高,检查点开销很大。用户级的进程检查点,将检查点功能编译为一个动态链接库链接到应用程序,可以实现对应用程序透明,易于配置且开销较小,但其实现机制与操作系统平台密切相关,无法实现在不同系统平台之间移植。应用程序级的进程检查点,优点是能够实现平台无关,可在不同的操作系统间移植;缺点是只限于几种有限的编程语言,目前仅有基于JAVA虚拟机的应用程序级检查点。由于用户级的进程检查点具有对应用程序透明,易于配置、开销较小且实用等特点,因此大部分检查点系统都选择在用户级实现。
随着PC机使用范围的不断扩大,Windows系统已经成为一个日益流行的桌面平台,尤其是在中低端市场。与此同时,基于Windows操作系统的机群系统也开始出现。由于Windows操作系统在集群系统中的运用,随故障负载和隶属关系的影响,彼时不再可用,即具有变化特性。
因此,迫切需要一种能有效运行于Windows操作系统环境上,并支持高效快速执行恢复与重放的方法。该方法应具有较小的运行开销,能支持各类系统内核资源的恢复,重现系统的运行状态,为软件容错提供可靠而全面的分析信息和执行平台。
发明内容
有鉴于此,本发明的目的是提供一种基于检测点设置的执行恢复方法,它将结合对用户地址空间、系统内核资源的保存和恢复来实现对二进制程序进程状态的任意恢复和重放。
为了达到上述目的,本发明提供了一种软件运行时执行恢复与重放方法,其特征在于:该系统包括了下述组成部件:
代码注入部件:检测点设置部件和执行恢复部件都是以动态链接库(DLL)的方式存在的,它们的功能独立于目标二进制程序。为了能将检测点设置与恢复的功能增加到目标二进制程序,必须通过代码注入方式将动态链接库的代码远程注入到目标二进制程序中,并按代码的指令执行相应的功能。代码注入部件利用CreateRemoteThread函数,能够容易的在另一个进程中创建线程。利用在目标进程中新创建的线程调用LoadLibrary函数来加载想要插入的DLL。该方法的基本操作步骤:使用VirtualAllocEx函数,在目标进程的地址空间中分配内存;使用WriteProcessMemory函数,将DLL的路径拷贝到第一步中分配的内存中;使用GetProcAddress函数,获取在Kernel32.dll中的LoadLibraryA或LoadLibraryW函数的实际地址;使用CreateRemoteThread函数,在目标进程中创建一个线程,它调用正确的LoadLibrary函数,为它传递第一步中分配的内存地址。
函数拦截部件:操作系统内核对象的状态是进程状态重要的一部分。微软Windows系统将内核对象的数据结构保存在内核空间中,而内核空间不能由用户线程直接访问,如果需对内核对象进行访问和操作,必须通过系统提供的应用程序接口(API)调用。因此保存系统内核对象状态的一个可行的方法是截获对内核对象进行访问和操作的API。从截获的API中可以获知操作内核对象的API调用、参数、返回值等,将他们都保存到检查点文件中。当程序出现故障进行恢复时,将重新执行保存的有关API调用,创建及操作内核对象来恢复其状态。函数拦截部件包含对系统进程、文件、注册表、网络等API函数的拦截。
检测点设置部件:进程状态由其用户地址空间的状态和内核对象的状态组成。因此检测点设置部件分为用户地址空间状态的保存,内核对象状态的保存两部分。检测点设置部件首先利用SuspendThread函数将目标二进制程序的所有应用线程挂起;获取并保存用户地址空间布局以及区域或块对应的文件名;保存地址空间中可读写块并已提交的数据;保存用户线程的上下文及线程局部存储;保存用户线程有关内核对象的API跟踪记录;保存活动文件的信息;检查点线程对所有应用线程分别调用ResumeThread函数恢复其执行,然后进入等待状态直到下一次检查点。
执行恢复部件:执行恢复部件利用检测点设置部件记录的进程用户地址空间信息,以及函数拦截部件记录的内核对象操作信息,将目标二进制程序重新设置为对应检测点位置的状态。执行恢复部件一致恢复进程用户地址空间状态;以挂起方式创建除主线程之外的其它线程,恢复所有应用线程的栈内容,线程的上下文,线程局部存储等。对线程局部存储恢复的策略为:当线程创建并开始执行时,通过TlsSetValue实现对应线程局部存储的恢复;根据保存的API系统调用创建其他内核对象,并通过重新执行API恢复内核对象状态;对于活动文件信息,重新打开这些文件并设置指针的位置;检查点线程对所有应用程序线程分别调用ResumeThread函数恢复其执行。然后进入等待状态直到下一次检查点时刻。
为了达到上述目的,本发明还提供了一种软件运行时执行恢复与重放方法,其特征在于:
该方法包括了下述操作步骤:
步骤(1),系统启动目标二进制程序;
步骤(2),代码注入部件将检测点设置部件和执行恢复部件注入到目标二进制程序的进程空间;
步骤(3),函数拦截部件监控记录进程、文件、注册表、网络等内核对象的行为;
步骤(4),检测点设置部件在程序运行过程中安装检测点;
步骤(5),得到恢复命令后;
步骤(6),执行恢复部件将目标程序的运行状态恢复到对应检测点位置的状态。
总之,本发明系统与方法的优点简述如下:结合系统内核,能更好的监控并记录各类资源的访问情况,同时能提供高效的运行环境,减少了执行恢复系统的运行开销,具有良好的实用性。
附图说明
图1是本发明软件运行时执行恢复与重放方法的流程图。
图2是本发明软件运行时执行恢复与重放方法的总体结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
系统启动目标二进制程序后,代码注入部件将检测点设置部件和执行恢复部件注入到目标二进制程序的进程空间;函数拦截部件监控记录进程、文件、注册表、网络等内核对象行为;检测点设置部件在程序运行过程中安装检测点;当得到恢复命令后,执行恢复部件将目标二进制程序的运行状态恢复到对应检测点位置的状态。
图2为软件运行时执行恢复与重放方法的总体结构框图。下面将结合附图2,具体介绍本发明的各个主要部件:
用户地址空间
Windows中,每个进程都被赋予自己的虚拟地址空间。Windows给32位进程分配一个4GB的虚拟地址空间。进程中的线程运行时可以访问属于该进程的地址空间,属于其他进程的地址空间则是不能被访问。4GB的虚拟地址空间,地址范围是0x00000000-0xFFFFFFFF。
其中0x80000000-0xFFFFFFFF近2G为操作系统使用空间,称之为内核空间。该分区存放操作系统代码。用于线程调度、内存管理、文件系统支持、网络支持和所有设备驱动程序的代码全部加载在这个分区。进程内核对象的数据结构也存放在该分区。驻留在该分区中的一切均可被所有进程共享。但在Windows中,这个分区是受系统保护的,用户线程不能对其进行直接读写访问。0x00010000-0x7FFFFFFF近2G为进程私有地址空间,称之为用户地址空间。该分区是进程的私有地址空间。一个进程不能读取、写入或者以任何方式访问另一个进程中驻留在该分区中的数据。Windows中该分区加载所有可执行模块或DLL模块,还映射该进程可以访问的所有内存映射文件。属于本进程的用户线程可以对其进行直接的读写访问。
用户地址空间恢复
Windows进程用户地址空间包括数据段、堆、各线程堆栈以及代码段。为了恢复地址空间的便利,系统将用户地址空间的布局,以及可写并已提交的块中数据一并保存到检查点文件中,这包括各区域和块的起始地址、保护属性、存储属性、状态、类型,对于映像区域和映射区域还包括它们映射的文件名。保存用户地址空间状态时,循环使用函数VirtualQuery遍历地址空间。该函数每次返回一个指向MEMORY_BASIC_INFORMATION结构的指针。该结构记录了对应区域或块中的起始地址,大小,存储属性,保护属性和状态等信息。根据区域或块的存储属性和状态可以判别出文件映像区域、映射区域、私有内存区域,这些对应了数据段,但无法区分出栈区域,堆区域。
区分堆区域的方法由函数GetProcessHeaps得到该进程中所有堆的起始位置。遍历时,堆起始所在的区域即为堆区域。线程栈所在的区域是由栈区域中的块拥有的特殊保护属性标识的,栈顶的块拥有独特GUARD保护属性,由此可以区分栈区域。也可通过获取线程上下文中ESP的地址,该地址所在的区域即为栈区域。
保存地址空间布局后,将可写并已提交块的数据进行保存。条件是存储属性为MEM_Private或MEM_Image或MEM_Map,且保护属性包含有READWRITE的块。这些块包括了执行文件中可改写的数据段、栈、和堆,但不包括代码段,因为代码段映射到地址空间的保护属性为只读。保存栈区域时,获取该堆栈的ESP,保存从栈底到ESP地址之间的数据,以尽量减少保存的数据。
进程恢复时,用户地址空间的恢复分为两步。第一步进行地址空间布局的恢复;第二步进行地址空间数据的恢复。恢复时重新启动进程,检查点线程获取初始用户地址空间布局,并与保存的布局相比较。从低地址空间向高地址空间逐一比较并恢复各区域。在当前地址空间中释放保存布局中不存在的区域,并重新创建程序在执行过程中动态分配的数据区域。动态分配的数据区域具有分配地址不确定性问题,如何使动态数据区域恢复到指定位置是一致方法中要解决的关键问题。调用VirtualAlloc分配数据区域时,可以指定区域起始地址和大小,容易做到在原对应位置分配新区域。而恢复在程序执行过程中创建的堆区域和栈区域情况不同,因为利用系统调用创建这两种区域时,不能指定区域的分配地址。操作系统对于没有指定分配位置的系统调用实施这样的分配原则。低地址空间优先分配,在地址空间中从低向高查找空闲区域,如果找到能满足系统调用中要求大小的空闲区域就将其分配。
根据操作系统分配原则,恢复地址空间时,从低地址空间向高地址空间逐步恢复。当恢复到堆区域时,为使新分配的堆区域与保存对应区域位置一致,在调用HeapCreate恢复堆区域之前,将低于该地址的空闲区域暂时分配,以保证在低地址空间中没有合适区域可分配给堆空间,这样就保证了操作系统在原对应位置创建了新的堆区域。直到将整个内存布局调整为与保存布局一致时再将临时分配的区域释放。栈区域是系统创建新线程时进行分配的。栈空间的恢复是通过恢复线程内核对象而恢复的。栈区域的分配位置也有不确定性,因此采用与恢复堆类似的方法,从低向高恢复地址空间,当恢复到栈的位置时,创建线程内核对象,使得分配栈的位置与原栈一致。当地址空间布局完全恢复后,再将可读写块中的数据恢复。
进程内核对象
系统要创建和操作若干类型的内核对象,如线程对象、文件对象、文件映射对象、进程对象、互斥对象、管道对象等。内核对象是内核分配的一个内存块,存放在内核空间中并只能由内核访问。该内存块是一种数据结构,它的成员负责维护该内核对象的各种信息。
由于内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接修改它们。Windows提供了一组系统调用对内核对象进行操作和访问。当调用创建内核对象的API函数时,该函数返回一个用于标识该对象的句柄;操作和访问某内核对象时,用标识该对象的句柄执行相应的系统调用。
进程内核对象恢复
内核对象驻留在内核空间中,由操作系统管理,检查点线程无法直接访问。通过拦截系统调用,跟踪用户线程对内核对象的操纵,掌握内核对象在检查点时的状态。做检查点时,将跟踪的与内核对象状态有关的API调用保存到检查点文件中。恢复时,根据检查点文件,重新执行与内核对象有关的系统调用,把内核对象的状态调整为与保存时一致。
进程正常运行时,函数拦截部件截获应用程序与内核对象相关的系统调用,将调用参数和执行线程记录起来,做检查点时将记录的信息保存到检查点文件中。恢复时,由于重新启动进程,系统中可能不存在检查点时刻的内核对象,因此必须重新创建它们。用保存的参数重新执行系统调用,创建内核对象,由于系统状态可能与上次执行该系统调用时不一致,引起系统调用的返回值也可能与原来不一致,这种现象称为创建内核对象的不确定性问题。
这个问题可能对进程的恢复有以下影响。由于用户地址空间状态与内核对象状态存在数据藕合,恢复后的进程仍然用原句柄调用内核对象,由于对应原句柄的内核对象可能不存在,进程将恢复出错。
采用虚拟句柄替换真实句柄的方法解决上述问题。创建内核对象时,通过拦截系统调用,将系统API返回的真实句柄替换为虚拟句柄提交进程。进程利用虚拟句柄操作内核对象时,拦截函数将用真实句柄替换虚拟句柄进行系统API调用。做检查点时,将两者的对应关系保存在检查点文件中。进程恢复时,重新创建内核对象,函数拦截部件拦截的函数用同样的虚拟句柄替换真实句柄返回给应用程序。这样应用程序看到的同一内核对象句柄都是“相同”的句柄。恢复内核对象时,根据记录的API调用跟踪信息,重新执行影响内核对象状态的系统调用,使内核对象恢复到检查点时状态。
Claims (5)
1.软件运行时执行恢复与重放方法,其特征在于包括如下组成部件:
代码注入部件:检测点设置部件和执行恢复部件都是以动态链接库(DLL)的方式存在的,它们的功能独立于目标二进制程序。为了能将检测点设置与恢复的功能增加到目标二进制程序,必须通过代码注入方式将动态链接库的代码远程注入到目标二进制程序中,并按代码的指令执行相应的功能。
函数拦截部件:操作系统内核对象的状态是进程状态重要的一部分。微软Windows系统将内核对象的数据结构保存在内核空间中,而内核空间不能由用户线程直接访问,如果需对内核对象进行访问和操作,必须通过系统提供的应用程序接口(API)调用。因此保存系统内核对象状态的一个可行的方法是截获对内核对象进行访问和操作的API。从截获的API中可以获知操作内核对象的API调用、参数、返回值等,将他们都保存到检查点文件中。当程序出现故障进行恢复时,将重新执行保存的有关API调用,创建及操作内核对象来恢复其状态。函数拦截部件包含对系统进程、文件、注册表、网络等API函数的拦截。
检测点设置部件:进程状态由其用户地址空间的状态和内核对象的状态组成。因此检测点设置部件分为用户地址空间状态的保存,内核对象状态的保存两部分。
执行恢复部件:执行恢复部件利用检测点设置部件记录的进程用户地址空间信息,以及函数拦截部件记录的内核对象操作信息,将目标二进制程序重新设置为对应检测点位置的状态。
2.根据权利要求1所述的软件运行时执行恢复与重放方法,其特征在于:代码注入部件利用CreateRemoteThread函数,能够容易的在另一个进程中创建线程。利用在目标进程中新创建的线程调用LoadLibrary函数来加载想要插入的DLL。该方法的基本操作步骤:使用VirtualAllocEx函数,在目标进程的地址空间中分配内存;使用WriteProcessMemory函数,将DLL的路径拷贝到第一步中分配的内存中;使用GetProcAddress函数,获取在Kerne132.dll中的LoadLibraryA或LoadLibraryW函数的实际地址;使用CreateRemoteThread函数,在目标进程中创建一个线程,它调用正确的LoadLibrary函数,为它传递第一步中分配的内存地址。
3.根据权利要求1所述的软件运行时执行恢复与重放方法,其特征在于:检测点设置部件首先利用SuspendThread函数将目标二进制程序的所有应用线程挂起;获取并保存用户地址空间布局以及区域或块对应的文件名;保存地址空间中可读写块并已提交的数据;保存用户线程的上下文及线程局部存储;保存用户线程有关内核对象的API跟踪记录;保存活动文件的信息;检查点线程对所有应用线程分别调用ResumeThread函数恢复其执行,然后进入等待状态直到下一次检查点。
4.根据权利要求1所述的软件运行时执行恢复与重放方法,其特征在于:执行恢复部件一致恢复进程用户地址空间状态;以挂起方式创建除主线程之外的其它线程,恢复所有应用线程的栈内容,线程的上下文,线程局部存储等。对线程局部存储恢复的策略为:当线程创建并开始执行时,通过TlsSetValue实现对应线程局部存储的恢复;根据保存的API系统调用创建其他内核对象,并通过重新执行API恢复内核对象状态;对于活动文件信息,重新打开这些文件并设置指针的位置;检查点线程对所有应用程序线程分别调用ResumeThread函数恢复其执行。然后进入等待状态直到下一次检查点时刻。
5.根据权利要求1所述的软件运行时执行恢复与重放方法,其特征在于:
步骤(1),系统启动目标二进制程序;
步骤(2),代码注入部件将检测点设置部件和执行恢复部件注入到目标二进制程序的进程空间;
步骤(3),函数拦截部件监控记录进程、文件、注册表、网络等内核对象的行为;
步骤(4),检测点设置部件在程序运行过程中安装检测点;
步骤(5),得到恢复命令后;
步骤(6),执行恢复部件将目标二进制程序的运行状态恢复到对应检测点位置的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100498568A CN101154185A (zh) | 2007-08-27 | 2007-08-27 | 软件运行时执行恢复与重放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100498568A CN101154185A (zh) | 2007-08-27 | 2007-08-27 | 软件运行时执行恢复与重放方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101154185A true CN101154185A (zh) | 2008-04-02 |
Family
ID=39255858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100498568A Pending CN101154185A (zh) | 2007-08-27 | 2007-08-27 | 软件运行时执行恢复与重放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101154185A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901174A (zh) * | 2010-07-28 | 2010-12-01 | 西安交通大学 | 基于代码段多副本对比机制提高程序可靠性方法 |
CN101916183A (zh) * | 2009-04-08 | 2010-12-15 | 英特尔公司 | 用于多线程的寄存器检查点机制 |
CN102263671A (zh) * | 2011-09-08 | 2011-11-30 | 曙光信息产业股份有限公司 | 基于检查点的故障排除方法和装置 |
CN101630351B (zh) * | 2009-06-04 | 2012-10-03 | 中国人民解放军理工大学指挥自动化学院 | 利用进程注入及TNS协议解析增强Oracle数据库服务器安全的方法 |
CN102752548A (zh) * | 2011-05-17 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种字幕机本地预览的方法 |
CN104657229A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法 |
CN104732144A (zh) * | 2015-04-01 | 2015-06-24 | 河海大学 | 一种基于伪协议的远程代码注入漏洞检测方法 |
CN105933303A (zh) * | 2016-04-15 | 2016-09-07 | 浪潮集团有限公司 | 一种文件篡改的检测方法及装置 |
CN102289404B (zh) * | 2010-06-15 | 2016-11-30 | 微软技术许可有限责任公司 | 基于执行捕捉和重放的调试 |
CN109062800A (zh) * | 2018-07-28 | 2018-12-21 | 安徽捷兴信息安全技术有限公司 | 一种手机应用测试方法及装置 |
CN110417931A (zh) * | 2019-07-05 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 域名解析记录获取方法、装置、计算机设备及存储介质 |
CN110765002A (zh) * | 2019-09-19 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 一种获取操作行为信息的方法、装置、介质和电子设备 |
CN117215963A (zh) * | 2023-11-08 | 2023-12-12 | 睿思芯科(深圳)技术有限公司 | 模拟器程序检查点保存和恢复的方法、系统及相关设备 |
-
2007
- 2007-08-27 CN CNA2007100498568A patent/CN101154185A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9940138B2 (en) | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
CN101916183A (zh) * | 2009-04-08 | 2010-12-15 | 英特尔公司 | 用于多线程的寄存器检查点机制 |
CN101916183B (zh) * | 2009-04-08 | 2014-09-03 | 英特尔公司 | 用于多线程的寄存器检查点机制 |
CN101630351B (zh) * | 2009-06-04 | 2012-10-03 | 中国人民解放军理工大学指挥自动化学院 | 利用进程注入及TNS协议解析增强Oracle数据库服务器安全的方法 |
CN102289404B (zh) * | 2010-06-15 | 2016-11-30 | 微软技术许可有限责任公司 | 基于执行捕捉和重放的调试 |
CN101901174A (zh) * | 2010-07-28 | 2010-12-01 | 西安交通大学 | 基于代码段多副本对比机制提高程序可靠性方法 |
CN102752548A (zh) * | 2011-05-17 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种字幕机本地预览的方法 |
CN102263671A (zh) * | 2011-09-08 | 2011-11-30 | 曙光信息产业股份有限公司 | 基于检查点的故障排除方法和装置 |
CN104657229A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法 |
CN104732144A (zh) * | 2015-04-01 | 2015-06-24 | 河海大学 | 一种基于伪协议的远程代码注入漏洞检测方法 |
CN104732144B (zh) * | 2015-04-01 | 2017-06-23 | 河海大学 | 一种基于伪协议的远程代码注入漏洞检测方法 |
CN105933303A (zh) * | 2016-04-15 | 2016-09-07 | 浪潮集团有限公司 | 一种文件篡改的检测方法及装置 |
CN105933303B (zh) * | 2016-04-15 | 2019-02-19 | 浪潮集团有限公司 | 一种文件篡改的检测方法及装置 |
CN109062800A (zh) * | 2018-07-28 | 2018-12-21 | 安徽捷兴信息安全技术有限公司 | 一种手机应用测试方法及装置 |
CN110417931A (zh) * | 2019-07-05 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 域名解析记录获取方法、装置、计算机设备及存储介质 |
CN110417931B (zh) * | 2019-07-05 | 2022-05-17 | 腾讯科技(深圳)有限公司 | 域名解析记录获取方法、装置、计算机设备及存储介质 |
CN110765002A (zh) * | 2019-09-19 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 一种获取操作行为信息的方法、装置、介质和电子设备 |
CN117215963A (zh) * | 2023-11-08 | 2023-12-12 | 睿思芯科(深圳)技术有限公司 | 模拟器程序检查点保存和恢复的方法、系统及相关设备 |
CN117215963B (zh) * | 2023-11-08 | 2024-02-06 | 睿思芯科(深圳)技术有限公司 | 模拟器程序检查点保存和恢复的方法、系统及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101154185A (zh) | 软件运行时执行恢复与重放方法 | |
CN101539883B (zh) | 嵌入式系统的错误追踪方法和装置 | |
CN104598809B (zh) | 程序的监控方法及其防御方法以及相关装置 | |
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
US6996590B2 (en) | Method and system for the garbage collection of shared data | |
CN103399812B (zh) | 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法 | |
CN1797342B (zh) | 用于增量式封包部署的设备和方法 | |
US8326894B2 (en) | Method and system to space-efficiently track memory access of object-oriented language in presence of garbage collection | |
CN101446918B (zh) | 一种实现用户态调试器调试单个函数的方法及系统 | |
CN102725730A (zh) | 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统 | |
CN100465899C (zh) | 基于虚拟内核对象的Linux程序检查点用户级实现方法 | |
CN101719090A (zh) | 对计算机软件系统崩溃原因进行自动分析的方法 | |
CN101819525A (zh) | 用于查找系统中应用的配置文件的方法和设备 | |
US20080010649A1 (en) | Method Of Loading Software With An Intermediate Object Oriented Language In A Portable Device | |
CN100349131C (zh) | 一种应用程序故障的定位方法 | |
CN101515320A (zh) | 一种攻击时漏洞检测方法及其系统 | |
CN100388234C (zh) | 一种基于有限状态机的对内存变量改写进行监控的方法 | |
CN112199178B (zh) | 一种基于轻量化容器的云服务动态调度方法及系统 | |
US8489652B2 (en) | Tracking object fields using relocatable object watchpoints | |
CN101620573B (zh) | X86体系结构内存管理单元虚拟化方法 | |
US8412751B2 (en) | Determining whether a Java object has been scan-missed by a garbage collector scan | |
US9208080B2 (en) | Persistent memory garbage collection | |
JP2004295889A (ja) | データ処理システム内での処理タスクの実行を制御する方法および装置 | |
Ilin et al. | Performance analysis of software with a variant NoSQL data schemes | |
CN101650688B (zh) | 一种访问vm_io地址空间的方法和用户态调试器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |