PE知識復習之PE合並節
一丶簡介
根據上一講.我們為PE新增了一個節. 並且屬性了各個成員中的相互配合. 例如文件頭記錄節個數.我們新增節就要修改這個個數.
那么現在我們要合並一個節.以上一講我們例子講解.
以前我們講過PE擴大一個節怎么做. 合並節跟擴大節類似. 只不過一個是擴大. 一個是合並了.
合並節的步驟.
1.修改文件頭節表個數
2.修改節表中的屬性
節.sIzeofRawData 節數據對齊后的大小.
3.修改擴展頭中PE鏡像大小 SizeofImage
4.被合並的節以0填充.
二丶實戰合並一個節
1.修改文件頭中節表個數
為什么修改應該不用多說了. 我們既然合並. 那么節就要少一個.那么自然就進行修改了.

原節表有8個.我們修改為7即可.
2.修改節.SizeofRawData 節數據對齊后的大小.

我們把最后的AAAA節.合並到上一個節.rsrc中.
.rsrc.SizeofRawData = .文件對齊(rsrc.SizeofRawData + AAA.節數據的大小)
修改這個屬性就按照上面的公式修改就行.原來節數據大小.加上要被合並的節的數據大小.按照文件對齊存放即可.
例如下圖:

原來節數據對齊后的大小是0x600. AAAA節數據對齊后的大小是0x1000.那么修改.rsrc.SizeofRawData 為 0x1600即可.

最后一個節表以0填充即可.
3.修改擴展頭的PE鏡像大小. SizeofImage

我們上一講新增了一個節.所以映像大小為0x1E000. 所以現在要進行修改.合並了0x1000數據大小.那么改為0x1D000即可.
4.測試程序
程序可以直接運行.那么內存中看看節展開位置有沒有我們的合並節的節數據.

內存中0x41c000位置.就是節展開位置.我們沒有合並之前.並沒有我們的FFFF填充的數據.合並之后.出現了數據.說明已經成功合並了這個節了.
也相當於對這個節進行擴大了.

