Запрос относительно каталогов данных в PE

Я пытаюсь создать упаковщик для исполняемых файлов, и есть одна вещь, которую я не понял даже после тщательного изучения документации. На что указывают RVA каталоги, такие как (IMAGE_DIRECTORY_ENTRY_EXPORT, IMAGE_DIRECTORY_ENTRY_IMPORT и т. Д.,)?

1 ответ

Официальная документация PE по неизвестной причине не дает названия структур, указанных полями IMAGE_DATA_DIRECTORY.Rva.

Ниже приведены IMAGE_DIRECTORY_ENTRY_XXX (из winnt.h) и соответствующие им структуры. Эти структуры определены в winnt.h, кроме случаев, где указано:

// Directory Entries

#define IMAGE_DIRECTORY_ENTRY_EXPORT          0   // IMAGE_EXPORT_DIRECTORY
#define IMAGE_DIRECTORY_ENTRY_IMPORT          1   // IMAGE_IMPORT_DESCRIPTOR
#define IMAGE_DIRECTORY_ENTRY_RESOURCE        2   // IMAGE_RESOURCE_DIRECTORY
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION       3   // IMAGE_RUNTIME_FUNCTION_ENTRY 
#define IMAGE_DIRECTORY_ENTRY_SECURITY        4   // WIN_CERTIFICATE (wintrust.h)
#define IMAGE_DIRECTORY_ENTRY_BASERELOC       5   // IMAGE_BASE_RELOCATION
#define IMAGE_DIRECTORY_ENTRY_DEBUG           6   // IMAGE_DEBUG_DIRECTORY
#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE    7   // IMAGE_ARCHITECTURE_HEADER (Dec and Aplha processors only)
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR       8   // RVA of Global pointer (GP) for MIPS
#define IMAGE_DIRECTORY_ENTRY_TLS             9   // IMAGE_TLS_DIRECTORY[32|64]
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    10   // IMAGE_LOAD_CONFIG_DIRECTORY[32|64]
#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   11   // IMAGE_BOUND_IMPORT_DESCRIPTOR
#define IMAGE_DIRECTORY_ENTRY_IAT            12   // IMAGE_THUNK_DATA
#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   13   // ImgDelayDescr (delayimp.h)
#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14   // IMAGE_COR20_HEADER (corhdr.h)

Почти все эти структуры обсуждаются в разделе 2.4.3 (Необязательные каталоги данных заголовка) официальной документации PE (в качестве дополнительного примечания, на момент написания этой статьи раздел ошибочно пронумерован в таблице в главе 2.4.3). для документации версии 8.3).

Другие вопросы по тегам