P45新增节

新增节:
1、判断是否有足够的空间,可以添加一个节表.
判断条件:
SizeOfHeader - (DOS + 垃圾数据 + PE标记 + 标准PE头 + 可选PE头 + 已存在节表) >= 2个节表的大小
2、需要修改的数据
1) 添加一个新的节(可以copy一份)
2) 在新增节后面 填充一个节大小的000
3) 修改PE头中节的数量
4) 修改sizeOfImage的大小
5) 再原有数据的最后,新增一个节的数据(内存对齐的整数倍).
6)修正新增节表的属性
我们怎么修改新的节表的属性
1)VirtualSize的修正:跟内存对齐相等即可,内存对齐的倍数就行
2)VirtualAddress的修正:看上一个节表的属性,如果文件对齐和内存对齐相等,就等于上一个节的VirtualAdress+RawSize,如果文件和内存对齐不相等,就等于上一个节的VirtualAdress+RawSize(内存对齐后的大小)
3)SizeOfRaw的修正:和VirtualSize一样即可
4)PointToRawData的修正:上一个节的PointToRawData+SizeOfRaw

 

posted @ 2023-05-08 17:48  摸鱼小曹  阅读(24)  评论(0编辑  收藏  举报