Linux

在我的程序中禁用隨機記憶體地址生成

  • June 7, 2021

我正在閱讀“剝削的藝術”,並想嘗試一些實驗,包括讀取和寫入各種記憶體地址。我創建了一些簡單的程序並嘗試通過各種 hack 覆蓋它們的變數,問題是每次執行程序時這些變數的地址都會不斷變化,這使得這一切變得非常複雜。

我知道這是出於安全原因,但我想知道是否可以出於學習目的禁用它。這是我的系統和 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:~$ 

如果我沒記錯的話,應該可以通過 proc 文件系統禁用地址空間隨機化:

迴聲 0 > /proc/sys/kernel/randomize_va_space

顯然,您必須為此紮根。

臨時更改設置的另一個選項是通過 sysctl 命令。

sysctl -w kernel.randomize_va_space=0

要在系統重新啟動後使此設置永久有效,請將選項添加到/etc/sysctl.conf. 預設值應為 2 以獲得最安全

引用自:https://unix.stackexchange.com/questions/12052