PE載入重定位
PE exe檔案載入有時候會重定位,主要是因為 FILEHEADER中的一個欄位
Characteristics
這個域描述pe檔案的一些屬性資訊,比如是否可執行,是否是一個動態連線庫等.具體定義如下:
#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // 重定位資訊被移除,檔案必須載入先前的基地址
#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // 檔案可執行
#define IMAGE_FILE_LINE_NUMS_STRIPPED
0x0004 // 行號被移除
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // 符號被移除
#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Agressively trim working set
#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 // 程式能處理大於2G的地址
#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32位機器
#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // .dbg檔案的除錯資訊被移除
#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // 如果在移動介質中,拷到交換檔案中執行
#define IMAGE_FILE_NET_RUN_FROM_SWAP
0x0800 // 如果在網路中,拷到交換檔案中執行
#define IMAGE_FILE_SYSTEM 0x1000 // 系統檔案
#define IMAGE_FILE_DLL 0x2000 // 檔案是一個dll
#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // 檔案只能執行在單處理器上
#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.