__security_init_cookie
グローバル セキュリティ クッキーを初期化します。
構文
void __security_init_cookie(void);
解説
グローバル セキュリティ クッキーは、/GS (バッファーのセキュリティ チェック) を指定してコンパイルされたコードおよび例外処理を使用するコードでバッファー オーバーランから保護するために使用されます。 オーバーランから保護されている関数を開始するときにクッキーはスタックに配置され、関数が終了するときにスタックの値がグローバルなクッキーと比較されます。 違いがある場合はバッファー オーバーランが発生したことを意味し、プログラムは直ちに終了します。
通常は、CRT の初期化時に、CRT によって __security_init_cookie
が呼び出されます。 CRT の初期化をバイパスする場合 (たとえば、エントリ ポイントの指定に使用 /ENTRY
する場合)、自分で呼び出す __security_init_cookie
必要があります。 呼び出されない場合 __security_init_cookie
、グローバル セキュリティ Cookie は既定値に設定され、バッファー オーバーラン保護が侵害されます。 攻撃者がこの既定のクッキー値を悪用してバッファー オーバーランのチェックをすり抜けることがあるため、独自のエントリ ポイントを定義するときには、常に __security_init_cookie
を呼び出すことをお勧めします。
__security_init_cookie
の呼び出しは、オーバーランから保護されている関数に入る前に行う必要があります。そうしないと、実際には発生していないバッファー オーバーランが検出されます。 詳細については、「C Runtime Error R6035」(C ランタイム エラー R6035) をご覧ください。
例
「C Runtime Error R6035」(C ランタイム エラー R6035) の例をご覧ください。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
__security_init_cookie |
<process.h> |
__security_init_cookie
は、標準の C ランタイム ライブラリの Microsoft 拡張機能です。 互換性の詳細については、「互換性」を参照してください。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示