一丶簡介測試
根據上一講.咱們爲PE新增了一個節. 而且屬性了各個成員中的相互配合. 例如文件頭記錄節個數.咱們新增節就要修改這個個數.blog
那麼如今咱們要合併一個節.以上一講咱們例子講解.內存
之前咱們講過PE擴大一個節怎麼作. 合併節跟擴大節相似. 只不過一個是擴大. 一個是合併了.擴展
合併節的步驟.程序
1.修改文件頭節表個數im
2.修改節表中的屬性數據
節.sIzeofRawData 節數據對齊後的大小.db
3.修改擴展頭中PE鏡像大小 SizeofImageimg
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填充的數據.合併以後.出現了數據.說明已經成功合併了這個節了.
也至關於對這個節進行擴大了.