pe是microsoft為了讓程式在windows上可移植而做的一種檔案格式規定。
windows在執行exe程式的時候,pe檔案載入器會按照約定載入exe程式,所以程式就正常地執行起來了。
比如像exe,dll,sys這種格式的檔案就是pe格式檔案。
根據pe檔案結構知識;
pe頭 image_nt_header 的字段, image_nt_header.signature,偏移
+0000h,雙字,此處為pe檔案標識,值為00004550h,就是字元'p'、'e',加上兩個0。
如果修改其中任何乙個位元組,會導致可執行檔案在32位系統中載入失敗。
下面來手動修改此字段值,看下會有什麼效果。
先準備用記事本來實驗;用winhex開啟notepad.exe,看下pe檔案標識在偏移為000000f0的一行處;
00 00 45 50;倒著看的;winhex面板的第三列標識出字串'pe';
但是試用版的winhex只能修改儲存小於200k的檔案;notepad.exe大於200k;
windows目錄下還有write.exe,拿它來做試驗;
拷貝到g盤實驗;因為windows目錄下有寫保護,不能儲存修改;
看一下在g盤開啟write.exe,可以開啟;
用winhex開啟write.exe;pe 檔案標識在偏移為000000f0的一行處;如下圖;
把45 50 修改為37 42;
如何使用winhex修改檔案見此;
然後儲存;
然後再執行write.exe,無法執行了;
PE檔案詳解之PE檔案頭
1,pe檔案頭 pe header 緊挨著 dos stub 2,pe header 是pe相關結構nt映像頭 image nt header 的簡稱。裡面包含著許多pe裝載器用到的重要字段。3,執行體在支援pe檔案結構的作業系統中執行時,pe裝載器將從 image dos header 結構中的 ...
PE檔案詳解之PE檔案頭
1,pe檔案頭 pe header 緊挨著 dos stub 2,pe header 是pe相關結構nt映像頭 image nt header 的簡稱。裡面包含著許多pe裝載器用到的重要字段。3,執行體在支援pe檔案結構的作業系統中執行時,pe裝載器將從 image dos header 結構中的 ...
Dll注入 修改PE檔案頭
dll注入,除了常見的遠執行緒注入,掛鉤和修改登錄檔以外還可以通過修改pe檔案頭來達到注入目的,廢話少說先上菜。pe檔案經常會呼叫外部dll檔案,而需要呼叫的dll檔案都會在pe檔案說明,通過 nt頭 可選頭 匯入表 可以找到匯入表,而匯入表就是對需要匯入的每個dll的說明,它實際上是乙個20個位元...