PE檔案詳解二

2021-08-29 00:24:57 字數 1483 閱讀 3950

本文**小甲魚的pe檔案相關教程,原文傳送門

咱接著往下講解image_optional_header32 結構定義即各個屬性的作用! 

接著我們來談談 image_optional_header 結構,正如名字的意思,這是乙個可選映像頭,是乙個可選的結構。 

但是呢,實際上上節課我們講解的 image_file_header 結構遠遠不足以來定義 pe 檔案的屬性。 

因此,這些屬性在 image_optional_header 結構中進行定義。 

因此這兩個結構聯合起來,才是乙個完整的 「pe檔案結構」 。

image_optional_header32, *pimage_optional_header32;
image_data_directory struct

virtualaddress dword ? ; 資料的起始rva

isize dword ? ; 資料塊的長度

image_data_directory ends

在pe檔案中尋找特定的資料時就是從這些image_data_directory結構開始的。 

比如要訪問資源,那麼必須從第3個image_data_directory結構(索引為2)中得到資源資料塊的大小和位置; 

同理,如果要檢視pe檔案匯入了哪些dll檔案的哪些api函式,那就必須首先從第2個image_data_directory結構得到匯入表的位置和大小。 

最後再根據這些資訊接著解析上節中的pe檔案 

pe頭所在位置的偏移為0xf8 + image_optional_header 結構在image_nt_headers結構中的偏移0x18 = optionalheader成員的位址0x110 

被選中的這塊就是結構image_nt_headers中的內容: 

從圖中可以找到上面所表述的各個部分偏移的位址和它對應的具體的內容: 

addressofentrypoint所在位址為:偏移 0x28 + 0xf8 = 0x120,值為0x011285 

imagebase所在位址為:偏移0x34 + 0xf8 = 0x12c,值為0x00400000 

sectionalignment 所在位址為:偏移0x38 + 0xf8 = 130,值為0x00001000,也就是一頁記憶體 

filealignment所在的位址為偏移0x3c + 0xf8 = 0x134,值為0x00000200,也就是512,是一簇的大小 

subsystem所在位址為:偏移0x5c + 0xf8 = 0x154,值為0x0003,也就是控制台程式 

datadirectory所在位址為偏移0x78 + 0xf8 = 170 ,也是就是從0x170開始往後每8個位元組為乙個元素,指定了一些資料表的位址

詳解PE檔案

筆者在某安全公司實習,第一天被要求了解pe結構,好吧,因為基礎不紮實,經過一天的時間了解的啥都不是,受到了導師的特殊關照,推薦了我一本沒推薦給別人的書 windows32位匯程式設計序 羅雲彬著 嘿嘿,匿名感謝導師,清明三天的pe之旅。1.1pe檔案的結構 pe就是在windows下最常用的可執行檔...

PE檔案詳解

pe 檔案是一種格式 dos頭 pe頭 區塊 這些組成了pe檔案 傳送門 c 解析dos頭和nt頭 指某一種格式的檔案,可執行檔案 exe 動態鏈結庫 dll 驅動檔案 sys 都是pe檔案格式 dos頭部 為了相容dos程式設計 nt頭部 儲存pe檔案的全部屬性,初始資訊化等 區段頭表 對於pe檔...

PE檔案詳解之PE檔案頭

1,pe檔案頭 pe header 緊挨著 dos stub 2,pe header 是pe相關結構nt映像頭 image nt header 的簡稱。裡面包含著許多pe裝載器用到的重要字段。3,執行體在支援pe檔案結構的作業系統中執行時,pe裝載器將從 image dos header 結構中的 ...