image_file_header->machine
可執行檔案的目標cpu。通常的值是:
image_file_machine_i386 0x014c // intel 386
image_file_machine_ia64 0x020b // intel 64
image_file_machine_ia64 0x8664 // intel 64
……image_optional_header->dllflags
dllflags[6]決定。
dll characteristics:
value
含義8000
terminal server aware
2000
wdm driver
0800
no bind
0400
no seh
0200
no isolation
0100
nx compatible
0080
force integrity
0040
dynamic base動態基址
image_file_header->characteristics
characteristics[13]決定。
hi高位資料
含義8000
bytes reversed hi
4000
uniprocessor only
2000
是dll
0800
patch on net
0400
patch on removable
0200
debug stripped
0100
32 bit machine
lo低位資料
含義0080
bytes reversed lo
0040
???0020
handle >2gb address
0010
agressively trim set
0008
symbols stripped
0004
line numbers stripped
0002
executable
0001
relocations stripped
它似乎保持指向dos頭後面,但確實沒有規定e_lfanew必須指向後面,所以你可以通過將e_lfanew指向到dos頭來完成一段「壓縮」。
同樣的elf頭部起+2,+3位置沒有被使用,也可以用做儲存一些隱蔽資料。
以上資料部分從exeinfope中找出來的。
PE檔案中的IAT和IET
iat中文名叫匯入位址表 在iat中存放的是匯入的函式的rva陣列,每個元素對應乙個函式的位址 rva 通過這個rva即可找到匯入函式的位置 所以說我們必須先知道iat在哪 可選頭結構體的最後乙個成員是datadirectory 它是乙個結構體陣列 typedef struct image opti...
PE檔案載入時Section結構中的變化
pe檔案section的名稱儲存在name陣列中。當pe檔案被從磁碟載入到記憶體的過程中,本地長度為virtualsize的資料所獲得的記憶體大小為sizeofrawdata 這段資料在磁碟中相對檔案頭的偏移pointertorawdata,在記憶體中表現為這些資料的位置距離記憶體中pe起點為vir...
PE檔案解析 資源中的版本資訊結構
想要獲取乙個可執行檔案 pe檔案 裡包含的資源檔案,首先要解析可執行檔案,得到資源儲存的位址及大小,可參考 然後,根據資源儲存方式,得到各資源的資料內容及其大小,可參考 pe檔案的資源中,版本資訊的資源型別id 16。在rc檔案中,版本資訊的定義方式如下 vs version info versio...