zoukankan      html  css  js  c++  java
  • PE知识复习之PE合并节

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

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

      

     

  • 相关阅读:
    爬取中华网科技新闻
    爬取斗鱼图片
    链表09-开发可用链表(将链表变为对象数组)
    链表08-开发可用链表(数据删除)
    链表07-开发可用链表(修改指定索引内容)
    链表06-开发可用链表(根据索引取得数据)
    链表05-开发可用链表(判断某一个数据是否存在)
    链表05-开发可用链表(判断是否为空链表)
    链表04-开发可用链表(取得链表中保存的元素个数)
    链表03-开发可用链表(实现数据增加)
  • 原文地址:https://www.cnblogs.com/iBinary/p/9737761.html
Copyright © 2011-2022 走看看