從圖3可以看出,pe檔案的nt頭之後就是節(section)頭,每個節頭的大小是40位元組。在「4.2 image_file_header」中提到,本pe檔案包含9個節,可以從圖3中找到這9個節對應的節頭。表1列出了各節頭的對應節的內容。
表1 節頭對應節的內容
節名內容
節名內容
.bss
未初始化的資料
.data
**節.edata
匯出表.idata
匯入表.pdata
異常資訊
.rdata
唯讀的已初始化資料(常量)
.reloc
重定位資訊
.rsrc
資源目錄
.sbss
與gp相關的未初始化資料
.sdata
與gp相關的已初始化資料
.text
預設**節
.idlsym
包含已註冊的seh,以支援idl
在peview左側的樹形控制項中選擇iamge_section_header.text,即預設**節的節頭,在右側可以看到預設**節的節頭格式,如圖11所示。
圖11 iamge_section_header.text結構
其中,name表示節頭的名稱,其大小為8個位元組;virtual size表示節頭對應的節的大小,其大小為4個位元組;rva是relative virtual address的簡稱,即相對虛擬位址,指定了節頭對應節的rva,其大小為4個位元組;size of raw data指的是磁碟檔案中已經初始化資料的大小,其大小為4個位元組;pointer to raw data、pointer to relocations和pointer to line numbers分別儲存了節中資料起始位址、重定位項起始位址和行號資訊數量的位址,大小均為4個位元組;number of relocations和number of line numbers分別表示節中重定位項的數量和行號資訊的數量,大小均為2個位元組,characteristics是描述節特徵的標誌,大小為4個位元組。
在「5.1 節頭的格式」中提到,characteristics是描述節特徵的標誌,其大小為4個位元組,共32位,每位的含義如表2所示。
表2 characteristics各位含義
位數含義
位數含義
1-5未使用
26此節可以在需要時被丟棄
6此節包含可執行**
27此節不能被快取
7此節包含已初始化的資料
28此節不能被交換到頁面檔案中
8此節包含未初始化的資料
29此節可以在記憶體中共享
9-15
未使用30
此節可以作為**執行
16此節包含通過全域性指標來引用的資料
31此節可讀
17-24
未使用32
此節可寫
25此節包含擴充套件的重定位資訊
從圖11可以看出,該pe檔案的characteristics的值是0x20000060,即10 0000 0000 0000 0000 0000 0110 0000,對應表2可以看出,該pe檔案的預設**節中包含了可執行**、已初始化資料,並且該節可以作為**執行。
利用 PEview 分析 PE 檔案結構
對照 import descriptor 結構體,給出遍歷 int 得到原始檔中呼叫函式的 函式名 庫名 函式索引 源程式 wsample01a.exe 首先了解import descriptor結構體在 首先是最外面一層,可選pe頭 接著進入可選pe頭 dword aoe dword imageb...
PE 檔案格式分析
pe 檔案格式分析 pe檔案是任何可執行模組或者 dll的檔案格式。pe檔案以 64位元組的 dos檔案頭 image dos header,開始,之後是一小段 dos程式 dos頭的概念是從 16位的 windows 可執行程式 ne格式 中來的,這個部分主要用在 os 2 可執行程式 自解壓文件...
PE檔案的裝載過程(4)
上週畢業答辯,沒完成任務,慚愧慚愧。可選頭的最後一部分是datadirectory欄位,這個字段包含了16個image data directory結構,結構的定義如下 image data directory struct virtualaddress dword 資料的起始rva isize d...