Можно ли удалить заглушку DOS и заголовок DOS из PE файла?
Удалить заглушку DOS из PE файла
Ответ 1
Нет простого способа удалить его, не нарушая формат файла.
Но ehm, нашел этот.
Ответ 2
Файл PE должен начинаться с IMAGE_DOS_HEADER, а затем в какой-то момент структурой IMAGE_NT_HEADERS, которая определяет современные поля PE.
IMAGE_DOS_HEADER имеет два обязательных поля: e_magic должен содержать значение IMAGE_DOS_SIGNATURE (которое выглядит как "MZ" в ASCII), а e_lfanew должно быть смещением от начала файла до начала IMAGE_NT_HEADERS.
Помимо этих двух полей, остальная часть IMAGE_DOS_HEADER является необязательной для Windows прошлой 16-разрядной Windows и может быть равна нулю, а заглушка DOS является необязательной и может быть опущена.
Минимальный согласованный PE файл начинается с IMAGE_DOS_HEADER, где e_magic установлен в IMAGE_DOS_SIGNATURE, а e_lfanew - sizeof (IMAGE_DOS_HEADER), за которым следует IMAGE_NT_HEADERS.
Ответ 3
Удаление Dos Stub не имеет ничего общего с заголовком Dos. Да, возможно удалить Dos Stub (поскольку он больше не используется). Вы даже можете уменьшить размер заголовка Dos до минимума (переход MZ + к заголовку PE). Но вы не можете полностью удалить заголовок Dos. В противном случае загрузчик Windows откажется запускать изображение, если MZ и переход к заголовку PE отсутствуют.
Ответ 4
Вы не можете уменьшить размер заголовка Dos до его минимального значения. К сожалению, поле длины является последним полем в IMAGE_DOS_HEADER. Таким образом, он имеет фиксированный размер 64 байта.