重讀PE檔案格式

2022-07-13 18:18:14 字數 1060 閱讀 3788

感覺很有必要重新研究pe格式,所以重讀了pe格式的相關文件,心得如下:

1.對於dos頭,其定義如下:

**typedef 

struct

_image_dos_header  image_dos_header, 

*pimage_dos_header;

因為我們開發的是windows下的程式,所以重要的字段有兩個,乙個是e_magic欄位,乙個是e_lfanew,e_magic欄位始終為5a4d,即ascii字元的mz,e_lfanew儲存的是pe檔案頭在檔案中的偏移量,我想作為exe程式的裝載器,首先檢查dos頭的e_magic欄位是否為mz,然後讀取e_lfanew欄位的值,以此找到pe檔案頭

2.找到pe檔案頭,pe檔案頭的定義如下:

typedef 

struct

_image_nt_headers  image_nt_headers32, 

*pimage_nt_headers32;

signature欄位同dos頭的e_magic一樣,是個標誌字段,其值始終為4550,image_file_header結構定義如下:

**typedef 

struct

_image_file_header  image_file_header, 

*pimage_file_header;

machine欄位表示當前檔案應該執行的平台,對於pc來說,此值應該為14c

numberofsections這個字段表示檔案的節的數目,這個值很重要,我試著把乙個檔案的這個欄位加1,然後發現檔案不能正常裝載了,因此系統應該是據此欄位來裝載pe檔案的節的

characteristics指明了當前pe檔案是什麼型別的,如果是exe,則值為10f,如果是dll,則為210e

image_optional_header32是非常重要的乙個結構,他裡面有很多重要的資訊,定義如下:

**typedef 

struct

_image_optional_header  image_optional_header32, 

*pimage_optional_header32;

PE檔案格式

pe 的意思是 portable executable 可移植的執行體 它是 win32環境自身所帶的執行檔案格式。它的一些特性繼承自unix的coff common object file format 檔案格式。portable executable 可移植的執行體 意味著此檔案格式是跨win3...

PE檔案格式

pe檔案格式分析及修改 圖 1 2009 01 09 14 08 pe 的意思是 portable executable 可移植的執行體 它是 win32環境自身所帶的執行檔案格式。它的一些特性繼承自unix的coff common object file format 檔案格式。portable ...

PE檔案格式

pe檔案格式應用於所有32位windows系統 windows 9x,windows nt,windows 2000及windows xp vista已經對pe格式進行了公升級,也出現了pe64 而在msdn 98中有pe的大量詳細資料 按目錄 msdn library visual studio ...