Как отключить 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"