今天講解pe檔案格式的dos頭檔案格式
首先我們要理解,什麼是檔案格式,我們常說的exe可執行程式,就是乙個檔案格式,那麼我們要了解它裡面到底存了什麼內容
簡短的說明.
我們要知道,pe檔案格式,是微軟半公開的,因為微軟並沒有說明這個檔案格式.但是微軟有定義的結構體.
檔案格式,是記錄檔案載入到記憶體中執行的位置,和偏移
在dos16位年代下,主要記錄分段等等的資訊.
在32位年代下,主要記錄分割槽位置,**位置,各種表等等..
我們看下結構體.
typedef struct _image_dos_header image_dos_header, *pimage_dos_header;可以看出,這個結構體中已經明確定義了各種dos(16位年代的)頭了.
我們在32位年代下,主要要知道第乙個成員和最後乙個成員
第乙個成員: 標誌mz,記錄了mz,佔兩個位元組,這個是dos系統作者的名字
最後乙個成員: 這個成員主要記錄了新的檔案開始執行的位址位置.
因為微軟為了相容16位程式,所以還保留dos頭,但是32位程式,是不會執行dos頭了,重要的就是這兩個成員.
第乙個成員,對應4d 5a兩個位元組
最後乙個成員,對應 00 00 00 d0 (小尾方式) 最後乙個成員是儲存了新的檔案格式位址.所以我們看到d0的位置,正好是pe
那麼我們如果不是在16位程式下使用,那麼上面除了最後乙個成員,其餘的位置都可以隨便改.
正常執行
我們上面看到了,dos頭就乙個結構體大小,到了最後乙個成員位置,則是這個結構體結束,那麼在這個結構體結束的後面,一直到pe的位置的二進位制到底是什麼?
可以看出,在dos頭的位置,也就是成員 word e_lfarlc; 記錄的是dos的**執行位置,這塊區域屬於dos的**執行區域
主要作用是,在16位系統下,不能執行32位程式,如果執行,則利用中斷,顯示 this is program cannot be run in dos mode (這個程式不能執行在dos系統)
如果在32位系統下使用,那麼這一段是沒有任何作用的.dos頭只需要知道 第乙個成員,和最後乙個成員你的指向即可.
如果是16位系統下,那麼你這個dos頭記錄的資訊就有用了(儲存了頁大小,頁的個數,ss段.ip執行位置,校驗和等等)
到了pe位置,那麼我們要了解一下nt頭,pe頭,可選頭的結構到底是什麼.新的格式是怎麼樣子的.
typedef struct _image_nt_headers image_nt_headers32, *pimage_nt_headers32;nt頭分為32和64位版本的,這裡說下32的,
第乙個成員: 4個位元組,也就是和4d 5a 一樣,都是固定的標誌,而這個標誌則是
也就是我們說的pe頭.
下面還有兩個結構體,分別是檔案頭,還有可選頭.
typedef struct _image_file_header image_file_header, *pimage_file_header;
可選頭:最後乙個成員是資料目錄typedef struct _image_optional_header image_optional_header32, *pimage_optional_header32;
typedef struct _image_data_directory image_data_directory, *pimage_data_directory;
typedef struct _image_section_header misc;可以看出,乙個pe檔案,主要是結構體套結構體,裡面的每個成員都代表什麼意義,結構體就怎麼多.dword virtualaddress;
dword sizeofrawdata;
dword pointertorawdata;
dword pointertorelocations;
dword pointertolinenumbers;
word numberofrelocations;
word numberoflinenumbers;
dword characteristics;
} image_section_header, *pimage_section_header;
dos頭
nt標頭檔案頭
可選頭資料目錄
節頭今天主要是要了解pe的dos頭,以及pe結構的分布圖.具體作用以後慢慢講,主要了解大體框架,隨著框架深入.
如果想一次了解全部pe,請參考網上大神的部落格.
PE檔案格式一覽
考慮到早期寫的 pe教程 1是自己所有教程中最糟糕的一篇,此番決心徹底重寫一篇以饗讀者。pe 的意思就是 portable executable 可移植的執行體 它是 win32 環境自身所帶的執行體檔案格式。它的一些特性繼承自 unix 的 coff common object file form...
動態規劃詳解(第一講)
第一講內容來自 演算法問題實戰策略 韓 具宗萬著 典型示例 應用動態規劃最有名的示例是二項式係數 binomial coefficient 的計算,二項式係數 nr dbinom rn 表示在n個互不相等的元素中無順序的挑選出r個元素的方法的總數。二項式係數具有如下遞迴式 nr n 1r 1 n 1...
PE教程1 PE檔案格式一覽
pe教程1 pe檔案格式一覽 考慮到早期寫的pe教程1是自己所有教程中最糟糕的一篇,此番決心徹底重寫一篇以饗讀者。pe 的意思就是 portable executable 可移植的執行體 它是 win32環境自身所帶的執行體檔案格式。它的一些特性繼承自 unix的 coff common objec...