可執行檔案結構是作業系統的根基,windows系統下面有很多態別不同的檔案,例如*.ex,*.dll,*.sys,*.ocx等檔案格式都遵從pe檔案結構的約定。
pe檔案實在win32位系統中誕生的,而且與win64位系統中的可執行檔案格式基本相同。
在windows系統中,可以以二進位制形式被系統載入執行的檔案都是pe檔案。
pe檔案就是portable executable(可移植執行體)的簡寫,它是win32系統環境自身所帶的可執行檔案格式。可移植執行體,就意味著這個檔案格式是跨win32平台的,換句話說,就是windows執行在非intel的cpu上,任何win32平台pe檔案裝載器都能夠識別和使用這個檔案格式,所以所以win32平台下的可執行檔案也必須使用pe格式。
結構?pe檔案總的來說就是由dos檔案頭,dos載入模組,pe檔案頭,區段表和區段這5部分構成的。當然很多朋友會疑問,就是windows系統下面的乙個檔案格式為什麼會有兩個與dos相關的結構呢?其實如果pe檔案執行在windows系統下面,那麼dos檔案頭和dos載入模組是壓根用不到的,pe載入器會根據dos檔案頭最後面那個標誌跳過dos載入模組而直接轉到pe檔案頭上,其實有兩個dos相關的模組完全就是問了相容問題考慮的,如果將pe檔案在dos系統下面執行的話,那麼就到dos載入模組表現的時候到了,dos載入模組就會顯示一句話:this program cannot be run in dos mode,翻譯一下就是這個程式不能在dos系統下面執行。
下面是我偷來的一張顯示了pe檔案的基本結構
通過上面的我們可以發現整個程式是以dos檔案頭的mz標誌開始的,就是圖中藍色標記那裡,接下來就是dos載入模組了(用紫色線框住),看到那一句標誌性的語句沒有?this program must be run under win32,其實意思和我們上面說的那一句this program cannot be run in dos mode是一模一樣的啊!每個windows程式差不多都是一樣的資訊。
下面還有乙個以字母pe開頭的(紅色框住),就是我們前面說的pe檔案頭了。pe檔案頭的標準大小就是224位元組。
再往下面就是.text,.data.rsrc.等構成的區段表了,區段表也叫做節表,我偷的那張圖沒有表示出來呀,節表的作用就相當於一本書的目錄,能幫助pe載入器準確而快速地載入相應的區段。
我們通過區段名稱就可以大體猜出這個區段裡面包含了什麼資訊,起什麼作用....,因為pe檔案的區段名稱都是有相應的約定的,但是也可以被他人修改掉而不守約定。
乙個可執行檔案不但包括可執行的二進位制**,而且還包括一些其它東西,比如選單啊圖示啊點陣圖啊字串啊等等。
pe檔案格式很好地規定了這些資訊在檔案中是如何組織的。因此在程式被執行的時候系統會按照oe檔案格式約定準確地定位檔案中各種型別的資源,並將其準確地裝入不同的記憶體區域中
pe檔案格式如下
dos mz header dos檔案頭
dos stub dos載入模組
pe header pe檔案頭
section table 區段表
section 1 區段1
section 2 區段2
.....
section n 區段n
dos mz header:也叫dos檔案頭或者dos mz檔案頭,它是以字母mz開頭的資料,在它的偏移量3c處包含著我pe檔案頭的起始位置資訊。
dos stub:就是dos載入模組,以一段this program cannot be run in dos mode為標誌,當程式試圖執行在dos系統下會出現這句話。
pe header:我們要重點研究的pe檔案頭,它是一段以pe字母開頭的資料,預設224位元組,包含了很多資訊。
section table:區段表,又叫節表,是一段記錄這個程式中區段大小、位置與屬性的表。
section 1:區段1,又叫做節,有很多的節,每個節都包含了各種不同的資料。
乙個典型的pe檔案包含以下區段:
.text區段 存放可執行的二進位制**區段
.data區段 初始化資料塊,比如全域性變數
.idata區段 程式所使用的動態鏈結庫等外接函式和檔案資訊。
.rsrc區段 存放程式的資源,圖示,選單
但這些區段的名稱都是可以在編譯程式的時候手動設定,所以有時候不可靠。
PE修復Windows系統密碼
from 本文以winpe為例,介紹修改密碼的方法。2.用光碟或u盤啟動電腦,通過選單欄選擇啟動winpe系統。3.進入winpe系統後,選擇 開始 程式 windows系統維護 windows使用者密碼修復 選單。4.在後續的選擇windows目錄一步,選擇系統目錄,比如 c windows 然後...
PE修復Windows系統密碼
from 本文以winpe為例,介紹修改密碼的方法。2.用光碟或u盤啟動電腦,通過選單欄選擇啟動winpe系統。3.進入winpe系統後,選擇 開始 程式 windows系統維護 windows使用者密碼修復 選單。4.在後續的選擇windows目錄一步,選擇系統目錄,比如 c windows 然後...
我的PE了解
一 什麼是pe檔案。pe portable executable 格式,是微軟win32環境可移植可執行檔案 如exe dll vxd sys和vdm等 的標準檔案格式。二 pe檔案格式 2.1rva va和offset轉換和理解 offset 就是010editor以 0x00 開始的檔案中的位置...