PE檔案學習筆記(3)

2021-05-18 01:07:36 字數 1519 閱讀 5407

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邊看變學了 先自己隨便寫個控制台程式,然後加進去就有了,讓後我們可以看看這個檔案到底是怎麼組成的。從這個樹形結構我們能很清楚的理解這個檔案的整體構成,在網上有很...