私は「The Art of Development」を読んでおり、さまざまなメモリアドレスの読み書きに関連するいくつかの実験を試してみたいと思います。私はいくつかの簡単なプログラムを作成し、変数を上書きするためにさまざまなトリックを試しました。問題は、プログラムを実行するたびにこれらの変数のアドレスが変更され続けるため、これは非常に複雑であることです。
セキュリティ上の理由であることはわかりますが、学習目的で無効にできるかどうかを知りたいです。私のシステムと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ファイルシステムを介してアドレス空間のランダム化を無効にすることが可能でなければなりません。
エコ0> /proc/sys/kernel/randomize_va_space
明らかに、あなたはこれに基づいているべきです。
答え2
設定を一時的に変更するもう1つのオプションは、sysctlコマンドを使用することです。
sysctl -w kernel.randomize_va_space=0
この設定をシステムの再起動時に永続的かつ効果的に適用するには、このオプションをに追加します/etc/sysctl.conf
。デフォルトは最も安全な2でなければなりません。