元資料與PE檔案結構

2021-04-22 11:49:41 字數 639 閱讀 8211

元資料被儲存在pe檔案的乙個區域,msil則被儲存在pe檔案的另乙個區域。元資料部分包含一系列的表和堆。msil部分則包含il語言和元資料標記,這些元資料標記指向元資料部分的某個表的某行或者指向某個堆。

元資料表和堆

元資料表中包含程式的各種資訊,比如,某個表描述程式中的各個類,另外乙個表描述各個類中的字段等等。如果你的**裡有10個類,那麼類表中就會有10行,每一行對應乙個類。同時類表還會引用其它的表和堆,比如,類表會引用方法定義表。

元資料也在堆結構中儲存資訊。一共有四個堆結構:string、blob、user string、guid。所有用來命名型別和成員的字串都是被儲存在string堆中的。比如,乙個方法表不直接儲存某個方法的名稱,而是用乙個指標指向string堆中存放該方法名稱的地方。

元資料標識:

msil中的元資料標識都是唯一的指向特定元資料表中的某一行。每個元資料表示都是4個位元組的數字。首位元組用來描述是指向元資料中的哪個表的,後三個位元組用來表示指向該錶的哪一行,即在該表中的偏移。比如,方法定義表的編號是0x06,那麼0x06000004即指向方法定義表的第四行。

pe檔案中的元資料:

乙個c#程式被編譯之後,生成乙個pe檔案,該檔案包含三部分,接下來的表描述了各個部分的內容:

PE結構擴充套件與元資料

net對pe結構的擴充套件主要體現在.text節上,儲存了msil 元資料 各種特殊的.net結構。text變樣後 輸入表 clr頭 msil 和可選的異常處理表 強名稱的hash資料 元資料 託管資源資料 可選 非託管資源資料 可選 執行時啟動資訊 clr頭 定義在sdk安裝目錄的corhdr.件...

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 data directory image data directory,pimage data directory 資料目錄表的結構非常簡單,就只有起始位置和長度大小這兩個引數...