-
-
[求助]通过修改PE的文件对齐FileAlignment,把原exe文件拉伸
-
发表于:
2017-12-15 16:56
3358
-
[求助]通过修改PE的文件对齐FileAlignment,把原exe文件拉伸
新求帮助! 谢谢!
最近在学习PE文件格式,了解了PE的 DOS头 、NT头(PE标识、标准PE头、可选PE头)、节表等相关信息。 想手动做些小程序来加深学习。
我写了一份拉伸PE文件的代码,预期结果是拉伸后的PE文件还可以执行。
原exe文件的 FileAlignment = 0x200 SectionAlignment = 0x1000,我想把这个FileAlignment的值改为0x1000,然后按照这个文件对齐来拉伸exe文件,并保证它正常运行。
我做了以下的修改:
FileAlignment = 0x1000
SizeOfHeaders = 0x1000 (原exe为0x200,现在按照0x1000对齐后的值)
节头中的的 SizeOfRawData 和 PointerToRawData字段也按照0x1000对齐后做了修改
现在拉伸出来的exe通过010editer的exe模板可以解析,节数据内容和原exe的内容相同,但是程序无法运行,错误提示为:不是有效的win32应用程序
为了验证程序是否拉伸时各个节数据的偏移是否有误,我找了一个新的exe文件,该exe的FileAlignment和SectionAlignment相同,
运行我的代码之后保存的新exe可以运行,我觉得拉伸代码的算法应该没有问题,是不是还有其他的字段我没有修改?
在此请求帮助, 怎么样把一个0x200文件对齐的exe拉伸成一个0x1000文件对齐的exe?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)