前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PE知识复习之PE合并节

PE知识复习之PE合并节

作者头像
IBinary
发布2019-05-25 16:40:30
9040
发布2019-05-25 16:40:30
举报
文章被收录于专栏:逆向技术逆向技术

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •                       PE知识复习之PE合并节
  • 一丶简介
  • 二丶实战合并一个节
    •   1.修改文件头中节表个数
      •   2.修改节.SizeofRawData 节数据对齐后的大小.
        •   3.修改扩展头的PE镜像大小. SizeofImage
          •   4.测试程序
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档