Я пытаюсь добавить ASLR в проект, используя файл vsprops. Я подтвердил, что файл используется проектом, так как в применяемом файле есть другие настройки, и умышленное искажение файла приводит к ошибке при открытии проекта под MSVC. Когда я установил ASLR в yes
, я могу видеть RandomizedBaseAddress="2"
под номером <Tool Name=VCLinkerTool
.MSVC linker не будет применять RandomizedBaseAddress через файл vsprops
но ... Это не имеет никакого эффекта. Я также могу поставить RandomizedBaseAddress="xxxxx"
, и это все равно. Это похоже на то, что настройки для компоновщика не собираются. Я также попробовал GenerateDebugInformation="True"
, который является другим параметром, который я видел в других файлах vsprops, и это тоже игнорируется. Это как если бы линкер игнорировал файл vsprops или эти настройки в нем.
Что дает? Кто-нибудь видел это раньше?
Одним из намеков был факт, что я мог указать «RandomizedBaseAddress =« xxxxx »в файле vsprops и не дал мне никакой ошибки. – fbrereto
Простейший способ проверки - запустить dumpbin/headers и посмотреть, содержат ли заголовки DLL-характеристики Dynamic Base. – EricLaw
@fbrereto: это вообще не доказательство, оно может относиться ко всем ненулевым значениям как истинным, так как это единственные параметры, которые я вижу в MSVC, - это отметить, что изображение несовместимо с ASLR. Единственные хорошие способы тестирования - проверить заголовки или лучше, используя отладчик/GetModuleHandle, чтобы проверить фактические адреса загрузки (ASLR может на самом деле по-прежнему играть, если изображение имеет фиксированную базу и не помечено как несовместимое) – Necrolis