Linux 内核配置中 CONFIG_RANDOMIZE_BASE 和 CONFIG_RANDOMIZE_MEMORY 之间的区别

Linux 内核配置中 CONFIG_RANDOMIZE_BASE 和 CONFIG_RANDOMIZE_MEMORY 之间的区别

说这RANDOMIZE_BASE是针对 KASLR 的,它随机化物理和虚拟地址,这在 32 位中是显而易见的,在 64 位中是可以理解的。

但它RANDOMIZE_MEMORY到底是做什么的呢?这说:

随机化内核内存部分的基虚拟地址(物理内存映射、vmalloc 和 vmemmap)。

这是什么意思?这是否意味着不同的部分以某种方式被分割并且不是在一起而是在它们之间有一些空间?

答案1

RANDOMIZE_BASE是大多数架构上可用的功能随机化内核的虚拟和物理基地址

RANDOMIZE_MEMORY是 x86-64 特定的功能此外 page_offset_base随机化、vmalloc_base、的偏移量vmemmap_base,IE内核内存中物理映射的位置、空间vmalloc和虚拟内存映射。正如您从链接的内存映射中看到的那样,所有这些后面都有孔,这使得它们可以四处移动,而不必处理与内存中它们之前或之后的任何内容的重叠。

相关内容