PE知識複習之PE合併節

一丶簡介測試

   根據上一講.咱們爲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填充的數據.合併以後.出現了數據.說明已經成功合併了這個節了.

也至關於對這個節進行擴大了.

相關文章
相關標籤/搜索