Как отключить ASLR (рандомизацию размещения адресного пространства) в Windows 7 x64?

Как отключить ASLR в Windows 7 x64, чтобы моя программа всегда загружала общий ЭЛТ по одному и тому же адресу?

4 ответа

Решение

Параметр реестра доступен для принудительного включения или отключения ASLR для всех исполняемых файлов и библиотек и находится по адресу HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages,

Ранее вы должны были разрешить компоновщику использовать ASLR. Теперь вы должны отказаться:

/DYNAMICBASE[:NO]

(Visual Studio 2012: свойства конфигурации -> компоновщик -> расширенный -> "случайный базовый адрес")

Вы также можете сделать это программно.

Пакет Enhanced Mitigation Experience Toolkit (EMET), который можно загрузить с сайта Microsoft, позволяет включать / отключать ASLR для системы или процесса.

Способ 1 (отключив его глобально)

(как отмечалось в комментарии выше , это может быть нежелательно для вашей системы, и, возможно, вы сможете восстановить ее после выполнения вашей небольшой задачи)

из cmd/Batch вы можете попробовать добавить эти два значения:

      REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v MoveImages /t REG_DWORD /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel" /v MitigationOptions /t REG_BINARY /d "00000000000000000000000000000000" /f

Способ 2 – отключение только для конкретного приложения

из PowerShell:

      Get-Item -Path "C:\Program Files\Git\usr\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }

или с помощью экспериментального приложения:

      cd %tmp%
wget http://www.didierstevens.com/files/software/setdllcharacteristics_v0_0_0_1.zip -o sdc.zip
Expand-Archive -Path sdc.zip -DestinationPath ./
./setdllcharacteristics.exe -d "C:\path\to\your\app.exe"
Другие вопросы по тегам