有沒有人注意到,如果你導入一個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文件的任何信息。他們把它們當作一個字節塊來對待。因此,他們無法做任何事情來改變基地址。問題在於別處。 –