在我的程序中禁用随机内存地址生成

在我的程序中禁用随机内存地址生成


我正在阅读“开发的艺术”,并想尝试一些实验,包括读取和写入各种内存地址。我创建了一些简单的程序,并尝试通过各种技巧覆盖它们的变量,问题是这些变量的地址在每次运行程序时不断变化,使这一切变得极其复杂。
我知道这是出于安全原因,但我想知道是否可以出于学习目的禁用它。这是我的系统和 gcc 的信息:

blackbear@blackbear-laptop:~$ uname -a
Linux blackbear-laptop 2.6.32-30-generic #59-Ubuntu SMP Tue Mar 1 21:30:21 UTC 2011 i686 GNU/Linux
blackbear@blackbear-laptop:~$ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

blackbear@blackbear-laptop:~$ 

答案1

如果我没记错的话,应该可以通过 proc 文件系统禁用地址空间随机化:

echo 0 > /proc/sys/kernel/randomize_va_space

显然,你必须对此有根有据。

答案2

临时更改设置的另一个选项是通过 sysctl 命令。

sysctl -w kernel.randomize_va_space=0

要使此设置在系统重新引导后永久且有效,请将该选项添加到/etc/sysctl.conf。默认值应该是 2 最安全

相关内容