PE知识复习之PE合并节

                      PE知识复习之PE合并节

一丶简介

   根据上一讲.我们为PE新增了一个节. 并且属性了各个成员中的相互配合. 例如文件头记录节个数.我们新增节就要修改这个个数.

那么现在我们要合并一个节.以上一讲我们例子讲解.

  以前我们讲过PE扩大一个节怎么做. 合并节跟扩大节类似. 只不过一个是扩大. 一个是合并了.

合并节的步骤.

  1.修改文件头节表个数

  2.修改节表中的属性

    节.sIzeofRawData 节数据对齐后的大小.

  3.修改扩展头中PE镜像大小 SizeofImage

  4.被合并的节以0填充.

二丶实战合并一个节

  1.修改文件头中节表个数

     为什么修改应该不用多说了. 我们既然合并. 那么节就要少一个.那么自然就进行修改了.

PE知识复习之PE合并节

原节表有8个.我们修改为7即可.

  2.修改节.SizeofRawData 节数据对齐后的大小.

 PE知识复习之PE合并节

我们把最后的AAAA节.合并到上一个节.rsrc中.

  .rsrc.SizeofRawData = .文件对齐(rsrc.SizeofRawData + AAA.节数据的大小)

修改这个属性就按照上面的公式修改就行.原来节数据大小.加上要被合并的节的数据大小.按照文件对齐存放即可.

  例如下图:

  PE知识复习之PE合并节

原来节数据对齐后的大小是0x600. AAAA节数据对齐后的大小是0x1000.那么修改.rsrc.SizeofRawData 为 0x1600即可.

PE知识复习之PE合并节

  最后一个节表以0填充即可.

  3.修改扩展头的PE镜像大小. SizeofImage

PE知识复习之PE合并节

我们上一讲新增了一个节.所以映像大小为0x1E000. 所以现在要进行修改.合并了0x1000数据大小.那么改为0x1D000即可.

  4.测试程序

PE知识复习之PE合并节

程序可以直接运行.那么内存中看看节展开位置有没有我们的合并节的节数据.

PE知识复习之PE合并节

内存中0x41c000位置.就是节展开位置.我们没有合并之前.并没有我们的FFFF填充的数据.合并之后.出现了数据.说明已经成功合并了这个节了.

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

  

 

上一篇:ASP.NET Word转为PDF


下一篇:使用JDBC向数据库中插入一条数据