Windows虚拟内存和内核模式

时间:2014-04-30 19:27:49

标签: c++ c windows memory internals

我知道在32位架构中,内核模式虚拟内存映射在0x800000000xFFFFFFFF之间。

它包含一些结构EPROCESSETHREAD ...等,以及当前进程的页面目录和表。

尝试获取某个函数的虚拟地址时,ntoskrnl让我们说“nt!NtReadFile”我发现它已经映射到内核虚拟地址0x89421130中。

我试图在RET之后使用随机指令修补一些nops,当切换到另一个进程上下文时,我发现我放的指令仍在那里。

这是否意味着加载Ntoskrnl的虚拟内存在每个进程虚拟地址空间中保持不变?

感谢。

1 个答案:

答案 0 :(得分:3)

  

这是否意味着加载Ntoskrnl的虚拟内存在每个进程虚拟地址空间中保持不变?

是。在正在运行的Windows系统上,内存中有一个内核副本,并且完全相同的内核地址空间(即32位上的0x80000000-0xFFFFFFFF)映射到每个进程。