Максимальный размер WIN64 PE-EXE (PE+)

dosprog

Постоянный
Мудрец
Сообщения
96
Реакции
492
Задался таким вопросом - есть ли ограничение размера 32 битами (4Gb max)
для исполняемых файлов WIN64 PE-EXE (PE+) ?

Судя по тому, что формат IMAGE_SECTION_HEADER у таких файлов такой же, как и у WIN32-PE,
где RAW-смещения и размеры секций 32-битные, - судя по этому
и весь размер PE-EXE для WIN64 не может превышать 4Gb в принцпе?

Кто-то сталкивался с такой постановкой задачи?
 

SDK

Постоянный
Ветеран
Сообщения
83
Реакции
24
dosprog я думаю максимальный размер exe будет ограничен оперативной памятью оно просто не запустится ,а так почему нет можно проверить создав самораспаковывающийся архив на 3.99Гб или разбить на части и подгружать.
в майкрософте говорили что ехе и dll свыше 4гб не запускаются.
 

f13nd

Посетитель
Мудрец
Сообщения
15
Реакции
335
Судя по тому, что формат IMAGE_SECTION_HEADER у таких файлов такой же, как и у WIN32-PE,
Там заголовки не совсем те же, но электрически совместимые https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_optional_header64
Так что да, в 32-битное поле без знака число больше 4294967295 не впишешь.
 

dosprog

Постоянный
Мудрец
Сообщения
96
Реакции
492
В файле WinNT.h присутствует только одно объявление IMAGE_SECTION_HEADER,
оно используется и для x32, и для x64
 
  • Понравилось
Реакции: SDK

rmn

Посетитель
Мудрец
Сообщения
13
Реакции
137
и весь размер PE-EXE для WIN64 не может превышать 4Gb в принцпе?
Ну, да. О чем и говорит 32-битный OptionalHeader::SizeOfImage и 32-битные rva практически во всех структурах pe-файлов вне зависимости от разрядности.
 
Верх Низ