緊接著 dos stub 的是 pe header。 pe header 是pe相關結構 image_nt_headers 的簡稱,其中包含了許多pe裝載器用到的重要域。當我們更加深入研究pe檔案格式後,將對這些重要域耳目能詳。執行體在支援pe檔案結構的作業系統中執行時,pe裝載器將從 dos mz header 中找到 pe header 的起始偏移量。因而跳過了 dos stub 直接定位到真正的檔案頭 pe header。
pe檔案的真正內容劃分成塊,稱之為sections(節)。每節是一塊擁有共同屬性的資料,比如**/資料、讀/寫等。我們可以把pe檔案想象成一邏輯磁碟,pe header 是磁碟的boot扇區,而sections就是各種檔案,每種檔案自然就有不同屬性如唯讀、系統、隱藏、文件等等。 值得我們注意的是 ---- 節的劃分是基於各組資料的共同屬性: 而不是邏輯概念。重要的不是資料/**是如何使用的,如果pe檔案中的資料/**擁有相同屬性,它們就能被歸入同一節中。不必關心節中類似於"data", "code"或其他的邏輯概念: 如果資料和**擁有相同屬性,它們就可以被歸入同乙個節中。(譯者注:節名稱僅僅是個區別不同節的符號而已,類似"data", "code"的命名只為了便於識別,惟有節的屬性設定決定了節的特性和功能)如果某塊資料想付為唯讀屬性,就可以將該塊資料放入置為唯讀的節中,當pe裝載器對映節內容時,它會檢查相關節屬性並置對應記憶體塊為指定屬性。
如果我們將pe檔案格式視為一邏輯磁碟,pe header是boot扇區而sections是各種檔案,但我們仍缺乏足夠資訊來定位磁碟上的不同檔案,譬如,什麼是pe檔案格式中等價於目錄的東東?別急,那就是 pe header 接下來的陣列結構 section table(節表)。 每個結構包含對應節的屬性、檔案偏移量、虛擬偏移量等。如果pe檔案裡有5個節,那麼此結構陣列內就有5個成員。因此,我們便可以把節表視為邏輯磁碟中的根目錄,每個陣列成員等價於根目錄中目錄項。
個人看法:pe檔案按照這種格式來安排檔案,這裡注意的是節的概念,每個節是有共同屬性的資料,這樣就好理解了,不一定都是**或者其他的東西,與後面的pe 可選頭中的目錄不衝突,那裡是按照另一種分類方法來分類的。
python 基本內容
1.包 import 模組名 這個包首先在當前目錄找。每個模組中可以用 name 判斷是否為 main 來執行程式 建立包pack,建立乙個資料夾然後建立 init py import pack.filename pack.filename.f 引用包重新命名 import pack as newn...
Servlet基本內容
常用的狀態碼如下 200 請求成功。302 請求重定向。304 請求資源沒有改變,訪問本地快取。404 請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。500 伺服器內部錯誤。通常程式拋異常。狀態資訊 狀態資訊是根據狀態碼變化而變化的 1 servlet技術 2 filter技術...
php基本內容
1.注釋 或者 name admin echo hello name 2.變數 以 開頭 name admin echo hello name 3.字串拼接 使用 name admin echo hello name 4.物件訪問屬性 使用 class obj o newobj echo o nam...