zoukankan      html  css  js  c++  java
  • 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填充的数据.合并之后.出现了数据.说明已经成功合并了这个节了.

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

  • 相关阅读:
    Struts2笔记——ONGL表达式语言
    Struts2笔记——自定义拦截器
    Struts2笔记——Action校验器
    Struts2笔记——文件上传
    Struts2笔记——与ServletAPI解耦
    Struts2笔记——通配符和动态方法调用
    Struts2笔记——类型转换
    Struts2笔记——result结果类型
    MongoDB相关资料
    公开数据集
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/11306257.html
Copyright © 2011-2022 走看看