個部分,它包含了可執行文件中需要導出的函數和變量等信息。當其他程序需要調用可執行文件中的函數時,系統會根據導出表中的信息動態加載可執行文件,并調用其中的函數。導出表的結構如下:
“`c
typedef struct _IMAGE_EXPORT_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
DWORD Name;
DWORD Base;
DWORD NumberOfFunctions;
DWORD NumberOfNames;
DWORD AddressOfFunctions;
DWORD AddressOfNames;
DWORD AddressOfNameOrdinals;
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
“`
5. 資源表
資源表是可執行文件中的一個部分,它包含了可執行文件中的資源信息,如圖標、位圖、字符串、菜單等。資源表的結構如下:
“`c
typedef struct _IMAGE_RESOURCE_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
WORD NumberOfNamedEntries;
WORD NumberOfIdEntries;
} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
“`
6. 重定位表
重定位表是可執行文件中的一個部分,它包含了可執行文件中需要重新定位的地址信息。當可執行文件加載到內存中時,系統會根據重定位表中的信息重新定位可執行文件中的地址。重定位表的結構如下:
“`c
typedef struct _IMAGE_BASE_RELOCATION {
DWORD VirtualAddress;
DWORD SizeOfBlock;
} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
“`
7. 調試信息
調試信息是可執行文件中的一個部分,它包含了可執行文件的調試信息,如符號表、調試信息等。調試信息的結構如下:
“`c
typedef struct _IMAGE_DEBUG_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
DWORD Type;
DWORD SizeOfData;
DWORD AddressOfRawData;
DWORD PointerToRawData;
} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
“`
綜上所述,Windows可執行文件的構造包括PE頭、節表、導入表、導出表、資源表、重定位表和調試信息等多個部分,每個部分都有著自己的結構和作用。了解可執行文件的