4.3.1
四种情况创建新进程并调用MmInitializeProcessAddressSpace, 调用完这个函数的时候,一个进程的地址空间基本建立了,
可执行文件的映像和ntdll.dll(内存区对象)已经被映射到恰当的虚拟地址范围内。
介绍到 在新进程的地址空间中,会克隆系统空间的页目录到新进程的页目录.
KeAttachProcess() 与 KeDetachProcess()
KeAttachProcess()函数的执行的时候,会把当前线程附载在新的的进程对象上,关键是把CR3切换为新进程的页目录
KeDetachProcess 把线程恢复到父进程!
4.3.2
每个进程都有自己独立的页目录,前半部分对应于0x0 -- 0x7ff fffff 是每个进程私有的,后半部分是拷贝系统空间的页目录。
4.3.3 VAD来管理0x0 -- 0x7ff fffff 空间!
4.3.4 在VAD的节点中有一种重要的类型 内存区对象。 内存区对象是windows 平台 ,两个或多个进程之间共享内存的一种常用方法。
它可以被映射到系统的页面文件或者其他文件上!
内存区对象分种:一种建立在页面文件的基础上,称为:页面文件支撑的内存区
另外一种被映射到其他文件,称为文件支撑的内存区,或者文件映射对象