PE2 PE節表的拉伸和偏移

2021-08-28 19:21:21 字數 1832 閱讀 5452

左邊的16進製制就是一堆節表,右邊的視窗可以看見text,rdata等等,這裡顯示的就是節表的名字

節表是什麼?

簡單來說,節表就是描述節的資訊,像一本書的目錄一樣

節表的數量由file頭中的numberofsections來控制

dos頭->pe標記->file頭->可選pe頭->節表
節表就存在於可選pe頭的後面

但是節表裡儲存的資訊遠遠不止3個

//節表資訊

typedef struct _image_section_header misc;

dword virtualaddress;//虛擬位址

dword sizeofrawdata;//檔案中的大小

dword pointertorawdata;//檔案中的位址

dword pointertorelocations;

dword pointertolinenumbers;

word numberofrelocations;

word numberoflinenumbers;

dword characteristics;//該節的屬性

當乙個pe檔案被雙擊執行以後,會向作業系統申請建立程序等等,,,

首先就是拉伸pe檔案,根據節表中的節虛擬偏移,虛擬大小來重新拉伸乙個imagebuffer,這個過程被稱為pe loader

當我們在某個地方儲存了乙個資料,在檔案中的偏移與在記憶體中的偏移是有區別的,所以也就存在了檔案位址和虛擬位址的互相轉換(在pe檔案中寫入乙個資料,保證執行起來以後這個資料還能正確讀取等等)

當乙個pe檔案被拉伸後,記憶體中大致的樣子

【名詞解釋】:

·基位址(imagebase).

·虛擬位址(virtual address, va).

·相對虛擬位址(relative virtual address, rva).

·檔案偏移位址(file offset) 又稱 實體地址(raw offset).

【計算公式】:

·相對虛擬位址(rva) = 虛擬位址(va) - 基位址(imagebase).

·虛擬位址(va) = 相對虛擬位址(rva) + 基位址(imagebase).

·檔案偏移(file offset) = 相對虛擬位址(rva) - 該位址所在節的虛擬偏移(virtual offset) + 該位址所在節的物理偏移(raw offset).

·相對虛擬位址(rva) = 檔案偏移(file offset) - 該位址所在節的物理偏移(raw offset) + 該位址所在節的虛擬偏移(virtual offset).

PE知識複習之PE的節表

確定節表位置 dos nt頭下面就是節表.確定節表數量 節表數量在檔案頭中存放著.可以準確知道節表有多少個.節表是乙個結構體陣列.沒乙個節表表示了資料在哪,怎麼儲存.下方是節的結構體 typedef struct image section header misc dword virtualaddr...

PE檔案(2)匯出表

匯出表就是記載著動態鏈結庫的一些匯出資訊。通過匯出表,dll 檔案可以向系統提供匯出函式的名稱 序號和入口位址等資訊,windows 載入器通過這些資訊來完成動態連線的整個過程。擴充套件名為.exe 的pe 檔案中一般不存在匯出表,而大部分的.dll 檔案中都包含匯出表。但這並不是絕對的。例如純粹用...

PE教程2 檢驗PE檔案的有效性

如何才能校驗指定檔案是否為一有效 pe檔案呢 這個問題很難回答,完全取決於想要的精準程度。您可以檢驗 pe檔案格式裡的各個資料結構,或者僅校驗一些關鍵資料結構。大多數情況下,沒有必要校驗檔案裡的每乙個資料結構,只要一些關鍵資料結構有效,我們就認為是有效的 pe檔案了。下面我們就來實現前面的假設。我們...