the section table
這個字段位於pe 表頭和真正的 section 資料之間,其中內含 image 的
每乙個sections 的資訊。
section table 的每一筆資料貯存了乙個位址,
在那裡,檔案的原始資料被映像到記憶體。雖然sections 類似 32 位的
segments ,事實上它們不是乙個個的 segments ,而是行程虛擬位址空間中
一塊記憶體範圍。
而且pe中的大部分重要的code 或 data 都會被存放在乙個section 之中。也就 是說
程式或作業系統所需的任何 code 或 data 都可能有它自己的 section 。
對於相比之下的ne檔案老說就不是這樣,因為有許多code或data都未被重視然
後儲存在ne表頭的邊緣
image_section_header 的結構組成如下
1. byte name[image_sizeof_short_name]
表示 section 名稱,例如 ".text"。在c++中#pragma code_seg 或
#pragma data_seg 方式可以建立自己的資料段,這一點曾經在dll中嘗試過
並且還設定了共享的屬性來使多個程序使用!
2. union misc;
在 exe 中它代表 code section 或 data section 的虛擬大小,這是在它
們被調整之前的大小,而還有的sizeofrawdata 欄位則是調整後的大小。
3. dword virtualaddress
代表載入器應該將 section 映像過去的 rva 位置。為了計算section 的真
正起始位址,你必須將此值再加上基位址。微軟的工具把第乙個 section 的
此一字段設為 0x1000 。
4.dword sizeofrawdata
這個字段代表 section 大小被調整後的值。所謂調整就是將所有section的大
小擴充套件成為file-alignment的整數倍。當然要是最接近的整數倍。
5. dword pointertorawdata
這是以檔案起頭為基準的偏移值,section 的原始資料可以在該處尋獲。相對
來說比較重要。
6.dword pointertorelocations
在 exes 中,這個字段(以及下一欄位)沒有意義,總是為 0 。
7.dword pointertolinenumbers
行號表的偏移值,與codeview 除錯有關,行號資訊被收集放在檔案的最尾端
8. word numberofrelocations
重定位專案個數,只用於obj
9.word numberoflinenumbers
由 pointertolinenumbers 指向的行號**中的行號個數。
10. dword characteristics
這個欄位是一組旗標值,用來表示 section 中的屬性,可讀可寫共享等
等。。。
PE檔案學習筆記
了解pe檔案是了解windows系統的必經之路。下面把自己學習pe檔案相關知識的方法以及經驗和大家分享,其中前半部分在很大程度上參考了 windows核心程式設計 只是簡單的從中提取出個人認為精煉的分析,並新增一點個人的理解。如果你也想學習windows程式設計,了解windows系統是如何執行的,...
PE檔案學習系列筆記四 C 實現PE檔案的分析
合肥程式設計師群 49313181。合肥實名程式設計師群 128131462 不願透露姓名和資訊者勿加入 q q 408365330 e mail egojit qq.com 綜述 c 實現 首先實現這些如圖程式的功能,其中包括識別是否是pe檔案,其次是給出,pe檔案在磁碟中的對齊尺寸和記憶體中的對...
PE 檔案格式學習
以前總在網上看看介紹pe檔案格式的文章,看的時候看到一大堆的結構體就蛋疼了,想想現在我這個居然都不清楚以後咋裝bi呢 今天下了個peview邊看變學了 先自己隨便寫個控制台程式,然後加進去就有了,讓後我們可以看看這個檔案到底是怎麼組成的。從這個樹形結構我們能很清楚的理解這個檔案的整體構成,在網上有很...