PE添加节_手动


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  今天在学习PE的过程中通过通过手动对PE文件进行节的添加,过程中遇到了一些问题,写下来以便今后及时复习

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  [1] 确定节的对齐尺寸和内存对齐尺寸,在_IMAGE_OPTIONAL_HEADER下的(DWORD)SectionAlignment(DWORD)FileAlignment可得到对应的节和文件的对齐尺寸

      

SrctionAlignment -> 00 10 00 00

FileAlignment -> 00 02 00 00 

  [2] 查看当前PE文件的节总数,根据_IMAGE_FILE_HEADER下的(WORD)NumberOfSections可得到节的总数

       

NumberOfSection -> 03 00

  [3] 修改节的总数+1


  [4] 在最后一个节表的末尾添加新的节表

      

    上图中.xxxx就是添加的节表,即红色部分。这里有一点得注意,添加的节的后面必须留出40个空字节,系统解析必须。如果添加节表后,后面的空字节区不足40字节时,则不能用这种方法进行添加。

  现在分析我们添加的节的信息:

- [2E 78 78 78 78 00 00 00]BYTE Name[8]这8个字节对应的是节的名称,任意

- [00 02 00 00]DWORD VirtualSize 实际大小(为了方便,与新增的200字节相同

- [00 40 00 00]DWORD VirtualAddress 节区的RVA地址(上一个节.rsrc的VirtualAddress为3000H,SizeOfRawData为400H,

相加后根据内存对齐1000即得到新加节的VirtualAddress为4000H)

- [00 02 00 00]DWORD SizeOfRawData 文件中对齐后的尺寸(添加了200个字节的空字节区,对齐后大小为200)

- [00 0C 00 00]DWORD PointerToRawData物理文件中偏移地址(上面一个.rsrc的PointerToRawData为800H,加.rsrc节的SizeOfRawData得值400H等于C00H 刚好对齐200H)

后面紧跟着得四个成员默认为00即可,最后的DWORD Characteristics为内存属性,按需修改即可

  [5] 在文件的末尾填充512(即200H)字节大小的空白字节区

      

  这里暂时没有加入shellcode,默认填充为00即可


  [6] 修改ImageBase大小,注意对齐后的尺寸


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  修改完成后的,查看我们增加的节的信息如下:

      

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  总结:

1) 上面的过程,不一定的按部就班的来,但查看对齐尺寸是首选

2) 添加新节表的时候,一定要留意后面是否还有空白的40字节大小的00区间

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                                                                                                                                       END   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值