PE檔案學習筆記

2021-05-10 09:38:39 字數 1117 閱讀 8878

了解pe檔案是了解windows系統的必經之路。下面把自己學習pe檔案相關知識的方法以及經驗和大家分享,其中前半部分在很大程度上參考了《windows核心程式設計》,只是簡單的從中提取出個人認為精煉的分析,並新增一點個人的理解。如果你也想學習windows程式設計,了解windows系統是如何執行的,那麼這本書絕對不可或缺。

學習一種新知識總喜歡用「hello world」開始。呵呵。

編譯hello world

使用 windows

的 cl.exe

對 hello world

原始檔進行編譯,生成

.exe

檔案,即

pe(portable execute)

檔案。 使用

peid

(乙個用於分析

pe pe

檔案的格式。

可以檢視各section的偏移量及大小,如下圖

pe檔案與虛擬記憶體對映

win32

下系統為每個程序分配了

3g 大小的虛擬記憶體空間,程序執行時,將所需動態鏈結庫以及

pe 檔案等,

載入到虛擬記憶體中,

.exe

檔案裝載基址為

00400000 。

pe 檔案與虛擬記憶體

之間對映關係

記憶體中程序位址空間分割槽

程序位址空間分割槽(核心模式)

核心模式分割槽存放作業系統駐留**。執行緒排程,記憶體管理,檔案系統支援,網路支援和所有裝置驅動程式**都存放於此。此分割槽可被所用程序共享。試圖訪問此分割槽中的記憶體位址,程序將會引發記憶體非法訪問,系統向使用者提示並將應用程式關閉。

(那麼所有程序又是如何共享此分割槽的呢?)

程序位址空間分割槽(64kb禁止進入)

為了作業系統實現的簡單而設此分割槽,假設使用者模式分割槽和核心模式分割槽緊挨,在使用者模式下分配一段空間可能會影響到核心模式分割槽。設定64kb禁止進入區就可以防止違規訪問,避免核心**受到影響。

程序位址空間分割槽(無效斷點分配)

此分割槽用於幫助程式設計師捕獲無效斷點分配(叫無效指標分配更好一些)。

當函式返回

null

( 0x00000000

)時,對該記憶體位址進行訪問,將被認定為非法訪問操作,作業系統終止這個程序的執行。

PE檔案學習筆記(3)

the section table 這個字段位於pe 表頭和真正的 section 資料之間,其中內含 image 的 每乙個sections 的資訊。section table 的每一筆資料貯存了乙個位址,在那裡,檔案的原始資料被映像到記憶體。雖然sections 類似 32 位的 segment...

PE檔案學習系列筆記四 C 實現PE檔案的分析

合肥程式設計師群 49313181。合肥實名程式設計師群 128131462 不願透露姓名和資訊者勿加入 q q 408365330 e mail egojit qq.com 綜述 c 實現 首先實現這些如圖程式的功能,其中包括識別是否是pe檔案,其次是給出,pe檔案在磁碟中的對齊尺寸和記憶體中的對...

PE 檔案格式學習

以前總在網上看看介紹pe檔案格式的文章,看的時候看到一大堆的結構體就蛋疼了,想想現在我這個居然都不清楚以後咋裝bi呢 今天下了個peview邊看變學了 先自己隨便寫個控制台程式,然後加進去就有了,讓後我們可以看看這個檔案到底是怎麼組成的。從這個樹形結構我們能很清楚的理解這個檔案的整體構成,在網上有很...