首先,我們知道pe 檔案中的資料被載入記憶體後根據不同頁面屬性被劃分成很多區塊(節),並有區塊表(節表)的資料來描述這些區塊。這裡我們需要注意的問題是:乙個區塊中的數 據僅僅只是由於屬性相同而放在一起,並不一定是同一種用途的內容。例如輸入表、輸出表等就有可能和唯讀常量一起被放在同乙個區塊中,因為他們的屬性都是可 讀不可寫的。
其次,由於不同用途的資料有可能被放入同乙個區塊中,因此僅僅依靠區塊表是無法確定和定位的。那要怎麼辦?對了,pe 檔案頭中 image_optional_deader32 結構的資料目錄表來指出他們的位置,我們可以由資料目錄表來定位的資料報括輸入表、輸出表、資源、重定位表和tls等15 種資料。
輸入函式
在**分析或程式設計中經常遇到「輸入函式(import functions,也稱匯入函式)」的概念。這裡我們就來解釋下,輸入函式就是被程式呼叫但其執行**又不在程式中的函式,這些函式的**位於相關的 dll 檔案中,在呼叫者程式中只保留相關的函式資訊(如函式名、dll 檔名等)就可以。對於磁碟上的pe 檔案來說,它無法得知這些輸入函式在記憶體中的位址,只有當pe 檔案被裝入記憶體後,windows 載入器才將相關dll 裝入,並將呼叫輸入函式的指令和函式實際所處的位址聯絡起來。這就是「動態鏈結」的概念。動態鏈結是通過pe 檔案中定義的「輸入表」來完成的,輸入表中儲存的正是函式名和其駐留的dll 名等。
PE檔案詳解五 PE詳解之輸入表(匯入表)詳解1
首先,我們知道pe 檔案中的資料被載入記憶體後根據不同頁面屬性被劃分成很多區塊 節 並有區塊表 節表 的資料來描述這些區塊。這裡我們需要注意的問題是 乙個區塊中的數 據僅僅只是由於屬性相同而放在一起,並不一定是同一種用途的內容。例如輸入表 輸出表等就有可能和唯讀常量一起被放在同乙個區塊中,因為他們的...
PE檔案詳解(五) 匯出表
當pe 檔案被執行的時候,windows 載入器將檔案裝入記憶體並將匯入表 export table 登記的動態鏈結庫 一般是dll 格式 檔案一併裝入位址空間,再根據dll 檔案中的函式匯出資訊對被執行檔案的iat 進行修正。基礎補充 很多朋友可能看到這裡會有點懵,各位看官請允許小甲魚囉嗦一下,照...
PE檔案詳解之PE檔案頭
1,pe檔案頭 pe header 緊挨著 dos stub 2,pe header 是pe相關結構nt映像頭 image nt header 的簡稱。裡面包含著許多pe裝載器用到的重要字段。3,執行體在支援pe檔案結構的作業系統中執行時,pe裝載器將從 image dos header 結構中的 ...