Удалить заглушку DOS из PE-файла
можно ли удалить заглушку DOS и заголовок DOS из PE-файла??
4 ответов
нет простого способа удалить его, не нарушая формат файла.
но ЭМ, нашел этой.
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-битных окон и может быть нулевым, а заглушка DOS необязательна и может быть опущена.
минимальный соответствующий PE-файл начинается с IMAGE_DOS_HEADER, где e_magic имеет значение IMAGE_DOS_SIGNATURE, а e_lfanew имеет значение sizeof (IMAGE_DOS_HEADER), за которым немедленно следуют IMAGE_NT_HEADERS.
удаление заглушки Dos не имеет ничего общего с заголовком Dos. Да, можно удалить заглушку Dos (так как она больше не используется). Вы даже можете уменьшить размер заголовка Dos до минимума (MZ + перейти к заголовку PE). Но вы не можете удалить заголовок Dos полностью. В противном случае загрузчик Windows откажется запускать изображение, если MZ и переход к заголовку PE отсутствуют.
вы не можете уменьшить размер заголовка Dos до его "минимума". К сожалению, поле length является последним полем в IMAGE_DOS_HEADER. Таким образом, он имеет фиксированный размер 64 байта.