查询PE中的数据目录

时间:2015-04-13 20:52:35

标签: executable portable-executable

我正在尝试为可执行文件构建一个打包程序,并且有一件事我甚至在仔细阅读了pe文档之后也无法理解。对于RVA来说,(IMAGE_DIRECTORY_ENTRY_EXPORT,IMAGE_DIRECTORY_ENTRY_IMPORT等)等目录指向的是什么?

1 个答案:

答案 0 :(得分:2)

官方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)

official PE documentation中的第2.4.3节(可选标题数据目录)中讨论了几乎所有这些结构(作为旁注,在我写这篇文章时,该部分编号错误文档版本8.3)的第2.4.3章中的表。