PE结构-添加节表和节(附实例代码)

时间:2024-03-21 20:04:38

预备知识

文件结构示意图:
PE结构-添加节表和节(附实例代码)

添加节表和节的步骤说明:

1、判断是否有足够的空间,可以添加一个节表.
判断条件:
SizeOfHeader - (DOS + 垃圾数据 + PE标记 + 标准PE头 + 可选PE头 + 已存在节表) >= 2个节表的大小 (如果只有一个节表以上的空间也可以加不会报错,但是会有安全隐患)

2、需要修改的数据

  1. 添加一个新的节(可以copy一份)
  2. 在新增节后面 填充一个节大小的000
  3. 修改PE头中节的数量
  4. 修改sizeOfImage的大小
  5. 再原有数据的最后,新增一个节的数据(内存对齐的整数倍)
  6. 修正新增节表的属性

手工添加步骤

1.检查是否有足够空间

如图:
手工添加有两种方法查看是否有足够空间问题
1.第一种方法:使用HEX文本编辑器找到最后一个节表,查看空白区
2.第二种方法:使用PETools查看SizeofHeaders大小和最后一个节表存的地址相减。
0x00001000 - 0x00000294 (空间足够了)
注:一个节表大小为40字节
PE结构-添加节表和节(附实例代码)

2.添加一个新的节

copy .text段节表,到下面,作为新的节。更改名称为.tttt

修改前:
PE结构-添加节表和节(附实例代码)

修改后:
PE结构-添加节表和节(附实例代码)

3.修正节的数量

修改前:
PE结构-添加节表和节(附实例代码)

修改后:
PE结构-添加节表和节(附实例代码)

4 修改sizeOfImage的大小

修改前:
PE结构-添加节表和节(附实例代码)

修改后:
我们这里增加新的节表大小为0x1000所以把原来的033000,改成034000就行了
PE结构-添加节表和节(附实例代码)

5 再原有数据的最后,新增一个节的数据(内存对齐的整数倍)

修改前:
PE结构-添加节表和节(附实例代码)

修改后:
PE结构-添加节表和节(附实例代码)

6 修正新增节表的属性

首先看一下,现在节表的情况:
PE结构-添加节表和节(附实例代码)

修正信息 :
PE结构-添加节表和节(附实例代码)

测试图

PE结构-添加节表和节(附实例代码)

开源地址:

源代码: https://github.com/vShellCode/Analysis-of-PE-structure
觉得不错请给个star!