windbgを使用している私のWindows 10マシンでプログラムを実行し、最初のブレークポイントでブレークさせます。スタックの物理的な底部のアドレス(TEBのstackBase)を取得し、rsp
の値をntdll!LdrInitializeThunk
から引きます。これは、スタックの「論理的な下」ことを示唆しているなど、あなたがntdll!RtlUserThreadStart
と同じことを行う場合は、同様の結果を得るスタックの「論理ボトム」と「物理ボトム」のオフセットがランダムなのはなぜですか?
0x600
0x9f0
0xa40
0x5d0
0x570
:私はちょうど同じプログラムで、この5回をした、と私は5つの異なる値を得ました多少無作為化されている。何故ですか?これはスタックの中に「ミニASLR」のようなものがありますか?これはどこに文書化されていますか?
誰かが詳細な回答を期待していましたが、FWIWプロセスの起動は本質的に予測不可能なようです。 Process Monitorを使用して特定の実行可能ファイルが起動したときに何が起こるのかを見ると、それは時々、ランダムに見えることがあります。私はなぜそれが本当にわからない。 –