PE檔案結構體總匯

2021-06-12 18:54:26 字數 1791 閱讀 8385

①:image_dos_header struct 【m_dos頭部 共64位元組】

image_dos_header ends

②:dos stub【大約100個位元組左右《此處位元組數可選》】

③:typedef struct _image_nt_headers 【pe檔案頭 共248位元組】

image_nt_headers ends, *pimage_nt_headers32;

結構體一:typedef struct _image_file_header 【pe頭共20個位元組】

image_file_header, *pimage_file_header;

結構體二:typedef struct _image_optional_header【pe檔案共224位元組,其中資料目錄表佔128位元組】

image_optional_header32, *pimage_optional_header32;

結構體一:typedef struct _image_data_directory 【共佔8位元組】

image_data_directory,*pimage_data_directory;

④:typedef struct _image_section_header 【區塊表,共佔40位元組】

misc;

+0c h dword virtualaddress; // 節區的虛擬記憶體中rva位址

+10 h dword sizeofrawdata; // 節表在檔案中對齊後的尺寸

+14 h dword pointertorawdata; // 節表在檔案中的偏移量

+18 h dword pointertorelocations; // 在obj檔案中使用,重定位的偏移

+1c h dword pointertolinenumbers; // 行號表的偏移(供除錯使用地)

+20 h word numberofrelocations; // 在obj檔案中使用,重定位項數目

+22 h word numberoflinenumbers; // 行號表中行號的數目

+24 h dword characteristics; // 節屬性如可讀,可寫,可執行等

} image_section_header, *pimage_section_header;

⑤:image_import_descriptor struct 【輸入表結構,共20位元組】

ends

+04 h dword timedatestamp //可執行檔案是否與dll繫結,不繫結為0

+08 h dword forwarderchain //第乙個轉向的api索引

+0c h dword name //指向dll的虛擬rva

+10 h dword firstthunk //實際指向image_thunk_data陣列的指標,結構體一

};image_import_descriptor ends

結構體一:image_thunk_data struc 【共佔4位元組】

ends

}image_thunk_data ends

結構體二:image_import_by_name struct 【共佔大小動態分配】

;image_import_by_name ends

PE檔案結構

pe檔案結構 a,dos header timagedosheader 其中 lfanew 指向 c e magic 為 mz b,dos stub 用於不支援pe的作業系統,顯示錯誤提示如 this program requires windows 不定長 c,pe header timagent...

PE檔案頭結構

typedef struct image file header image file header,pimage file header 1.machine 每個cpu都有唯一的machine碼,用來指定檔案的執行平台 define image file machine unknown 0 def...

PE檔案結構(一)

pe portable execute 檔案是windows下可執行檔案的總稱,常見的有dll,exe,ocx,sys等,事實上,乙個檔案是否是pe檔案與其副檔名無關,pe檔案可以是任何副檔名。pe檔案是指32位可執行檔案,也稱pe32。64位可執行檔案稱為pe 或pe32 是pe pe32 的一種...