2010-09-19 5 views

ответ

8

Нет, не обязательно. Точка входа ПЭ определяются в IMAGE_OPTIONAL_HEADER структуры, в поле AddressOfEntryPoint:

Указатель на функцию точки входа, по отношению к базовому адресу образа. Для исполняемых файлов это начальный адрес. Для драйверов устройств это адрес функции инициализации. Функция точки входа является необязательной для библиотек DLL. Когда нет точки входа, этот член равен нулю.

Линкер может установить это как бы то, что он хочет быть, до тех пор, пока его действительное относительное виртуальное смещение в PE. Некоторые компиляторы и компоновщики могут иметь соглашение о вводе точки входа в начало раздела text/code, но для него нет требований к формату ОС или PE.

+1

Я обнаружил, что я не смог установить 'AddressOfEntryPoint' произвольно при использовании Windows 7. Я создаю небольшие исполняемые файлы без каталогов данных или таблиц разделов. Из проб и ошибок я обнаружил, что запись может указывать непосредственно после заголовка PE, но не с небольшим дополнительным смещением. –