'cat /proc/self/maps' 返回的地址为什么以及如何在再次执行时发生变化
why and how do the addresses returned by 'cat /proc/self/maps' change when it's executed again
我正在尝试了解 linux 内存管理。
为什么 'cat /proc/self/maps' 返回的地址在再次执行时发生变化
user@notebook:/$ cat /proc/self/maps | grep heap
55dc94a7c000-55dc94a9d000 rw-p 00000000 00:00 0 [heap]
user@notebook:/$ cat /proc/self/maps | grep heap
562609879000-56260989a000 rw-p 00000000 00:00 0 [heap]
这是由于地址 Space 布局随机化,又名 ASLR。 Linux 每次都会在不同的位置加载代码和库,以使其更难利用缓冲区溢出等。
您可以使用
禁用它
echo 0 > /proc/sys/kernel/randomize_va_space
这将使地址每次都相同。然后您可以重新启用它:
echo 2 > /proc/sys/kernel/randomize_va_space
地址将再次随机化。
我正在尝试了解 linux 内存管理。
为什么 'cat /proc/self/maps' 返回的地址在再次执行时发生变化
user@notebook:/$ cat /proc/self/maps | grep heap
55dc94a7c000-55dc94a9d000 rw-p 00000000 00:00 0 [heap]
user@notebook:/$ cat /proc/self/maps | grep heap
562609879000-56260989a000 rw-p 00000000 00:00 0 [heap]
这是由于地址 Space 布局随机化,又名 ASLR。 Linux 每次都会在不同的位置加载代码和库,以使其更难利用缓冲区溢出等。
您可以使用
禁用它echo 0 > /proc/sys/kernel/randomize_va_space
这将使地址每次都相同。然后您可以重新启用它:
echo 2 > /proc/sys/kernel/randomize_va_space
地址将再次随机化。