PE檔案學習(三)資料目錄表之資源

2021-07-04 20:59:52 字數 1331 閱讀 1318

資源是pe檔案中最複雜的結構了,資源在pe檔案中是以目錄結構的形式存在的,一般情況下分為3層,從根目錄開始分別是資源型別、目錄資源id與資源**頁。

3層目錄結構都是由乙個image_resource_directory結構為頭部,後面跟著乙個image_resource_directory_entry結構陣列。

結構體image_resource_directory_entry如下所示:

typedef  struct  _image_resource_directory image_resource_directory, *pimage_resource_directory;
結構體image_resource_directory_entry:

typedef struct _image_resource_directory_entry

; dword name; //資源/語言型別

word id; //資源數字id

}; union;

};}image_resource_directory_entry,*pimage_resource_directory_entry;

其中的name成員當此結構體位於第一層目錄中時,此欄位儲存有資源型別的值。當此結構體位於第三層目錄中時,此欄位儲存有資源語言區域的型別值

這個image_resource_directory_entry是由兩個大小為4位元組的聯合體組成的,在不同情況下,兩個聯合體中的有效字段也不同。

第乙個聯合體內的字段是根據當前結構體所處的目錄層次來決定的,位於第一層目錄時欄位name有效,儲存的資訊是資源型別;位於第二層目錄時欄位id或結構體有效,這取決於此資源的索引方式,如果採用的是編號索引就是欄位id有效,否則結構體有效;位於第三層目錄時欄位name有效,儲存的資訊是資源語言區域型別。

第二個聯合體內的字段理論上是根據具體情況而定的,如果下一級是乙個子目錄的話,那麼就是結構體生效,如果下一級是資源資料則是字段offsettodata生效。

在經過三層目錄的索引後,最後會到達乙個image_resource_data_entry結構中,這個結構將指引我們找到資源資料。下面這個結構體描述的就是此結構。

typedef struct _image_resource_data_entry

image_resource_data_entry,*pimage_resource_data_entry;

PE檔案之資源講解

資源是pe檔案中非常重要的部分,幾乎所有的pe檔案中都包含資源,與匯入表與匯出表相比,資源的組織方式要複雜得多,要了解資源的話,重點在於了解資源整體上的組織結構。我們知道,pe檔案資源中的內容包括 游標 圖示 位圖 選單等十幾種標準的型別,除此之外,還可以使用自定義的型別,每種型別的資源中,可能存在...

PE檔案格式學習(五) 資源表 Resource

程式內部和外部的介面等元素的二進位制資料統稱為資源,程式把它們放在乙個特定的表中,符合資料和程式分離的設計原則。windows程式中的資源大致分為六類 選單 對話方塊 位圖 游標 圖示 自定義資源 資源表是資料目錄表中的第三個元素,排在匯入表的後面。資源表的解析比較複雜,可能是所有資料目錄表中最複雜...

PE檔案結構詳解(三)PE匯出表

上篇文章 pe檔案結構詳解 二 可執行檔案頭 的結尾出現了乙個大陣列,這個陣列中的每一項都是乙個特定的結構,通過函式獲取陣列中的項可以用rtlimagedirectoryentrytodata函式,datadirectory中的每一項都可以用這個函式獲取,函式原型如下 base 模組基位址。dire...