目前想到的关于修改节表就是新增节和节表移位,其它的改节的读写什么的就改个Flag而已就不说了。以后有新的想法再添加。
1.新增节
现在很多解析PE格式的软件都有添加节的功能,具体代码怎么写,下面就说一下。PE格式结构排布顺序是这样:Dos头->DosStub->NT头->节表->Padding->节内容。
在节表之后因为文件对齐的关系,可能会多出一段00,这一段00就可以用来扩充节表。
首先,要找到节表位置:
图中选择的部分就是最后一个节表位置,箭头部分就是要添加新节表的位置。用代码算算偏移就可以找到,手动找的话就从上面顺序找下来,找到以点开头的这一堆结构(正常程序),从点开始的40个字节就是节表的一项,然后一直偏移到后面00的位置就行了。
可以看到箭头所指的位置为0x2b0,根据此程序的文件对齐大小,得知程序内容开始在0x400处,之间就有很多空间来添加自己的东西。比如加新节表、代码、数据都可以。
根据节的结构修改内容,节结构是这样(Winnt.h):
#define IMAGE_S