有没有人注意到,如果你导入一个exe文件作为资源,它得到重定位,似乎它的PE头被重建?C++ visual studio 2010 exe中的资源获取Rebased?
有时候,这是令人讨厌的。有谁知道如何禁用rebasing!?
重现步骤在C++:
1)编译的hello world并手动设置其基地址(在属性),以让说0x1000000
2)使第二个项目并包括世界你好成资源。同样手动设置其基地址如上。
3)建立第二个项目
4)提取资源的exe和与PE编辑器检查它!它被设置回0x400000。为什么?!
您的配置根据http://msdn.microsoft.com/en-us/library/hh7adf4f.aspx,你可能有问题:请加链接器参数。无论如何,我认为有很多可以重塑PE的程序,所以也许可以考虑尝试一下...... –
editbin.exe据我了解,是一个外部程序,可以在编译后运行。重建PE头不会对上述情况产生任何影响。你错过了这一点。 – Ray
资源编译器和资源API都不知道有关EXE文件的任何信息。他们把它们当作一个字节块来对待。因此,他们无法做任何事情来改变基地址。问题在于别处。 –