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

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

      

     

  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/iBinary/p/9737761.html
Copyright © 2011-2022 走看看