1. 程式人生 > >PE載入重定位

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.