Структура исполняемого PE файла. Механизмы загрузки исполняемого кода

Содержание

Слайд 2

Структура исполняемого PE файла Любой исполняемый файл программы в операционной системе

Структура исполняемого PE файла

Любой исполняемый файл программы в операционной системе windows

состоит из двух основных частей:
Слайд 3

Любой исполняемый файл программы в операционной системе windows состоит из двух

Любой исполняемый файл программы в операционной системе windows состоит из двух

основных частей:
Заголовка, содержащего всю необходимую служебную информацию использующуюся операционной системой для корректной загрузки программы в оперативную память и передачи ей управления (переход на так называемую точку входа в программу Еentry point)
Слайд 4

Секций, число секций может быть разным но всегда присутствуют как минимум

Секций, число секций может быть разным но всегда присутствуют как минимум

три:
секция исполняемого машинного кода - где представлены коды команд исполняемые в ходе выполнения программы
секция данных – секция в которой размещаются все константы используемые в программе (в том числе и строковые)

Структура исполняемого PE файла

Слайд 5

Секций, число секций может быть разным но всегда присутствуют как минимум

Секций, число секций может быть разным но всегда присутствуют как минимум

три:
секция импорта – где прописываются используемые программой сторонние (импортируемые) функции и указываются имена библиотек в которых расположена реализация этих функций.

Структура исполняемого PE файла

Слайд 6

Вернемся к заголовку. Надо отметить что заголовок содержит достаточно большой объем

Вернемся к заголовку. Надо отметить что заголовок содержит достаточно большой объем

информации, подробный анализ его содержимого мы разберем позднее. Сейчас остановимся лишь на общих моментах.

Структура исполняемого PE файла

Слайд 7

Заголовок состоит из пяти основных частей содержащих служебную информацию. Структура исполняемого PE файла

Заголовок состоит из пяти основных частей содержащих служебную информацию.

Структура исполняемого PE

файла
Слайд 8

Любой PE файл начинается с DOS заголовка, а тот в свою

Любой PE файл начинается с DOS заголовка, а тот в свою

очередь с двух «магических» чисел 0х4D 0x5A, эти числа соответствуют символам «MZ» - инициалы разработчика формата исполняемого файла Марка Збиковски.
Таким образом любой фай начинающийся с этих двух символов, будет восприниматься операционной системой как исполняемый файл!

Структура исполняемого PE файла

Слайд 9

Далее идет так называемая DOS заглушка – по сути микропрограмма предназначенная

Далее идет так называемая DOS заглушка – по сути микропрограмма предназначенная

для вывода одной единственной строчки на экран: «This program cannot be run in DOS mode». Эта микропрограмма добавлена для обратной совместимости и строчка появится при попытке запуска исполняемого файла в очень очень старой операционной системе MSDOS.

Структура исполняемого PE файла

Слайд 10

Далее следует PE заголовок который начинается с символов «PE»= 0х50 0х45

Далее следует PE заголовок который начинается с символов «PE»= 0х50 0х45

и содержит некоторую служебную информацию:

Структура исполняемого PE файла

Слайд 11

Далее следует PE заголовок который начинается с символов «PE»= 0х50 0х45

Далее следует PE заголовок который начинается с символов «PE»= 0х50 0х45

и содержит некоторую служебную информацию: количество секций в файле, тип процессора (используемая система команд), тип исполняемого файла (.exe , .dll …)

Структура исполняемого PE файла

Слайд 12

После PE заголовка идет опциальный заголовок который начинается с кода используемой

После PE заголовка идет опциальный заголовок который начинается с кода используемой

платформы х86 (0х01 0х0B) или х64 и содержит некоторую служебную информацию:

Структура исполняемого PE файла

Слайд 13

После PE заголовка идет опциальный заголовок который начинается с кода используемой

После PE заголовка идет опциальный заголовок который начинается с кода используемой

платформы х86 (0х01 0х0B) или х64 и содержит некоторую служебную информацию: адрес точки входа в программу (адрес первой команды программного кода), предпочтительный адрес загрузки программы (куда грузить в ОЗУ программу), версия Windows под которую написана программа, необходимый для загрузки объем оперативной памяти, тип подсистемы драйверов (консольное или оконное приложение) и.т.д…

Структура исполняемого PE файла