| Предыдущий | Следующий |
| STATUS_INVALID_IMAGE_NOT_MZ | STATUS_INVALID_IMAGE_WIN_16 |
STATUS_INVALID_IMAGE_PROTECT
Поле перемещений заголовка MZ не соответствует структуре исполняемого файла
IMAGE_DOS_HEADER содержит e_lfarlc — смещение таблицы перемещений DOS. Для PE-образов устаревшие поля заголовка всё равно имеют структурные ограничения, хотя загрузчик Windows в итоге переходит по e_lfanew к заголовкам NT. Этот статус сообщает о недопустимом отношении e_lfarlc, из-за которого заголовок образа нельзя принять.
Причиной могут быть обрезание файла, неисправный упаковщик, неправильное формирование двоичного файла или целевой fuzzing. Не исправляйте значение копированием поля из другого исполняемого файла: смещения связаны с конкретной DOS-заглушкой и компоновкой файла.
Что проверить
- Выведите полный IMAGE_DOS_HEADER и проверьте e_cparhdr, e_crlc, e_lfarlc и e_lfanew относительно границ файла.
- Сравните образ с артефактом сборки до подписания, упаковки или преобразования установщиком.
- Проверьте, не переписал ли файл защитный продукт или обновляющий компонент одновременно с попыткой загрузки.
- Используйте PE-анализатор с проверкой границ для поиска перекрывающихся или выходящих за пределы областей заголовка.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft: формат PE и COFF
- Исходный код LLVM: разбор объектов COFF
- Исходный код Wine: загрузчик PE-модулей
Нужно найти другой код? Найти другой код состояния или ошибки.