码迷,mamicode.com
首页 > 其他好文 > 详细

PE知识复习之PE合并节

时间:2018-10-02 22:28:52      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:现在   nbsp   个数   步骤   扩大   怎么   修改   例子   成功   

                      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填充的数据.合并之后.出现了数据.说明已经成功合并了这个节了.

也相当于对这个节进行扩大了.

 

  

 

PE知识复习之PE合并节

标签:现在   nbsp   个数   步骤   扩大   怎么   修改   例子   成功   

原文地址:https://www.cnblogs.com/iBinary/p/9737761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!