Запрос относительно каталогов данных в 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).