我想將ASLR添加到使用vsprops文件的項目。我已驗證該文件正在被項目使用,因爲文件中正在應用其他設置,並且在MSVC下打開項目時故意損壞文件會產生錯誤。當我將ASLR設置爲yes
時,我可以在<Tool Name=VCLinkerTool
下看到RandomizedBaseAddress="2"
。MSVC鏈接器不會通過vsprops文件應用RandomizedBaseAddress
但是...它沒有效果。我也可以把RandomizedBaseAddress="xxxxx"
它不在乎。就好像鏈接器的設置沒有被拾取。我也試過GenerateDebugInformation="True"
這是我見過其他vsprops文件使用的另一種設置,這也被忽略了。就好像鏈接器忽略了vsprops文件或其中的這些設置。
什麼給?有沒有人見過這個?
一個提示是我可以在vsprops文件中指定'RandomizedBaseAddress =「xxxxx」'這個事實,它沒有給我任何錯誤。 – fbrereto 2010-10-18 18:28:41
最簡單的檢查方法是運行dumpbin/headers並查看頭文件是否包含「Dynamic Base」DLL特徵。 – EricLaw 2010-10-18 18:28:45
@fbrereto:那根本沒有證據,它可以將所有非零值視爲true,因爲它是我在MSVC中看到的唯一選項,它將圖像標記爲與ASLR不兼容。唯一不錯的測試方法是使用調試器/ GetModuleHandle檢查頭文件或更好地檢查實際的加載地址(如果圖像具有固定的基礎,並且未標記爲不兼容,則ASLR實際上仍然會啓動) – Necrolis 2010-10-18 18:34:54