pe文件节区的删除和增加
节区(.reloc)的删除(按照《逆核》书中的步骤来进行)
整个过程需要四个步骤:
1.删除节区头
2.删除节区
3.修改节区数(number of section)
4.修改映像大小(size of image)
删除节区头
在hxd中找到rva从270到297区域,用0填充
删除节区内容
在hxd中找到poiner to raw data(磁盘中地址c000),删除其后面的所有内容
修改节区数量
找到文件头中的 number of section
同样在hxd中修改其值为4
修改映像大小
因为该文件的section alignment 大小是1000(他指定了节区在内存中的最小单位),而.reloc 节区的大小是E40,所以就要自动补齐为最小单位1000,所以删除该节区就要把image减去1000
将减去的结果在hxd中修改
修改成功
试一下reloc.exe是否能正常运行
增加节区
现在来增加一个名字为new的节区
步骤
1.增加节区头
2.修改节区数量
3.修改image大小
4.增加节区内容
5.修改新增节区的属性(VirtualSize,VirtualAddress,SizeOfRawData,PointerToRawData)
一,增加节区头
hxd中找到之前节区头最后的位置,判断是否有足够空间(看characteristics的第一个数据:40)存放一个节区头
然后填充节区头内容
二,修改节区头数
与删除节区操作一样,将5改为6
三,修改image大小
与之前相同,image大小增加1000 = 12000
四,增加节区内容
在原有的最后一个节区的末尾,增加一个节区的随机内容
五,修改新节区属性大小
现在需要将此时此刻修改一部分的文件保存,再载入peview查看
此时.new节区的属性还没有确定
修改VirtualSize
修改为1000
修改RVA
这里要按照上一个节区的大小来修改(注意对齐)
上一个节区的VirtualSize是E40,对齐后是1000,所以新节区的RVA就是10000+1000=11000,修改它
修改SizeOfRawData
这个大小取决于我们增加的节区内容大小(1000)
修改pointer to raw data
修改的依据是上面两个值相加=D000
修改成功
重新载入peview查看