CN105528179A - 存储器位置之间控制的转移的***和方法 - Google Patents

存储器位置之间控制的转移的***和方法 Download PDF

Info

Publication number
CN105528179A
CN105528179A CN201510502877.5A CN201510502877A CN105528179A CN 105528179 A CN105528179 A CN 105528179A CN 201510502877 A CN201510502877 A CN 201510502877A CN 105528179 A CN105528179 A CN 105528179A
Authority
CN
China
Prior art keywords
memory
sectors
memory sectors
execution
virtual
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.)
Granted
Application number
CN201510502877.5A
Other languages
English (en)
Other versions
CN105528179B (zh
Inventor
弗拉迪斯拉夫·V·皮恩蒂斯科
德米特里·A·基尔萨诺夫
丹尼斯·V·阿尼金
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.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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 Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of CN105528179A publication Critical patent/CN105528179A/zh
Application granted granted Critical
Publication of CN105528179B publication Critical patent/CN105528179B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于控制程序的执行的***和方法。一个示例性方法包括:在第一虚拟存储器位置中确定感兴趣的存储器扇区;在第二虚拟存储器位置中复制所述感兴趣的存储器扇区;标记第一虚拟地址空间中的所述感兴趣的存储器扇区,并且利用不同的标记来标记第二虚拟地址空间中的所复制的存储器扇区;在所述感兴趣的存储器扇区和所复制的存储器扇区之间选择一个存储器位置以用于所述程序的执行;由硬件处理器在所选择的存储器位置中执行所述程序,直到接收到将所述程序的执行从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的通知;以及,将所述程序的执行转移到与在其中接收到所述通知的存储器位置不同的存储器位置。

Description

存储器位置之间控制的转移的***和方法
技术领域
概括而言,本发明涉及计算领域,更具体地说,涉及存储器位置之间控制的转移的***和方法。
背景技术
当前用于在程序执行期间生成API函数调用记录的技术需要对进程或文件在硬盘盘片上的地址空间的内容的干预,诸如改变内存中以及盘片上的操作***的***库中的代码。这种改变包括“代码的引入”,其负责记录API函数调用的机制。这种机制的主要步骤可以如下:
·对库管理的拦截(例如,通过改变目标函数的代码来拦截API函数);
·在API调用期间转换到包含负责处理API函数和记录调用的处理程序代码的存储器区域;
·执行记录***的处理程序的代码;
·返回对库的控制
为了捕获对记录***的控制,有多种方法用于改变来自库的API函数调用在可执行文件的导入表和/或“中间”库的布置中的地址,其中,在转换至从原始库中原始调用的API函数之前,初始调用指向该地址。
现有记录***的一个缺陷在于难以在不同的操作***及其版本上实现这种记录。例如,对OS的更新可能导致记录***停止工作,并且可能需要进行修改以与更新后的OS进行工作。另一缺陷在于:由于实际上任何对进程的地址空间的“入侵”均能够被恶意程序检测到,因此记录***的存在能够被恶意程序检测到而无关乎其权限。
因此,存在对改善用于记录API函数调用的机制的需求。
发明内容
公开了用于通过对程序执行在不同的虚拟存储器位置之间的转移进行管理来控制程序的执行的***、方法和计算机程序产品的示例性方面。所公开的方面的一个应用是生成在程序的执行期间调用的API函数的调用记录。所公开的方面的一个技术结果包括:通过交替地将指令的执行从一个虚拟存储器位置转移到另一个虚拟存储器位置并转回,来对由处理器执行嵌入在***存储器中的程序代码进行跟踪。
一种用于控制计算机程序的执行的示例性方法包括:在第一虚拟存储器位置中确定感兴趣的存储器扇区;在第二虚拟存储器位置中复制所述感兴趣的存储器扇区;标记第一虚拟地址空间中的所述感兴趣的存储器扇区,并且利用不同的标记来标记第二虚拟地址空间中的所复制的存储器扇区;在所述感兴趣的存储器扇区和所复制的存储器扇区之间选择一个存储器位置以用于所述程序的执行;由硬件处理器在所选择的存储器位置中执行所述程序,直到接收到将所述程序的执行从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的通知;以及,将所述程序的执行转移到与在其中接收到所述通知的存储器位置不同的存储器位置。
在一个示例性方面,在第二虚拟存储器位置中复制所述感兴趣的存储器扇区包括:将所述第二虚拟存储器位置映射到与所述第一虚拟存储器位置相同的物理存储器页上。
在一个示例性方面,标记至少所述第一虚拟地址空间中的所述感兴趣的存储器扇区包括:向所述第一虚拟地址空间中的所述感兴趣的存储器扇区的一个或多个逻辑页分配非可执行的属性。
在一个示例性方面,标记所述第二虚拟地址空间中的所复制的存储器扇区包括:向所述第二虚拟地址空间中的所复制的存储器扇区的一个或多个逻辑页分配可执行的属性。
在一个示例性方面,所述通知包括中断和异常中的一种。
在一个示例性方面,所述方法还包括:将关于将程序控制从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的程序指令的信息存储在记录中。
在一个示例性方面,选择一个存储器位置还包括:选择所述感兴趣的存储器扇区以用于程序指令的执行;以及,选择所复制的存储器扇区以用于程序API函数库的执行。
在一个方面,一种用于控制计算机程序的执行的示例性***包括耦合到存储器的硬件处理器,所述处理器配置为:在第一虚拟存储器位置中确定感兴趣的存储器扇区;在第二虚拟存储器位置中复制所述感兴趣的存储器扇区;标记第一虚拟地址空间中的所述感兴趣的存储器扇区,并且利用不同的标记来标记第二虚拟地址空间中的所复制的存储器扇区;在所述感兴趣的存储器扇区和所复制的存储器扇区之间选择一个存储器位置以用于所述程序的执行;在所选择的存储器位置中执行所述程序,直到接收到将所述程序的执行从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的通知;以及,将所述程序的执行转移到与在其中接收到所述通知的存储器位置不同的存储器位置。
上面示例性方面的简单概要是用来提供对本公开内容的基本理解。该概要并非所有预期方面的广泛概述,并且其意图既不是要确定所有方面的关键或重要元素,也不是要划定本公开内容的任何或所有方面的范围。其唯一目的是以简化的形式给出一个或多个方面,作为下面本公开内容的更详细描述的前奏。为了实现上述目的,本公开内容的所述一个或多个方面包括在权利要求中描述并特别指出的特征。
附图说明
被合并入说明书并且构成说明书的一部分的附图示出了本公开内容的一个或多个示例性方面,并且与具体实施方式一起用来解释本公开内容的原理和实现。
图1示出了根据一个方面的通用计算机***的示例,其可以用于实现所公开的用于控制程序执行的***和方法;
图2示出了根据一个方面的虚拟存储***的视图;
图3示出了根据一个方面的存储器副本的视图;
图4示出了根据一个方面的虚拟存储副本的视图;
图5示出了根据一个方面,用于将对程序指令执行的控制从一个虚拟存储器位置转移到另一虚拟存储器位置的示例方法;
图6A、6B和6C示出了根据一个方面,用于虚拟存储副本的示例***的视图;
图7示出了根据一个方面,用于记录程序执行的虚拟存储副本的示例方法;
图8示出了根据一个方面的记录程序执行的示例方法。
具体实施方式
本文在用于通过管理程序执行在不同的虚拟存储器位置之间的转移来控制程序的执行的***、方法和计算机程序产品的背景下,描述了若干示例性方面。本领域的普通技术人员应意识到的是,下面的描述仅是说明性的,并非旨在以任何方式进行限定。其它方面将使本领域的技术人员很容易得出本公开内容的益处的启示。现在将详细地参照如图所示出的示例性方面的实施。贯穿附图以及下面的描述,将尽量使用相同的附图标记来指代相同或相似的项目。
图1示出了通用计算机***20(其可以是个人计算机或服务器)的示例,通用计算机***20可以用来实现用于对程序的执行进行控制的***和方法。计算机***20包括中央处理单元21、***存储器22以及将各种***组件(包括与中央处理单元21相关联的存储器)相连的***总线23。***总线23是以现有技术所已知的、能够与任何其它总线架构进行交互的任何总线结构实现的,其中依次包括总线存储器或总线存储控制器、***设备总线以及本地总线。***存储器包括永久性存储器(ROM)24以及随机访问存储器(RAM)25。基本输入/输出***(BIOS)26包括确保信息在计算机20的元件之间的转移(诸如借助ROM24加载操作***时)的基本过程。
计算机20依次包括:用于读写数据的硬盘27、用于在可移动磁盘29上进行读写的磁盘驱动器28、以及用于在可移动光盘31(诸如CD-ROM、DVD-ROM以及其它光信息介质)上进行读写的光驱30。硬盘27、磁盘驱动器28以及光驱30分别通过硬盘接口32、磁盘接口33和光驱接口34连接到***总线23。这些驱动器和相应的计算机信息介质是用于存储计算机指令、数据结构、程序模块以及计算机20的其它数据的电源独立的模块。
计算机20可以包括一个或多个硬盘驱动器27、可移动磁盘29以及可移动光盘31,但应当理解的是,可以采用能够存储以可被计算机读取的形式的数据的其它类型的计算机信息介质56(固态硬盘、闪存卡、数字盘、随机访问存储器(RAM)等),其中上述组件经由控制器55连接到***总线23。
计算机20具有文件***36(其中存储有所记录的操作***35),并且还具有附加的程序应用37、其它程序模块38和程序数据39。用户能够通过使用输入设备(键盘40、鼠标42)向计算机20输入命令和信息。可以使用其它输入设备(未示出):麦克风、操纵杆、游戏控制器、扫描仪等。这些输入设备通常通过串行端口46***到计算机***20,进而连接到***总线,但其也可以以其它方式进行连接,例如,借助于并行端口、游戏端口或通用串行总线(USB)。显示器47或其它类型的显示设备也通过接口(诸如视频适配器48)连接到***总线23。除了显示器47之外,个人计算机还可以装备有其它***输出设备(未示出),诸如扬声器、打印机等。
计算机20能够使用到一个或多个远程计算机49的网络连接,在网络环境下工作。远程计算机(或多个计算机)49也可以是具有在先前描述计算机20的属性时所提到的大部分或所有元件的个人计算机或服务器。在计算机网络中还可以存在其它设备,诸如路由器、网络站、对等设备或其它网络节点。
网络连接可以形成局域计算机网络(LAN)50和广域计算机网络(WAN)。这些网络被用于企业计算机网络以及公司内部网络,并且它们通常具有到因特网的接入。在LAN或WAN网络中,计算机20通过网络适配器或网络接口51连接到局域网50。当使用网络时,计算机20可以使用调制解调器54或其它模块来提供与广域计算机网络(诸如因特网)的通信。调制解调器54(其为内部或外部设备)通过串行端口46连接到***总线23。应当注意的是,这些网络连接仅是示例性的,并不需要描绘网络的实际配置,即,实际上存在通过技术通信模块来建立一个计算机到另一个计算机的连接的其它方式。
在一个示例方面,随机访问存储器25是***存储器22的一部分,在本公开内容的上下文中,***存储器22还将被称作物理存储器;整个物理存储器被划分成物理页100,在图2中给出了这种划分的示例。用于对物理存储器进行寻址的地址集合形成物理地址空间。由于物理存储器的大小是有限的,因此创建了虚拟存储器用于程序的执行,并且用于对虚拟存储器进行寻址的地址集合形成虚拟地址空间。如本文中所使用的,术语虚拟存储器包括逻辑页连同这些页所描述的结构(例如,页目录指针、页目录、页表)的全体。将在下文描述这些结构。如本文中所使用的,术语虚拟地址空间和虚拟存储器是等同的并可互换使用。
虚拟地址空间可以被划分成逻辑页100a。逻辑页具有其自己的虚拟地址,并且可以被映射到任何物理地址,如图2中所示。因而,逻辑页对应于物理页,或者换言之,逻辑页被映射到物理页。在一个示例方面,如图2中所示,逻辑页以任意的顺序被映射到物理页。在另一个示例方面,逻辑页被同一地映射到物理页。若干逻辑页可以被映射到单个物理页。
逻辑页100a是虚拟对象(即,并非真实存在的,与物理页100不同),并且在一个特定的实例中,每个这种页具有两个地址:
·一个线性地址—其被放置在地址空间中的地址;
·一个物理地址—其在物理存储器25中所映射到的地址(在一些情况下,该地址可以不存在)。
虚拟存储器是利用本地计算机上(并且在特定的实例中是本地计算机和远程计算机上)的***存储器22的技术。由于存储器的页组织,能够利用在处理器层级的控制来实现虚拟存储器的机制。例如,可以将存储器的逻辑页调换到硬盘24上;在其内容来自物理存储器25的情况下,实际可使用的虚拟存储器的大小大幅增加,并且现在受限于可用的硬盘的大小;这些页被调换至的硬盘不一定位于本地计算机。
图2示出了在通常的32比特页寻址(分页)的情况下的虚拟存储器***。为了描述一个页,可以使用由该页被映射到的物理地址和定义该页的性质的标志(属性)组成的数据结构。关于该页的起始的32比特地址的信息位于主要的20比特中;这些信息还被存储在页描述中。该页描述被分组成页表101。页描述是4字节条目。页表被分组成页目录102。页目录102是4kb大小的文件,其由4字节条目或PDE(页目录条目)组成。每个条目指向一个页表101,并且在格式上几乎与PTE一致。PDE确定页表的位置、指向存储器的物理页的地址、并且页表的属性。为了使处理器能够使用页信息,需要指示页目录起始的地址103(页目录基础—PDB)。该地址被保留在CR3寄存器中。
因此,针对在32比特地址空间中进行寻址,为了指示页表中的页数量,需要10比特值(因为表中存储了1024个页描述)。为了精确地指示将使用页目录中的哪个表,再需要10比特值。为了指示页中的偏移,需要12比特值。如果将这些值的大小相加,结果是必须规定一个32比特的数据结构用于访问存储器:10比特用于表数量,另外10比特用于表中的页数量,以及12比特用于页自身的偏移。
在使用PAE(物理地址扩展)技术的情况时,添加了额外的层级—页目录表104,页目录表104包含PDPTE(页-目录-指针-表条目)。在这种情况下,CR3寄存器将包含对齐的页目录表104的物理地址105。
在使用IA-32e技术的情况时,向页表添加了额外的层级,页目录和目录表:页寻址层表107,其包含PML4E(页映射层条目)。在这种情况下,CR3寄存器106将包含指示对齐的页寻址层表107的物理地址108的结构。
当启动一个程序时,操作***创建一个进程,该程序的流程将在该进程中执行。程序文件被加载到计算机的存储器的特定位置。在使用虚拟存储器的情况下,该文件被加载到虚拟存储器的特定位置,其中***将特定的物理地址池映射到该虚拟存储器的特定位置。然后,该程序开始执行,即,处理器以被写入该程序文件中的顺序执行机器指令。由操作***创建的进程基本上是允许程序代码所需要的资源的容器。在多任务操作***中,每个进程对应于其自己的虚拟地址空间。接着对寻址虚拟地址空间的机制的描述,为了取得访问进程的虚拟地址空间的权限,必须能够访问控制寄存器CR3106。通过对结构及其元素进行控制,基于控制寄存器CR3106中包含的信息而获得对其的访问权限,对进程的虚拟地址空间进行控制。在一个特定方面,利用32比特寻址,每个进程具有其自己的页目录,并因此,当在进程之间切换时,存储有对齐的页目录的物理地址的CR3寄存器106被重写。程序丝毫不需要确定所有的页、表以及目录元素;仅确定实际要利用的那些页、表以及目录元素并且动态地在操作进程中添加或删除新的描述便足够了。
图3示出了***存储器22的一部分,其中,指令已被写入该部分的特定位置301以用于执行。在一个示例中,存储器位置可以是物理存储器中的位置。在另一示例中,存储器位置可以是逻辑页被映射到的***存储器中的位置,即,虚拟存储器位置。为了在原始存储器位置301中在控制下运行程序,要确定感兴趣的扇区。存储器位置的感兴趣的扇区可以是存储器位置的任何给定的扇区,其中,在转移对程序指令的控制时,必须创建一个针对该扇区的通知。在一个示例方面,感兴趣的扇区是特定的存储器位置中的特定扇区,该扇区基于确定该扇区的内容的特定特征、其布置以及其目的而与其它扇区相隔离。例如,感兴趣的扇区可以是包含程序指令的存储器位置的扇区,其中,当该程序指令的控制被转移时,必须检查寄存器的状态,以便估计该程序指令的执行顺序。感兴趣的扇区还可以带有设计为执行特定动作(访问硬盘、通过网络传递信息等)的指令集。
此后,可以对原始存储器位置的扇区进行复制,其中,至少复制感兴趣的扇区303。对存储器的复制可以以各种方式进行。在一个示例性方面,将扇区的指令和数据直接拷贝到另一个存储器位置301a(图3)。因而,在物理存储器中出现具有一致内容的扇区。在另一个示例性方面,不对数据进行拷贝,但创建指向物理存储器的那些相同位置的新的目录102和页表101(图4)。
此后,可以对原始存储器位置301的存储器扇区进行标记。在一个示例性方面,针对感兴趣的扇区303的标记可以不同于原始位置的其它扇区304的标记。在一个示例性方面,存储器扇区的指令字节的修改可以用作标记。在另一个示例性方面,绝不会改变指令其自身以及数据,但改变描述这些扇区的结构中的属性。例如,对感兴趣的扇区中的页分配非可执行的属性,而对其它扇区中的页分配可执行的属性。还可以使用读/写以及其它属性。
接下来,可以对所复制的存储器位置301a中的扇区进行标记。在一个示例性方面,针对感兴趣的扇区的标记可以不同于所复制的存储器位置301a的其它扇区的标记。例如,针对所复制的扇区303a可以使用与针对原始扇区303相同的标记。在另一个示例中,可以使用不同的标记。例如,在原始存储器位置中,可以给与感兴趣的扇区303中的页“非可执行”的属性,而可以给与原始位置的其它扇区304中的页“可执行”的属性;具有“非可执行”的属性的扇区保持这个属性。针对所复制的区域301a,可以颠倒上述属性:其中,可以给与感兴趣的扇区中的页“可执行”的属性,而可以给与其它扇区中的页“非可执行”的属性。
接下来,在感兴趣的存储器扇区和所复制的存储器扇区之间选择一个存储器位置,以便由处理器来执行。然后,该处理器执行所选择的存储器位置中包含的程序指令。
在一个示例性方面,所选择的存储器位置中的指令由处理器执行,直到接收到将该程序的执行转移到另一个存储器扇区的通知为止。可以在将对指令的控制从利用一个标记所标记的扇区转移到由一个不同的标记所标记的位置的扇区时,创建该通知。这种通知可以是中断或异常。中断和异常是指示在***(硬件)中的某处或者正在被执行的当前程序或例程中,出现了需要处理器立即关注的情况的事件。中断和异常通常导致控制从正被执行的当前程序或例程到特殊程序过程或例程(被称为中断处理程序或异常处理程序)的强制转移。对中断或异常进行响应的动作是对该中断或异常的处理。异常可能在处理器确定在执行指令的过程中出现错误时发生。
在一个示例性方面,接收到通知可能导致程序指令的执行转移到与在其中接收到该通知的存储器位置不同的存储器位置。例如,如果程序是在原始存储器位置301被执行的,则该执行将被转移到所复制的存储器位置301a,并且如果程序是在所复制的存储器位置301a被执行的,则该执行将被转移到原始存储器位置301或另一个复制的扇区。根据实现对原始存储器位置的扇区的复制所使用的方法,执行的转移可以以各种方式来进行。在一个示例性方面,改变执行的下一指令的地址。在另一个示例性方面,所有的地址保持不变,并且仅改变控制寄存器CR3106的值,如图4中所示。
图5示出了将对指令的执行的控制从一个虚拟存储器位置转移到另一个虚拟存储器位置的示例性方法。在步骤500,在原始虚拟存储器位置中确定由至少一个逻辑页组成的感兴趣的存储器扇区。在步骤501,创建至少一个额外的虚拟存储器位置,其中在一个示例中,该至少一个额外的虚拟存储器位置被映射到与原始虚拟存储器位置相同的物理页。为此,创建一个页目录和至少一个页表。针对虚拟存储器位置的创建,在一个特定的实例中,拷贝原始虚拟位置的PTE和PDE。
接下来,在步骤502,对原始虚拟存储器位置中的扇区进行标记,针对感兴趣的扇区的标记不同于原始位置的其它扇区的标记;在一个特定的实例中,PTE结构中的NX比特用于以下目的:在一个特定的实例中,可以针对感兴趣的扇区中的页来设置该比特,并且针对其它扇区中的页来清除该比特;在另一个特定的实例中,针对感兴趣的扇区中的页来清除该比特,并且针对其它扇区中的页来设置该比特。在原始位置中设置了标记之后,在步骤503中,在至少一个复制的存储器位置中对扇区进行标记,针对感兴趣的扇区的标记不同于所复制的存储器位置的其它扇区的标记。在一个示例性方面,在该步骤中使用与针对原始扇区所使用的、对NX比特进行设置的相同机制。在一个示例性方面,可以采用倒置,换言之,如果针对原始存储器位置中的感兴趣的扇区中的页清除了NX比特,则将在原始位置的复制中针对该感兴趣的扇区中的页设置该比特。在其它示例性方面,可以针对扇区中的页的标记使用PDE和PTE结构中的其它比特,诸如R/W比特。在另一个示例性方面,将一些比特相结合,例如,针对原始虚拟位置使用NX比特,而针对虚拟位置的复制则使用R/W比特。
在步骤504,选择一个存储器位置用于执行在其中包含的程序指令。根据在存储器位置之间进行切换所使用的目标(例如,记录、调试、消除对漏洞的利用等),可以选择复制的存储器位置中的一个或者原始存储器位置。
在步骤505,由处理器在所选择的存储器位置中执行指令,直到接收到通知为止。该通知可以是在将对指令的控制从通过一个标记所标记的扇区转移到通过一个不同的标记所标记的位置的扇区时生成的。在一个示例性方面,当使用NX比特作为标记时,这种通知将是页错误异常(#PF-页-错误异常)。该通知是在将控制从NX比特被清除的页的存储器位置的扇区中的指令转移到NX被设置的页的存储器位置的扇区中的指令时创建的。
在最后的步骤506中,将指令的执行转移到与在其中指令的执行创建了通知的存储器位置不同的存储器位置。在一个示例性方面,控制的转移可以通过重写CR3的内容来进行,重写的内容的类型是通过寻址模式(分页模式)来确定的。
在一个示例性方面,上述执行的转移的算法可以用在记录***中,该记录***旨在形成对API函数的调用的记录,其中该API函数在程序的执行期间被调用。进程具有程序文件的必要部分被加载到其中的虚拟地址空间(VAS),以及与其相关联的动态DLL库。在程序代码的执行期间,对API函数的调用从不同的DLL库发生,这也应当被记入API函数的调用记录。
图6a示出了由OS创建的进程的存储器的示例。为了清楚起见,该进程存储器对包含模块和库的程序指令的扇区加以区分,诸如“EXE”模块(其包含在执行期间创建该进程的文件的程序指令)和各种动态库(例如,未知.dll(Unknown.dll)、其它已知.dll(Otherknown.dll)、kernel32.dll以及Ntdll.dll)。还存在“其它存储器”和“进程堆”的扇区,在这些扇区中可以存储任何给定的辅助数据。
应当注意的是,由于存在巨量的库(图6a未示出库的完整分集),因此针对记录***仅将所有的库划分成两个组:感兴趣的库和不感兴趣的库。存储器位置中的感兴趣的库构成感兴趣的存储器扇区303和303a,不感兴趣的库连同其它模块包括所有其它存储器扇区304和304a。感兴趣的库的示例是库“kernel32.dll”和“Ntdll.dll”。不感兴趣库的示例是库“未知.dll”和“其它已知.dll”。能够形成感兴趣的动态库的列表,其将包含进行记录所必须的库。通常,最流行并且被所有进程经常使用的库的列表可以涵盖所有其它库的工作。因此,所有其它库将是不感兴趣的库。
图6b和图6c示出了VAS的示例,一个VAS是原始的(图6b),另一个VAS是原始VAS的复制(图6c)。在一个示例性方面,为了形成API函数调用的列表,记录***在可执行文件的运行期间创建两个新的VAS来替代原始VAS。在另一个示例性方面,创建两个新的VAS,但这两个新的VAS连同原始VAS一起使用,此后如果OS访问VAS则将它们提供给OS。
因而,进程的存储器被划分成两个部分。在第一原始VAS301中,通过上面描述的方法,感兴趣的扇区303可以被标记为非可执行的,并且将对库中的可输出函数的调用进行记录,其中,这些库的可执行函数的程序指令被包含在感兴趣的扇区的页中。其它扇区304(诸如EXE模块或不感兴趣的DLL库)可以被标记为可执行的。在VAS的复制301a中,可以进行相反的操作,感兴趣的扇区303a可以被标记为可执行的,而其它扇区304a可以被标记为非可执行的。
应当注意的是,不考虑VAS,进程存储器的内容总是保持相同(即,不破坏地址空间的完整性)。仅改变相应的表/页的属性。该陈述仅针对在其中进行存储器的物理划分的用户模式才是真实的。该划分包含针对VAS的每个拷贝创建页目录和页表,以及在一个示例性方面,包含具有其自己的控制寄存器CR3的值的目录表和页寻址层级的表。相同的物理页可以被映射在两个目录中,但针对需要对其的调用进行记录的库具有不同的属性。因而,在VAS之间的切换可以通过对控制寄存器CR3的重写(改变其内容)来进行。
为了使记录***能够控制VAS(在VAS之间切换操作),针对每个VAS中的相应的页,在每个页的属性段中设置标记(NX比特)。该NX比特是特殊标记,其用于确定位于给定的存储器页上的程序代码的执行的可能性、或者在尝试执行代码的事件中异常(页错误,下文记为#PF)的发生。通过“#PF”意指在尝试从存储器页运行程序代码时发生异常,其中,该执行针对该存储器页是被禁止的。凭借设置这些NX比特,变得能够在API函数调用时切换创建的VAS。应当注意的是,在从原始VAS301切换到复制VAS301a时,将对调用进行记录,并且还在反方向上进行切换时,将对函数的返回值和若干输出参数进行记录。该原理使得能够仅执行复制VAS301a中的感兴趣的动态库,以及原始VAS301中的所有其余的可执行代码。
使用本文公开的用于虚拟存储器切换的方法来记录程序指令的执行可以以下面的方式执行。记录***可以包含感兴趣的库的列表,并且其还形成一种“借书卡”,该“借书卡”包含关于至少到这些库的入口点的地址的信息。图7示出了根据一个方面,用于记录程序执行的虚拟存储器复制的示例方法。在步骤700中正在执行的文件的启动开始时,记录***在步骤701接管控制并且在步骤702形成两个VAS,原始VAS301和复制VAS301a。接下来,在步骤703,确定感兴趣的库及其页。在两个VAS的形成期间,在这两个VAS的每一个中,在属于感兴趣的库的页以及属于所有其余代码的页的属性中设置NX比特(步骤704)。接下来,将控制返回给OS(步骤705)。
图8示出了记录***在对API函数调用的记录的形成期间的操作的方法。在步骤801,在正在执行的文件的运行期间,从感兴趣的库调用特定的API函数。例如,对“CreateFile”函数的调用,该函数位于动态库“kernel32.dll”中。因此,在步骤802,在针对函数的进一步执行所指示的访问地址处控制的转移(跳跃)期间,在步骤803,依据先前设置的NX比特,发生异常页错误(#PF)。这种情况与以下事实相关联:该执行发生在原始VAS301中,而如上面所提到的,已在感兴趣的库的页的属性中设置了NX比特以指示在原始VAS的给定页中执行代码的不可能性。接下来,在步骤804,在异常处理程序的帮助下,对#PF异常的上下文进行分析,以便确定该异常的原因并且确定所调用的API函数的地址。因而,该分析包含从(先前创建的)API函数表中查找与该调用所访问的存储器地址相对应的API函数。在确定了该API函数之后,在步骤805,关于该API函数的信息将被记入API函数调用的记录中,并且在步骤806,将进行从原始VAS301到复制VAS301a的切换,其中,在步骤807,将进行对感兴趣的库中的代码的进一步执行,更准确地说,是特定的API函数的执行。
在API函数已执行了其任务之后便退出,即,在步骤808,跳回到正在执行的文件的程序代码(参考图6,其为从“Logging.dll”模块到“Exe”模块的转换)。但是由于复制VAS301a中的该存储器区域是非可执行的,因此在步骤809出现#PF异常。在步骤810,也对该#PF进行分析,以确定其发生的原因。在该分析期间,例如借助于关于所述跳跃的地址的信息,确定存在来自API函数的返回。在这种情况下,在步骤811,进行VAS从复制301a到原始301的切换,其中,在步骤812继续该程序代码的进一步执行。在该API函数调用再次出现之后,重复用于切换VAS的所有步骤,直到该程序代码被执行为止。
应当注意的是,上面描述的技术的特征之一在于***不改变存储器内容,而仅在OS与存储器进行工作的机制中进行干预。
在各个方面,本文中描述的***和方法可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则该方法可以作为一个或多个指令或代码存储在非暂时性计算机可读介质上。计算机可读介质包括数据存储。通过举例而非限定的方式,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM、闪存或其它类型的电、磁或光存储介质,或能够用于以指令或数据结构的形式携带或存储期望的程序代码并且能够被通用计算机的处理器访问的任何其它介质。
在各个方面,在本公开内容中在模块方面描述了***和方法。如本文中使用的术语“模块”指的是现实的设备、组件、或使用硬件实现的组件的排列,诸如通过专用集成电路(ASIC)或现场可编程门阵列(FPGA);或者作为硬件和软件的组合,诸如通过微处理器***以及用于实现该模块的功能的指令集,其中该指令集(在被执行时)将该微处理器***转换成专用设备。模块还可以实现为以下二者的组合:单独由硬件协助的特定功能,以及由硬件和软件的组合协助的其它功能。在某些实现中至少部分的以及在一些情况下所有的模块能够在通用计算机的处理器上执行(诸如上面在图3中详细描述的)。因此,每个模块可以以各种适当的配置实现,并且不应当限于本文中所举例说明的任何特定实现。
为了清楚起见,本文并未公开各个方面的所有常规特征。应当意识到的是,在本公开内容的任何实际实现的开发中,必须做出若干特定于实现的决策以便达到开发者的具体目标,并且对于不同的实现和不同的开发者,这些具体目标会不同。应当意识到的是,这种开发工作会是复杂的和耗时的,但是对于具有了本公开内容的益处的本领域普通技术人员而言,这将只不过是工程的例行工作任务。
此外,应当理解的是,本文中使用的措辞或术语是出于描述而非限制的目的,因此本说明书中的术语或措辞应被本领域技术人员根据本文中给出的教导和指导,结合相关领域的技术知识来进行解释。此外,除非明确地指出,对于说明书或权利要求书中的任何术语,并非旨在归于非常用的或特殊的释义。
本文中公开的各个方面涵盖本文中以解释说明的方式提及的已知模块的目前以及未来已知的等同物。此外,虽然已示出并描述了多个方面和应用,但具有本公开内容的益处的本领域技术人员应当意识到的是,在不背离本文公开的发明构思的情况下,可能有比上面所提及的更多的修改。

Claims (14)

1.一种用于控制计算机程序的执行的方法,所述方法包括:
在第一虚拟存储器位置中确定感兴趣的存储器扇区;
在第二虚拟存储器位置中复制所述感兴趣的存储器扇区;
标记第一虚拟地址空间中的所述感兴趣的存储器扇区,并且利用不同的标记来标记第二虚拟地址空间中的所复制的存储器扇区;
在所述感兴趣的存储器扇区和所复制的存储器扇区之间选择一个存储器位置以用于所述程序的执行;
由硬件处理器在所选择的存储器位置中执行所述程序,直到接收到将所述程序的执行从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的通知;以及
将所述程序的执行转移到与在其中接收到所述通知的存储器位置不同的存储器位置。
2.根据权利要求1所述的方法,其中,在第二虚拟存储器位置中复制所述感兴趣的存储器扇区包括:
将所述第二虚拟存储器位置映射到与所述第一虚拟存储器位置相同的物理存储器页上。
3.根据权利要求1所述的方法,其中,标记至少所述第一虚拟地址空间中的所述感兴趣的存储器扇区包括:
向所述第一虚拟地址空间中的所述感兴趣的存储器扇区的一个或多个逻辑页分配非可执行的属性。
4.根据权利要求1所述的方法,其中,标记所述第二虚拟地址空间中的所复制的存储器扇区包括:
向所述第二虚拟地址空间中的所复制的存储器扇区的一个或多个逻辑页分配可执行的属性。
5.根据权利要求1所述的方法,其中,所述通知包括中断和异常中的一种。
6.根据权利要求1所述的方法,还包括:
将关于将程序控制从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的程序指令的信息存储在记录中。
7.根据权利要求1所述的方法,其中,选择一个存储器位置还包括:
选择所述感兴趣的存储器扇区以用于程序指令的执行;以及
选择所复制的存储器扇区以用于程序API函数库的执行。
8.一种用于控制计算机程序的执行的***,所述***包括:
耦合到存储器的硬件处理器,所述处理器配置为:
在第一虚拟存储器位置中确定感兴趣的存储器扇区;
在第二虚拟存储器位置中复制所述感兴趣的存储器扇区;
标记第一虚拟地址空间中的所述感兴趣的存储器扇区,并且利用不同的标记来标记第二虚拟地址空间中的所复制的存储器扇区;
在所述感兴趣的存储器扇区和所复制的存储器扇区之间选择一个存储器位置以用于所述程序的执行;
在所选择的存储器位置中执行所述程序,直到接收到将所述程序的执行从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的通知;以及
将所述程序的执行转移到与在其中接收到所述通知的存储器位置不同的存储器位置。
9.根据权利要求8所述的***,其中,在第二虚拟存储器位置中复制所述感兴趣的存储器扇区包括:
将所述第二虚拟存储器位置映射到与所述第一虚拟存储器位置相同的物理存储器页上。
10.根据权利要求8所述的***,其中,标记至少所述第一虚拟地址空间中的所述感兴趣的存储器扇区包括:
向所述第一虚拟地址空间中的所述感兴趣的存储器扇区的一个或多个逻辑页分配非可执行的属性。
11.根据权利要求8所述的***,其中,标记所述第二虚拟地址空间中的所复制的存储器扇区包括:
向所述第二虚拟地址空间中的所复制的存储器扇区的一个或多个逻辑页分配可执行的属性。
12.根据权利要求8所述的***,其中,所述通知包括中断和异常中的一种。
13.根据权利要求8所述的***,其中,所述处理器还配置为:
将关于将程序控制从利用一个标记进行标记的存储器扇区转移到利用一个不同的标记进行标记的存储器扇区的程序指令的信息存储在记录中。
14.根据权利要求8所述的***,其中,选择一个存储器位置还包括:
选择所述感兴趣的存储器扇区以用于程序指令的执行;以及
选择所复制的存储器扇区以用于程序API函数库的执行。
CN201510502877.5A 2014-10-17 2015-08-14 存储器位置之间控制的转移的***和方法 Active CN105528179B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2014141808/08A RU2580016C1 (ru) 2014-10-17 2014-10-17 Способ передачи управления между областями памяти
RU2014141808 2014-10-17
US14/596,631 2015-01-14
US14/596,631 US9116621B1 (en) 2014-10-17 2015-01-14 System and method of transfer of control between memory locations

Publications (2)

Publication Number Publication Date
CN105528179A true CN105528179A (zh) 2016-04-27
CN105528179B CN105528179B (zh) 2018-06-12

Family

ID=53838437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510502877.5A Active CN105528179B (zh) 2014-10-17 2015-08-14 存储器位置之间控制的转移的***和方法

Country Status (4)

Country Link
US (1) US9116621B1 (zh)
EP (1) EP3009935B1 (zh)
CN (1) CN105528179B (zh)
RU (1) RU2580016C1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463513A (zh) * 2016-06-02 2017-12-12 卡巴斯基实验室股份制公司 在存储位置之间转移控制的***和方法
CN109727187A (zh) * 2019-01-03 2019-05-07 北京地平线机器人技术研发有限公司 用于调整多个感兴趣区域数据的存储位置的方法和装置
CN110083520A (zh) * 2018-01-25 2019-08-02 迈普通信技术股份有限公司 数据获取方法及装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983931B2 (en) * 2015-04-30 2021-04-20 Microchip Technology Incorporated Central processing unit with enhanced instruction set
RU2628921C1 (ru) 2016-03-18 2017-08-22 Акционерное общество "Лаборатория Касперского" Система и способ выполнения антивирусной проверки файла на виртуальной машине
EP3252610B1 (en) * 2016-06-02 2021-06-16 AO Kaspersky Lab System and method of transfer of control between memory locations
US10810099B2 (en) * 2017-09-11 2020-10-20 Internatinal Business Machines Corporation Cognitive in-memory API logging
US11347653B2 (en) * 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041866A1 (en) * 2004-08-17 2006-02-23 Rajini Sivaram Debugging an application process at runtime
CN102707899A (zh) * 2011-03-04 2012-10-03 索尼公司 虚拟存储器***、虚拟存储器控制方法和程序
CN103460179A (zh) * 2011-03-30 2013-12-18 英特尔公司 用于透明地对应用程序进行插桩的方法和设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002536712A (ja) * 1999-01-28 2002-10-29 エーティーアイ インターナショナル エスアールエル 第2のアーキテクチャのコンピュータにおける第1のコンピュータアーキテクチャ用プログラムの実行
RU2239228C2 (ru) * 2001-07-05 2004-10-27 Всероссийский научно-исследовательский институт автоматики Способ распределения времени центрального процессора между задачами в автоматизированных системах управления технологическими процессами
US7356736B2 (en) * 2001-09-25 2008-04-08 Norman Asa Simulated computer system for monitoring of software performance
US7363463B2 (en) 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US8819641B1 (en) * 2006-04-27 2014-08-26 Epic Games, Inc. Program state reversing software development tool
US7945761B2 (en) 2006-11-21 2011-05-17 Vmware, Inc. Maintaining validity of cached address mappings
CN100555240C (zh) * 2007-01-16 2009-10-28 国际商业机器公司 用于诊断应用程序的方法和***
US8239832B2 (en) * 2007-05-25 2012-08-07 Microsoft Corporation In-process debugging using external debugging infrastructure

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041866A1 (en) * 2004-08-17 2006-02-23 Rajini Sivaram Debugging an application process at runtime
CN102707899A (zh) * 2011-03-04 2012-10-03 索尼公司 虚拟存储器***、虚拟存储器控制方法和程序
CN103460179A (zh) * 2011-03-30 2013-12-18 英特尔公司 用于透明地对应用程序进行插桩的方法和设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463513A (zh) * 2016-06-02 2017-12-12 卡巴斯基实验室股份制公司 在存储位置之间转移控制的***和方法
CN107463513B (zh) * 2016-06-02 2021-01-12 卡巴斯基实验室股份制公司 在存储位置之间转移控制的***和方法
CN110083520A (zh) * 2018-01-25 2019-08-02 迈普通信技术股份有限公司 数据获取方法及装置
CN109727187A (zh) * 2019-01-03 2019-05-07 北京地平线机器人技术研发有限公司 用于调整多个感兴趣区域数据的存储位置的方法和装置

Also Published As

Publication number Publication date
RU2580016C1 (ru) 2016-04-10
CN105528179B (zh) 2018-06-12
US9116621B1 (en) 2015-08-25
EP3009935A1 (en) 2016-04-20
EP3009935B1 (en) 2017-11-29

Similar Documents

Publication Publication Date Title
CN105528179A (zh) 存储器位置之间控制的转移的***和方法
CN105164657A (zh) 程序数据至非易失性存储器的选择性备份
CN108369520B (zh) 保护基本输入/输出(bios)代码
US10261895B2 (en) System and method for transferring execution of a computer program
JP2022513382A (ja) 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体
JP6255336B2 (ja) 安全なデータ格納方法およびデバイス
US20150186237A1 (en) Systems and methods for error simulation and code testing
CN105302665A (zh) 一种改进的写时拷贝快照方法及***
US9411513B2 (en) Sensitive data file attribute
CN102880461B (zh) 一种编译链接方法及装置
CN111694580B (zh) 存储设备升级及初始化的方法、装置、电子设备
CN115729724B (zh) 故障注入方法、故障测试***、电子设备及可读存储介质
CN105335203A (zh) 共享库的二进制翻译执行方法和装置
CN104951244A (zh) 用于存取数据的方法和设备
CN110298175A (zh) 一种dll文件的处理方法及相关装置
US11442708B2 (en) Compiler-generated alternate memory-mapped data access operations
CN114996955A (zh) 一种云原生混沌工程实验的靶场环境构建方法及装置
CN103176843A (zh) MapReduce分布式***的文件迁移方法及设备
US20190265959A1 (en) Automatically synchronizing the install and build directories of a software application
EP3252610B1 (en) System and method of transfer of control between memory locations
JP2015523633A (ja) 情報を削除する方法
JP2015166958A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
RU2623883C1 (ru) Способ выполнения инструкций в системной памяти
CN102073529B (zh) 超级内核组件的升级方法和计算机***
TWI554891B (zh) 存儲控制裝置與供其調用其位址的方法

Legal Events

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