CN115934581B - 一种跨进程内存的处理方法及系统 - Google Patents
一种跨进程内存的处理方法及系统 Download PDFInfo
- Publication number
- CN115934581B CN115934581B CN202310214108.XA CN202310214108A CN115934581B CN 115934581 B CN115934581 B CN 115934581B CN 202310214108 A CN202310214108 A CN 202310214108A CN 115934581 B CN115934581 B CN 115934581B
- Authority
- CN
- China
- Prior art keywords
- target
- information
- memory
- register
- page
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
Abstract
本申请实施例提供一种跨进程内存的处理方法及系统,涉及终端安全技术领域。该跨进程内存的处理方法包括:确定安全业务进程和目标进程;获取所述目标进程的目标寄存器信息;获取所述目标进程的目标内存地址范围信息;根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息;获取所述安全业务进程的安全业务寄存器信息;根据所述安全业务寄存器信息获取空闲索引位置;将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息;将所述索引信息传递至所述安全业务进程,通知所述安全业务进程已完成映射。该方法可以实现跨进程读写,实现安全业务的高效实现、减少资源占用、提高运行效率的技术效果。
Description
技术领域
本申请涉及终端安全技术领域,具体而言,涉及一种跨进程内存的处理方法、系统、电子设备及计算机可读存储介质。
背景技术
目前,在一个进程获取目标进程的数据的过程中,一般是直接在目标进程中将该数据、以及将该数据占用的内存直接拷贝进来,不仅占用自身的内存,而且在此过程中中央处理器(CPU,central processing unit)占用率过高,从而导致系统运行较慢;此外,在内联钩子(inline hook)的过程中,向目标进程放进代码的过程会被目标进程感知,从而进一步降低系统的运行效率。
发明内容
本申请实施例的目的在于提供一种跨进程内存的处理方法、系统、电子设备及计算机可读存储介质,可以实现跨进程读写,实现安全业务的高效实现、减少资源占用、提高运行效率的技术效果。
第一方面,本申请实施例提供了一种跨进程内存的处理方法,包括:
确定安全业务进程和目标进程;
获取所述目标进程的目标寄存器信息;
获取所述目标进程的目标内存地址范围信息;
根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息;
获取所述安全业务进程的安全业务寄存器信息;
根据所述安全业务寄存器信息获取空闲索引位置;
将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息;
将所述索引信息传递至所述安全业务进程,通知所述安全业务进程已完成映射,所述安全业务进程通过所述索引信息构造生成内存线性地址,所述内存线性地址用于访问被映射的所述目标进程的内存。
在上述实现过程中,该跨进程内存的处理方法通过目标进程的目标寄存器信息和目标内存地址范围信息,确定被映射线性地址的页信息,进而将被映射线性地址的页信息写入安全业务进程的空闲索引位置、实现在安全业务进程的内存映射目标进程的内存;从而,该跨进程内存的处理方法通过操作页表的方式,实现安全业务进程的内存映射目标进程已占用的内存,安全业务进程就可以像读写自己的内存一样去读写目标进程的内存,从而高效的实现相关安全业务;从而,该跨进程内存的处理方法可以实现跨进程读写,实现安全业务的高效实现、减少资源占用、提高运行效率的技术效果。
进一步地,所述获取所述目标进程的目标寄存器信息的步骤,包括:
遍历所述目标进程的EPROCESS链表,获取所述目标进程的EPROCESS对象;
通过所述EPROCESS对象获取所述目标进程的KPROCESS对象;
通过所述KPROCESS对象获取DirectoryTableBase字段;
基于所述DirectoryTableBase字段确定所述目标寄存器信息,所述目标寄存器信息包括所述目标进程CR3寄存器的值。
进一步地,在根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息的步骤之前,包括:
根据所述目标进程的内存地址结构和所述目标内存地址范围确定所述目标PML4索引。
进一步地,所述被映射线性地址的页信息包括Directory Ptr页框号信息,所述根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息的步骤,包括:
根据所述目标进程CR3寄存器的值获得目标PML4目录的地址;
根据所述目标PML4索引对所述目标PML4目录的地址进行查找,获得所述目标内存地址范围信息对应的Directory Ptr页框号信息。
进一步地,将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息的步骤,包括:
将所述Directory Ptr页框号信息写入所述空闲索引位置,生成索引信息;
调用INVLPG指令刷新所述安全业务进程的TLB缓存。
在上述实现过程中,通过调用预设指令刷新安全业务进程的TLB缓存,从而可以防止老的TLB缓存干扰地址映射。
进一步地,在获取所述目标进程的目标寄存器信息的步骤之前,所述方法还包括:
在内核中安装预设驱动,通过所述预设驱动访问所述安全业务进程的页表和所述目标进程的页表。
第二方面,本申请实施例提供了一种跨进程内存的处理系统,包括:
进程确定模块,用于确定安全业务进程和目标进程;
目标寄存器模块,用于获取所述目标进程的目标寄存器信息;
目标内存地址模块,用于获取所述目标进程的目标内存地址范围信息;
页信息模块,用于根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息;
安全业务寄存器模块,用于获取所述安全业务进程的安全业务寄存器信息;
空闲索引模块,用于根据所述安全业务寄存器信息获取空闲索引位置;
写入模块,用于将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息;将所述索引信息传递至所述安全业务进程,通知所述安全业务进程已完成映射,所述安全业务进程通过所述索引信息构造生成内存线性地址,所述内存线性地址用于访问被映射的所述目标进程的内存。
进一步地,所述目标寄存器模块具体用于:遍历所述目标进程的EPROCESS链表,获取所述目标进程的EPROCESS对象;通过所述EPROCESS对象获取所述目标进程的KPROCESS对象;通过所述KPROCESS对象获取DirectoryTableBase字段;基于所述DirectoryTableBase字段确定所述目标寄存器信息,所述目标寄存器信息包括所述目标进程CR3寄存器的值。
进一步地,所述跨进程内存的处理系统还包括索引模块,所述索引模块用于:根据所述目标进程的内存地址结构和所述目标内存地址范围确定所述目标PML4索引。
进一步地,所述被映射线性地址的页信息包括Directory Ptr页框号信息,所述页信息模块具体用于:根据所述目标进程CR3寄存器的值获得目标PML4目录的地址;根据所述目标PML4索引对所述目标PML4目录的地址进行查找,获得所述目标内存地址范围信息对应的Directory Ptr页框号信息。
进一步地,所述写入模块还用于将所述Directory Ptr页框号信息写入所述空闲索引位置,生成索引信息;调用INVLPG指令刷新所述安全业务进程的TLB缓存。
进一步地,所述跨进程内存的处理系统还包括驱动模块,所述驱动模块用于:在内核中安装预设驱动,通过所述预设驱动访问所述安全业务进程的页表和所述目标进程的页表。
第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
第四方面,本申请实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
第五方面,本申请实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
本申请公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请公开的上述技术即可得知。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种跨进程内存的处理方法的流程示意图;
图2为本申请实施例提供的另一种跨进程内存的处理方法的流程示意图;
图3为本申请实施例提供的获取目标进程的目标寄存器信息的流程示意图;
图4为本申请实施例提供的一种页表的结构示意图;
图5为本申请实施例提供的跨进程内存的处理系统的结构框图;
图6为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请实施例提供了一种跨进程内存的处理方法、系统、电子设备及计算机可读存储介质,可以应用于安全业务的跨进程内存读写过程中;该跨进程内存的处理方法通过目标进程的目标寄存器信息和目标内存地址范围信息,确定被映射线性地址的页信息,进而将被映射线性地址的页信息写入安全业务进程的空闲索引位置、实现在安全业务进程的内存映射目标进程的内存;从而,该跨进程内存的处理方法通过操作页表的方式,实现安全业务进程的内存映射目标进程已占用的内存,安全业务进程就可以像读写自己的内存一样去读写目标进程的内存,从而高效的实现相关安全业务;从而,该跨进程内存的处理方法可以实现跨进程读写,实现安全业务的高效实现、减少资源占用、提高运行效率的技术效果。
请参见图1,图1为本申请实施例提供的一种跨进程内存的处理方法的流程示意图,该跨进程内存的处理方法包括如下步骤:
S100:确定安全业务进程和目标进程。
示例性地,安全业务进程就是执行内存读写的进程,而目标进程是内存被读写的进程。
S200:获取目标进程的目标寄存器信息。
示例性地,在内核中安装一个预设的驱动程序,通过该驱动程序,可以操纵安全业务进程和目标进程的页表,从而获取相应的目标寄存器信息、目标内存地址范围信息、安全业务寄存器信息等。
S300:获取目标进程的目标内存地址范围信息。
S400:根据目标寄存器信息和目标内存地址范围信息,获得被映射线性地址的页信息。
S500:获取安全业务进程的安全业务寄存器信息。
S600:根据安全业务寄存器信息获取空闲索引位置。
S700:将被映射线性地址的页信息写入空闲索引位置,生成索引信息;
S800:将索引信息传递至安全业务进程,通知安全业务进程已完成映射,安全业务进程通过索引信息构造生成内存线性地址,内存线性地址用于访问被映射的目标进程的内存。
示例性地,该跨进程内存的处理方法通过目标进程的目标寄存器信息和目标内存地址范围信息,确定被映射线性地址的页信息,进而将被映射线性地址的页信息写入安全业务进程的空闲索引位置、实现在安全业务进程的内存映射目标进程的内存;从而,该跨进程内存的处理方法通过操作页表的方式,实现安全业务进程的内存映射目标进程已占用的内存,安全业务进程就可以像读写自己的内存一样去读写目标进程的内存,从而高效的实现相关安全业务;从而,该跨进程内存的处理方法可以实现跨进程读写,实现安全业务的高效实现、减少资源占用、提高运行效率的技术效果。
请参见图2,图2为本申请实施例提供的另一种跨进程内存的处理方法的流程示意图。
请参见图3,图3为本申请实施例提供的获取目标进程的目标寄存器信息的流程示意图。
示例性地,S200:获取目标进程的目标寄存器信息的步骤,包括:
S210:遍历目标进程的EPROCESS链表,获取目标进程的EPROCESS对象;
S220:通过EPROCESS对象获取目标进程的KPROCESS对象;
S230:通过KPROCESS对象获取DirectoryTableBase字段;
S240:基于DirectoryTableBase字段确定目标寄存器信息,目标寄存器信息包括目标进程CR3寄存器的值。
示例性地,通过S210至S240,可以读取目标进程CR3寄存器的值,即确定目标寄存器信息。
示例性地,在S400:根据目标寄存器信息和目标内存地址范围信息,获得被映射线性地址的页信息的步骤之前,包括:
S410:根据目标进程的内存地址结构和目标内存地址范围确定目标PML4索引。
示例性地,被映射线性地址的页信息包括Directory Ptr页框号信息,S400:根据目标寄存器信息和目标内存地址范围信息,获得被映射线性地址的页信息的步骤,包括:
S420:根据目标进程CR3寄存器的值获得目标PML4目录的地址;
S430:根据目标PML4索引对目标PML4目录的地址进行查找,获得目标内存地址范围信息对应的Directory Ptr页框号信息。
示例性地,通过目标内存地址范围信息确定需要读写的内存地址范围之后,进而确定要被映射的线性地址的页:根据目标进程的内存地址结构可以推算出被映射的页在哪一个PML4索引下,最后通过上一步获取到的目标寄存器信息(如:CR3寄存器的值)找到PML4目录的地址,再通过刚刚确定的PML4索引,得到对应的Directory Ptr的页框号,从而获得目标页框号信息。
示例性地,S700:将被映射线性地址的页信息写入空闲索引位置,生成索引信息的步骤,包括:
S710:将Directory Ptr页框号信息写入空闲索引位置,生成索引信息;
S720:调用INVLPG指令刷新安全业务进程的TLB缓存。
示例性地,通过调用预设指令刷新安全业务进程的TLB缓存,从而可以防止老的TLB缓存干扰地址映射。
示例性地,在S200:获取目标进程的目标寄存器信息的步骤之前,方法还包括:
S110:在内核中安装预设驱动,通过预设驱动访问安全业务进程的页表和目标进程的页表。
示例性地,在本申请实施例中,通过操纵页表(Page Table)来实现在进程A的内存中映射进程B已占用的内存。其中进程A为安全业务所在的进程,进程B为系统上正在运行的任意用户进程,将进程B的内存映射给进程A后,进程A就可以像读写自己的内存一样去读写进程B的内存,从而高效的实现一些安全业务。
具体地,进程A的内存中映射进程B已占用的内存示例如下:(1)扫描进程B的内存;(2)在进程B的内存中执行诸如hook等修改操作;(3)通过内存监控进程B的运行时,需要让进程A拥有对进程B读写的能力。此时可以通过对页表(Page Table)进行一些特殊操作,让进程B的内存映射到进程A的虚拟地址空间中,从而让进程A有能力直接读写进程B的内存。
请参见图4,图4为本申请实施例提供的一种页表的结构示意图。
在一些实施方式中,本申请实施例提供的跨进程内存的处理方法,以上的技术目标限定于Intel IA32 64bit平台的Windows操作系统;需要注意的是,此处仅作为示例而非限定,可以根据实际需要采用其他规格地操作系统。
示例性地,在本申请实施例中,通过在内核中安装预设驱动,通过预设访问目标进程的CR3,并进一步得到页表中PML4的物理地址;计算需要被访问的目标进程的内存的地址范围(起始地址+长度)对应的PML4索引;目标进程PML4的物理地址+PML4索引得到需要关注的PML4条目;在安全业务进程的PML4中找一个空闲的索引位置,并填入上面得到的PML4条目。
示例性地,在Intel的IA32平台上,存在四个常用的内存地址概念:(1)物理地址(Physical Address);(2)线性地址(Linear Address);(3)虚拟地址(Virtual Address);(4)逻辑地址(Logical Address)。本申请实施例中会涉及其中的两个:线性地址和物理地址。
示例性地,物理地址即为安装在主板上的内存条(以及其他设备)在硬件上被分配的地址,内存条中每一个字节的位置都拥有一个地址;用来表示一段内存的地址范围通常被称为“地址空间(Address Space)”。
示例性地,线性地址是程序在访问内存的时候实际使用的地址,一般情况下程序不会直接使用物理地址来访问内存,而是由CPU和操作系统维护一个线性地址,这个线性地址是把不连续的物理地址映射成一段连续的地址空间从而形成的。
示例性地,现代操作系统中不同的进程都拥有自己独立的线性地址空间,即进程1和进程2会拥有两个不同的物理地址到线性地址的映射关系,在进程1的内存中进行任何读写操作均与进程2无关。但进程1和进程2实际上使用的是同一个物理地址空间。
示例性地,页表(Page Table)是CPU和操作系统维护的用来进行地址映射的数据结构,它记录了线性地址空间到物理地址空间的映射关系。当程序需要访问一个线性地址时,CPU中的MMU(Memory Management Unit)会查询页表,获得对应的物理地址,最后实现对内存的访问;
为了说明页表的工作原理,这里会涉及几个额外的概念:(1)页(Page);(2)页框(Page Frame);(3)地址结构(Address Structure)。
示例性地,物理地址会被按4KB为单位分为若干个地址块,每一个地址块就是页框,系统会给每一个页框分配一个页框号。页表在64bit Windows系统中分为四级,每一级的目录中都是存储着下一级目录的页框号直到最后一级,最后一级目录中存储的是被映射的物理内存的页框号。
示例性地,线性地址中每一个页框映射过来的内存区域被称为页。64bit线性地址中实际被Windows使用的有48bit,这48bit的地址从高位到低位被分为五部分:(1)PXE(PML4,9bit);(2)PPE(Directory Ptr, 9bit);(3)PDE(Directory,9bit);(4)PTE(Table,9bit);(5)页内偏移(Offset,12bit)。前四部分可以通过页表来确定出被映射的页框号,在找到页框后,再通过最后一部分的页内偏移就可以定位到具体的物理内存地址。
示例性地,页表的功能是完成上述的“通过前四部分映射到页框号”的过程。程序在运行时,CR3寄存器的高40bit会存储PML4目录的物理地址,PML4目录中存储了若干Directory Ptr目录的页框号,通过一个给定的PML4值就可以找到一个确定的DirectoryPtr目录;Directory Ptr目录中又存储了若干Directory目录的页框号,通过给定的PML4 +Directory Ptr就可以找到一个确定的Directory目录;Directory目录中又存储了若干Table目录的页框号,通过给定的PML4 + Directory Ptr + Directory就可以找到一个确定的Table目录;Table目录中又存储了若干被映射为页的页框的页框号,通过给定的PML4+ Directory Ptr + Directory + Table就可以找到一个确定的页框;最后再通过页内偏移来在页框内确定具体的地址,从而通过给定的PML4 + Directory Ptr + Directory +Table + Offset来找到了确定的物理地址。
以上为64bit Windows系统中页表查找的流程。而PML4(9bit) + Directory Ptr(9bit) + Directory(9bit) + Table(9bit) + Offset(12bit)这样的线性地址组成方式通常被称为地址结构。
示例性地,TLB(Translation Lookaside Buffer)是CPU内部的一块用于加速页表查找过程的缓存,TLB的具体结构对于操作系统以及上面运行的程序来说是透明的,TLB会自动把上一次完成的页表查询的结果记录下来,当下一次需要查询同一个页的物理地址时CPU就会直接从TLB中获取结果,免除了繁琐的页表查询过程。
在本申请实施例描述的操作过程中,需要人为刷新TLB,来让老的TLB失效,以保证新的内存映射关系不会被老的TLB缓存影响。
在一些实施方式中,结合图1至图3,本申请实施例提供的跨进程内存的处理方法,其具体的流程示例如下:
(1)首先,确定“安全业务进程”和“目标进程”,其中“安全业务进程”就是执行内存读写的进程,而“目标进程”是内存被读写的进程;
(2)然后需要在内核中安装一个驱动程序,此驱动程序负责操纵“安全业务进程”和“目标进程”的页表。此驱动程序需要读取“目标进程”CR3寄存器的值,读取方法如下:
1)遍历EPROCESS链表,找到“目标进程”的EPROCESS对象;
2)通过EPROCESS获取“目标进程”的KPROCESS对象;
3)读取KPROCESS对象中的DirectoryTableBase字段,此字段的值等于“目标进程”CR3寄存器的值;
(3)随后确定需要读写的内存地址范围,进而确定要被映射的线性地址的页。根据“目标进程”的内存地址结构可以推算出被映射的页在哪一个PML4索引下。最后通过上一步获取到的CR3寄存器的值找到PML4目录的地址,再通过刚刚确定的PML4索引,得到对应的Directory Ptr的页框号;
(4)再按上述步骤(2)相同的方式读取“安全业务进程”的CR3寄存器的值;
(5)通过“安全业务进程”的CR3寄存器的值获取PML4目录的地址,并在其中搜寻空闲的索引位置;
(6)如果没找到空闲的索引位置,则映射失败,退出映射程序;如果找到了空闲的索引位置,则进入下一步;
(7)把从步骤(3)获取到的Directory Ptr的页框号写入上一步中找到的PML4目录的空闲索引位置,并记录下这个索引;
(8)通知“安全业务进程”已完成映射,并把上一步中记录下的索引传递给“安全业务进程”;
(9)调用INVLPG指令刷新“安全业务进程”的TLB,防止老的TLB缓存干扰地址映射;
(10)“安全业务进程”通过上一步中得到的索引来构造内存线性地址,此线性地址可以用来访问上述步骤中被映射的“目标进程”的内存。
请参见图5,图5为本申请实施例提供的跨进程内存的处理系统的结构框图,该跨进程内存的处理系统包括:
进程确定模块100,用于确定安全业务进程和目标进程;
目标寄存器模块200,用于获取目标进程的目标寄存器信息;
目标内存地址模块300,用于获取目标进程的目标内存地址范围信息;
页信息模块400,用于根据目标寄存器信息和目标内存地址范围信息,获得被映射线性地址的页信息;
安全业务寄存器模块500,用于获取安全业务进程的安全业务寄存器信息;
空闲索引模块600,用于根据安全业务寄存器信息获取空闲索引位置;
写入模块700,用于将被映射线性地址的页信息写入空闲索引位置,生成索引信息;将索引信息传递至安全业务进程,通知安全业务进程已完成映射,安全业务进程通过索引信息构造生成内存线性地址,内存线性地址用于访问被映射的目标进程的内存。
示例性地,目标寄存器模块200具体用于:遍历目标进程的EPROCESS链表,获取目标进程的EPROCESS对象;通过EPROCESS对象获取目标进程的KPROCESS对象;通过KPROCESS对象获取DirectoryTableBase字段;基于DirectoryTableBase字段确定目标寄存器信息,目标寄存器信息包括目标进程CR3寄存器的值。
示例性地,跨进程内存的处理系统还包括索引模块,索引模块用于:根据目标进程的内存地址结构和目标内存地址范围确定目标PML4索引。
示例性地,被映射线性地址的页信息包括Directory Ptr页框号信息,页信息模块400具体用于:根据目标进程CR3寄存器的值获得目标PML4目录的地址;根据目标PML4索引对目标PML4目录的地址进行查找,获得目标内存地址范围信息对应的Directory Ptr页框号信息。
示例性地,写入模块700还用于将Directory Ptr页框号信息写入空闲索引位置,生成索引信息;调用INVLPG指令刷新安全业务进程的TLB缓存。
示例性地,跨进程内存的处理系统还包括驱动模块,驱动模块用于:在内核中安装预设驱动,通过预设驱动访问安全业务进程的页表和目标进程的页表。
需要注意的是,本申请实施例提供的跨进程内存的处理系统与图1至图3所示的方法实施例相对应,为避免重复,此处不再赘述。
本申请还提供一种电子设备,请参见图6,图6为本申请实施例提供的一种电子设备的结构框图。电子设备可以包括处理器510、通信接口520、存储器530和至少一个通信总线540。其中,通信总线540用于实现这些组件直接的连接通信。其中,本申请实施例中电子设备的通信接口520用于与其他节点设备进行信令或数据的通信。处理器510可以是一种集成电路芯片,具有信号的处理能力。
上述的处理器510可以是通用处理器,包括中央处理器(CPU,CentralProcessingUnit)、网络处理器(NP,NetworkProcessor)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器510也可以是任何常规的处理器等。
存储器530可以是,但不限于,随机存取存储器(RAM,RandomAccessMemory),只读存储器(ROM,Read Only Memory),可编程只读存储器(PROM ,Programmable Read-OnlyMemory),可擦除只读存储器(EPROM ,Erasable Programmable Read-Only Memory),电可擦除只读存储器(EEPROM ,Electric Erasable Programmable Read-Only Memory)等。存储器530中存储有计算机可读取指令,当计算机可读取指令由处理器510执行时,电子设备可以执行上述图1至图3方法实施例涉及的各个步骤。
可选地,电子设备还可以包括存储控制器、输入输出单元。
存储器530、存储控制器、处理器510、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线540实现电性连接。处理器510用于执行存储器530中存储的可执行模块,例如电子设备包括的软件功能模块或计算机程序。
输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。
可以理解,图6所示的结构仅为示意,所述电子设备还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现方法实施例所述的方法,为避免重复,此处不再赘述。
本申请还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种跨进程内存的处理方法,其特征在于,包括:
确定安全业务进程和目标进程;
获取所述目标进程的目标寄存器信息;
获取所述目标进程的目标内存地址范围信息;
根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息;
获取所述安全业务进程的安全业务寄存器信息;
根据所述安全业务寄存器信息获取空闲索引位置;
将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息;
将所述索引信息传递至所述安全业务进程,通知所述安全业务进程已完成映射,所述安全业务进程通过所述索引信息构造生成内存线性地址,所述内存线性地址用于访问被映射的所述目标进程的内存。
2.根据权利要求1所述的跨进程内存的处理方法,其特征在于,所述获取所述目标进程的目标寄存器信息的步骤,包括:
遍历所述目标进程的EPROCESS链表,获取所述目标进程的EPROCESS对象;
通过所述EPROCESS对象获取所述目标进程的KPROCESS对象;
通过所述KPROCESS对象获取DirectoryTableBase字段;
基于所述DirectoryTableBase字段确定所述目标寄存器信息,所述目标寄存器信息包括所述目标进程CR3寄存器的值。
3.根据权利要求2所述的跨进程内存的处理方法,其特征在于,在根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息的步骤之前,包括:
根据所述目标进程的内存地址结构和所述目标内存地址范围确定目标PML4索引。
4.根据权利要求3所述的跨进程内存的处理方法,其特征在于,所述被映射线性地址的页信息包括Directory Ptr页框号信息,所述根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息的步骤,包括:
根据所述目标进程CR3寄存器的值获得目标PML4目录的地址;
根据所述目标PML4索引对所述目标PML4目录的地址进行查找,获得所述目标内存地址范围信息对应的Directory Ptr页框号信息。
5.根据权利要求4所述的跨进程内存的处理方法,其特征在于,将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息的步骤,包括:
将所述Directory Ptr页框号信息写入所述空闲索引位置,生成索引信息;
调用INVLPG指令刷新所述安全业务进程的TLB缓存。
6.根据权利要求1至5任一项所述的跨进程内存的处理方法,其特征在于,在获取所述目标进程的目标寄存器信息的步骤之前,所述方法还包括:
在内核中安装预设驱动,通过所述预设驱动访问所述安全业务进程的页表和所述目标进程的页表。
7.一种跨进程内存的处理系统,其特征在于,包括:
进程确定模块,用于确定安全业务进程和目标进程;
目标寄存器模块,用于获取所述目标进程的目标寄存器信息;
目标内存地址模块,用于获取所述目标进程的目标内存地址范围信息;
页信息模块,用于根据所述目标寄存器信息和所述目标内存地址范围信息,获得被映射线性地址的页信息;
安全业务寄存器模块,用于获取所述安全业务进程的安全业务寄存器信息;
空闲索引模块,用于根据所述安全业务寄存器信息获取空闲索引位置;
写入模块,用于将所述被映射线性地址的页信息写入所述空闲索引位置,生成索引信息;将所述索引信息传递至所述安全业务进程,通知所述安全业务进程已完成映射,所述安全业务进程通过所述索引信息构造生成内存线性地址,所述内存线性地址用于访问被映射的所述目标进程的内存。
8.根据权利要求7所述的跨进程内存的处理系统,其特征在于,所述目标寄存器模块具体用于:
遍历所述目标进程的EPROCESS链表,获取所述目标进程的EPROCESS对象;
通过所述EPROCESS对象获取所述目标进程的KPROCESS对象;
通过所述KPROCESS对象获取DirectoryTableBase字段;
基于所述DirectoryTableBase字段确定所述目标寄存器信息,所述目标寄存器信息包括所述目标进程CR3寄存器的值。
9.一种电子设备,其特征在于,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至权利要求6任一项所述的跨进程内存的处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1至权利要求6任一项所述的跨进程内存的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310214108.XA CN115934581B (zh) | 2023-03-08 | 2023-03-08 | 一种跨进程内存的处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310214108.XA CN115934581B (zh) | 2023-03-08 | 2023-03-08 | 一种跨进程内存的处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115934581A CN115934581A (zh) | 2023-04-07 |
CN115934581B true CN115934581B (zh) | 2023-05-05 |
Family
ID=85838693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310214108.XA Active CN115934581B (zh) | 2023-03-08 | 2023-03-08 | 一种跨进程内存的处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934581B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657224A (zh) * | 2013-11-21 | 2015-05-27 | 华为技术有限公司 | 一种进程间通信的方法和装置 |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN112965805A (zh) * | 2021-03-25 | 2021-06-15 | 兴业数字金融服务(上海)股份有限公司 | 基于内存映射文件的跨进程异步任务处理方法及系统 |
CN115016894A (zh) * | 2022-06-02 | 2022-09-06 | 北京东土军悦科技有限公司 | 一种线程的内存访问方法、装置、设备及存储介质 |
CN115629882A (zh) * | 2022-10-28 | 2023-01-20 | 珠海一微半导体股份有限公司 | 多进程中的内存的管理方法 |
CN115658565A (zh) * | 2022-11-09 | 2023-01-31 | 海光信息技术股份有限公司 | 一种基于协处理器的内存操作方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599835B2 (en) * | 2018-02-06 | 2020-03-24 | Vmware, Inc. | 32-bit address space containment to secure processes from speculative rogue cache loads |
-
2023
- 2023-03-08 CN CN202310214108.XA patent/CN115934581B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657224A (zh) * | 2013-11-21 | 2015-05-27 | 华为技术有限公司 | 一种进程间通信的方法和装置 |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN112965805A (zh) * | 2021-03-25 | 2021-06-15 | 兴业数字金融服务(上海)股份有限公司 | 基于内存映射文件的跨进程异步任务处理方法及系统 |
CN115016894A (zh) * | 2022-06-02 | 2022-09-06 | 北京东土军悦科技有限公司 | 一种线程的内存访问方法、装置、设备及存储介质 |
CN115629882A (zh) * | 2022-10-28 | 2023-01-20 | 珠海一微半导体股份有限公司 | 多进程中的内存的管理方法 |
CN115658565A (zh) * | 2022-11-09 | 2023-01-31 | 海光信息技术股份有限公司 | 一种基于协处理器的内存操作方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115934581A (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7287124B2 (en) | Lazy flushing of translation lookaside buffers | |
US7669033B2 (en) | Pretranslating input/output buffers in environments with multiple page sizes | |
US10169244B2 (en) | Controlling access to pages in a memory in a computing device | |
CN113868155B (zh) | 一种内存空间扩展方法、装置及电子设备和存储介质 | |
US9146879B1 (en) | Virtual memory management for real-time embedded devices | |
KR102281928B1 (ko) | 가변 변환 색인 버퍼(tlb) 인덱싱 | |
CN112241310B (zh) | 页表管理、信息获取方法、处理器、芯片、设备及介质 | |
US10997078B2 (en) | Method, apparatus, and non-transitory readable medium for accessing non-volatile memory | |
JP2010134956A (ja) | 状況切換え環境中におけるアドレス変換技術 | |
US8347064B1 (en) | Memory access techniques in an aperture mapped memory space | |
US10884948B2 (en) | Replacing pointers with hashing in tree-based page table designs | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
CN114063934A (zh) | 数据更新装置、方法及电子设备 | |
CN115934581B (zh) | 一种跨进程内存的处理方法及系统 | |
CN107766259B (zh) | 页表缓存的访问方法、页表缓存、处理器芯片和存储单元 | |
JP2537550B2 (ja) | 仮想アドレスから物理アドレスへの翻訳機構ならびに仮想記憶空間を備えたコンピュ―タシステム及び翻訳バッファのロ―ディング方法 | |
US7571298B2 (en) | Systems and methods for host virtual memory reconstitution | |
TW201317780A (zh) | 虛擬機器記憶體的鑑識方法與電腦系統 | |
US11422947B2 (en) | Determining page size via page table cache | |
EP4386548A1 (en) | Resource management method and corresponding device | |
US20230103230A1 (en) | Translation lookaside buffer entry allocation system and method | |
CN112306392A (zh) | 用于寻址的方法、设备和系统 | |
CN117971716A (zh) | 缓存管理方法、设备、装置和存储介质 | |
CN116955229A (zh) | 一种地址翻译方法、装置、电子设备及可读存储介质 | |
CN112527698A (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 |