IMAGE_OPTIONAL_HEADER結構體最后一個成員是數組結構,大小為16,每個元素都是一個IMAGE_DATA_DIRECTORY結構體
typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; /**指向某個數據的相對虛擬地址 RAV 偏移0x00**/ DWORD Size; /**某個數據塊的大小 偏移0x04**/ } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
在這個數據目錄結構體中只有兩個成員VirtualAddress
和Size
,這兩個成員的含義比較簡單,VirtualAddress指定了數據塊的相對虛擬地址(RVA)。Size則指定了該數據塊的大小,有時並不是該類型數據的總大小,可能只是該類型數據一個數據項的大小。這兩個成員(主要是VirtualAddress)成為了定位各種表的關鍵,所以一定要知道每個數組元素所指向的數據塊類型,以下表格就是它的對應關系: