Windbg を使用して Windows 10 マシンでプログラムを実行し、最初のブレークポイントで中断させます。スタックの物理的な最下部 (TEB の stackBase) のアドレスを取得し、 のrsp
値を減算しますntdll!LdrInitializeThunk
。同じプログラムでこれを 5 回実行したところ、5 つの異なる値が得られました。
0x600
0x9f0
0xa40
0x5d0
0x570
などで同じことを行うと、同様の結果が得られますntdll!RtlUserThreadStart
。これは、スタックの「論理的な底」が多少ランダム化されていることを示唆しています。何故ですか?これは、スタック内のある種の「ミニ ASLR」ですか? これはどこかに文書化されていますか?