Я писал какой-то инструмент, который анализирует .EXE-файлы, и я тоже видел такие .EXE-файлы.
Причина, по которой такие файлы существуют, указана в документации Microsoft, которую вы связали:
RVA таблицы поиска импорта.... (Название "Характеристики" используется в Winnt.h, но больше не описывает это поле.)
Для меня предложение в скобках и слова "«больше не означает», что более старые версии Windows использовали поле «RVA таблицы поиска импорта» для хранения различного рода информации, и поэтому файлы .EXE, написанные для этих версий Windows, не имели таблицы поиска импорта.
И поскольку более новыеВерсии Windows должны иметь возможность запускать старые исполняемые файлы, последние версии Windows по-прежнему принимают исполняемые файлы, которые используют это поле для получения другой информации.
А с другой стороны, некоторые компоновщики или компиляторы, похоже, по-прежнему заполняют это поленоль, потому что Windows по-прежнему принимает значение ноль здесь.
Однако, насколько я понимаю, только 32-разрядные версии Windows использовали это поле для хранения различного рода информации.Если это так, то должны быть действительными только 32-битные .EXE-файлы (записанные для более старых версий Windows) с нулевым значением этого поля.
Это означает, что Microsoft может отключить поддержку 64-битных .EXE-файлов.которые имеют это поле в ноль в будущем.А это значит, что 64-битный компоновщик или компилятор, устанавливающий это поле в ноль, глючит.