Подтвердить что ты не робот

Удалить заглушку DOS из PE файла

Можно ли удалить заглушку DOS и заголовок DOS из PE файла?

4b9b3361

Ответ 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 байта.