学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1157

主题
发表于 2020-5-7 21:30:08 | 查看: 1759| 回复: 0

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  写入.rdata段节表:
  成员1,8个字节,表识该段的名称,我们这里是.rdata。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员2,4个字节,表示有效代码所占的字节数。我们不知道有多少个有效字节,这里有两种方法来填写这个值,第一就是填写整个段在内存中对齐后的大小10000h,第二就是打开1.exe做参考,我们用第二种方法写入52 00 00 00。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员3,4个字节,表示在.rdata段映射到内存中的起始地址,我们知道.rdata是紧跟.text段后的,.text段的起始地址为1000h大小为1000h,那么紧接着text段的.rdata端应该是1000h+1000h=2000h 也就是00 20 00 00”。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员4,4个字节,表示.rdata段在文件中所占的大小。依然按照对齐后的大小200h来填写,所以此值为“00 02 00 00”。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

   成员5,4个字节,表示.rdata段在文件中的起始地址,上面已经知道.text段的起始地
  址为400h大小为200h,那么他的值实际上也就是.text段的起始偏移地址+.text段的大小,此值为400h+200h=600h“00 06 00 00”。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员6,7,8,9,共占12个字节,都仅用于目标文件,我们这里统统填为零。
      

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  成员10,4个字节。包含标记以指示节属性,我们这里写入40 00 00 40

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  写入.data段节表:
  成员1,8个字节,表识该段的名称,我们这里是.data。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员2,4个字节,表示有效代码所占的字节数。我们放入的数据就是Hello Word共11
  个字节我们换为16进制为0B写入0B 00 00 00。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员3,4个字节,表示在.data段映射到内存中的起始地址,我们知道.data是紧跟.rdata段后的,.rdata段的起始地址为2000h大小为1000h,那么紧接着.rdata段的.data端应该是2000h+1000h=3000h 也就是00 30 00 00”。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

       成员4,4个字节,表示.data段在文件中所占的大小。依然按照对齐后的大小200h来填写,所以此值为“00 02 00 00”。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  成员5,4个字节,表示.data段在文件中的起始地址,上面已经知道.rdata段的起始地
  址为600h大小为200h,那么他的值实际上也就是.rdata段的起始偏移地址+.rdata段的大小,
  此值为600h+200h=800h“00 08 00 00”。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
成员6,7,8,9,均占12个字节,都仅用于目标文件,我们这里统统填为零。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
       成员10,4个字节。包含标记以指示节属性,我们这里写入C0 00 00 40

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  这样整个PE头就完成了,我们知道Pe头在文件中也是按照文件对齐粒度来对齐的,
  我们用c32看一下我们写入了多少个字节,一共写入了552个字节,换做16进制为228h
  照对齐粒度这样是不行的我们必须让他的大小为200h的整数倍即400h,那么我们要填充
  400h-228h=1D8个字节也就是472个字节。

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  现在整个PE头的大小为1024字节,正好是400H的倍数
  现在用0填充段内的数据
  PE头填充完毕后紧接着的就是各个段里的实际内容了,我们一一填充,大家是否记
  得刚才我们写入节表时每一个段在文件里的大小都为200h,那么我们填充.text段200h,
  .rdata段200h,.data段200h共200h+200h+200h=600h
  插入512字节(200H)的节数据

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据

  这就是text段

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  rdata和data段方法都是一样滴,这里不做演示
  由此整个PE文件部分就完成了,大家是不是有点等不及要去双击他了。哈哈,还早,还早。每一个段里面的数据我们还没有写入呢。
  先看一下data的文件起始偏移地址

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  在C32里面Ctrl+G,选择16进制,输入800,到达800H地址这个地方

手写PE第六课 完善节区头并在区段中写入数据

手写PE第六课 完善节区头并在区段中写入数据
  写入Hello Word 注意00结尾

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-4-26 20:19 , Processed in 0.093404 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表