访问物理ram地址



在学习作弊和反作弊的工作原理时,我对如何访问物理(非虚拟)RAM地址产生了兴趣,例如,在windows中,mmallocatecontiguoumemory用于从物理地址读取(在某些示例中)。但是如何访问物理内存地址的工作(我没有发现任何asm/C的例子,不使用nativeApi或WinApi)。我认为windows控制了所有的内存,只提供shell来使用它-但在不同的操作系统和windows中,访问内存也以某种方式实现,它是如何工作的,是否有可能在没有winapi/nativeApi的情况下读取物理内存[memtest works somewhat))]

当操作系统启动时,它启用虚拟内存。从那时起,对内存(地址空间)的每次访问都要经过CPU的MMU。
控制MMU是一种特权操作,只有特权代码(读取:操作系统)可以改变MMU配置。
MMU配置控制虚拟地址映射到哪个物理地址。

当你要求Windows"读取"时一个物理内存范围,它实际上设置MMU,以便返回的虚拟范围映射到给定的物理内存。然后像往常一样读取虚拟内存。
虚拟内存不是物理内存旁边的,它位于物理内存之上。
它总是在那里。

如果没有操作系统的帮助,用户空间程序无法访问物理内存,一旦启用,CPU将始终使用虚拟内存。
事实上,这会带来安全风险,因为它绕过了虚拟内存在物理内存之上提供的安全机制(内存隔离)。

最新更新