/HIGHENTROPYVA (64 ビット ASLR のサポート)
実行可能ファイル イメージが高いエントロピの 64 ビット ASLR (Address Space Layout Randomization) をサポートするかどうかを指定します。
構文
$
解説
/HIGHENTROPYVA
は、ASLR が 64 ビットのアドレス空間全体を使用できるかどうかを示すように、"実行可能イメージ" ファイル (たとえば、.dll
や .exe
ファイル) のヘッダーを変更します。 有効にするには、実行可能ファイルと、それが依存するすべてのモジュールに対してオプションを設定します。 その後、64 ビットの ASLR をサポートするオペレーティング システムでは、64 ビットのランダム化された仮想アドレスを使用して、読み込み時に実行可能イメージのセグメントをリベースできます。 この大きいアドレス空間により、攻撃者は特定のメモリ領域の位置を推測することが困難となります。
既定では、/HIGHENTROPYVA
が 64 ビットの実行可能イメージに対して有効になります。 このオプションには、/LARGEADDRESSAWARE
が必要です。これは、64 ビット イメージでも既定で有効になっています。 /HIGHENTROPYVA
は、オプションがリンカーによって無視される 32 ビットの実行可能イメージには適用できません。 このオプションを明示的に無効にするには、/HIGHENTROPYVA:NO
を使用します。
読み込み時に /HIGHENTROPYVA
を有効にする場合は、/DYNAMICBASE
も有効にする必要があります。 /DYNAMICBASE
は既定で有効になり、Windows Vista 以降のオペレーティング システムで ASLR を有効にするために必要です。 それより前のバージョンの Windows では、このフラグは無視されます。
このリンカー オプションを Visual Studio で設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「Visual Studio で C++ コンパイラとビルド プロパティを設定する」をご覧ください。
[構成プロパティ]>[リンカー]>[コマンド ライン] プロパティ ページを選択します。
[追加オプション] で、
/HIGHENTROPYVA
または/HIGHENTROPYVA:NO
を入力します。