windbg를 사용하여 Windows 10 컴퓨터에서 프로그램을 실행하고 초기 중단 점을 중단시킵니다. 나는 스택의 물리적 바닥 (TEB의 stackBase) 주소를 가져오고 rsp
값을 뺀 ntdll!LdrInitializeThunk
을 뺍니다. 난 그냥 같은 프로그램이 5 번했고, 나는 5 개 개의 다른 값을 가지고 : 이것은 스택의 "논리적 하단의"제안이 ntdll!RtlUserThreadStart
와 동일한 작업을 수행하는 경우왜 스택의 "논리적 하단"과 "물리적 하단"의 오프셋이 무작위입니까?
0x600
0x9f0
0xa40
0x5d0
0x570
당신은 등, 비슷한 결과를 얻을 수를 다소 임의적이다. 왜 그런가요? 이것은 스택 내부에 "미니 ASLR"과 같은 종류입니까? 어디에서 문서화되어 있습니까?
누군가가 자세한 대답을 원했지만 FWIW 프로세스 시작은 본질적으로 예측할 수없는 것 같습니다. Process Monitor를 사용하여 특정 실행 파일이 시작될 때 어떤 일이 일어나는지 살펴 보려면 시간이 지남에 따라 임의로 달라질 수 있습니다. 나는 이유를 정말로 모른다. –