左邊的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檔案了。下面我們就來實現前面的假設。我們...