gpt4 book ai didi

c++ - Windows 虚拟内存和内核模式

转载 作者:可可西里 更新时间:2023-11-01 10:06:07 24 4
gpt4 key购买 nike

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

它包含一些结构如 EPROCESS , ETHREAD ... 等等,还有当前进程的页面目录和表。

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

我尝试用随机指令在 RET 之后修补一些 nop,当切换到另一个进程上下文时,我发现我输入的指令仍然存在。

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

谢谢。

最佳答案

Does that mean that virtual memory where Ntoskrnl is loaded stays unchanged in every process virtual address space?

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

关于c++ - Windows 虚拟内存和内核模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23396475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com