Что делает Windows до вызова Main ()?
Windows должна что-то сделать, чтобы проанализировать PE-заголовок, загрузить исполняемый файл в память и передать аргументы командной строкиmain()
.
Используя OllyDbg, я установил отладчик на функцию main (), чтобы можно было просматривать стек вызовов:
Кажется, что символы отсутствуют, поэтому мы не можем получить имя функции, только адрес ее памяти, как видно. Тем не менее, мы можем видеть, что вызывающий главныйkernel32.767262C4
, который является вызываемым абонентомntdll.77A90FD9
, Внизу стопки мы видим ВОЗВРАТntdll.77A90FA4
я полагаю, что это первая функция, которая будет вызвана для запуска исполняемого файла. Кажется, что примечательные аргументы, передаваемые этой функции, - это адрес обработчика структурированных исключений Windows и точка входа в исполняемый файл.
Итак, как именно эти функции в конечном итоге загружают программу в память и готовят ее к выполнению точкой входа? Это то, что отладчик показывает весь процесс, выполняемый ОС доmain()
?