ASLR(Address Space Layout Randomization) の実験をしてみた。
- こんなコードを書く。
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { char a; printf("%xn",(int)&a); return 0; }
- デフォルトのままでコンパイル/実行すると、実行結果が実行の度に毎回変わる。
- リンカーのオプションで「ランダム化されたベースアドレス」を「はい」から「いいえ」に変えてみる。
- この設定でコンパイルして実行すると、実行結果は毎回同じになる。
なるほどね…
有効にしていれば、実行のたびにアドレスが変わるから、バッファーオーバーフローがあっても任意のコードへのジャンプが難しくなるわけか・・・