如何在Windows 7 x64上禁用ASLR(地址空间布局随机化)



如何在Windows 7 x64上禁用ASLR,以便我的程序始终在同一地址加载共享CRT?

以前您必须选择允许链接器使用ASLR。现在,你必须选择退出:

/DYNAMICBASE[:NO]

(Visual Studio 2012:配置属性->链接器->高级->"随机化基地址")

您也可以通过编程来实现。

可从Microsoft下载的增强型缓解体验工具包(EMET)允许在系统或流程的基础上启用/禁用ASLR。

可以在HKLMSYSTEMCurrentControlSetControlSession ManagerMemory ManagementMoveImages中找到一个注册表设置,用于强制启用或禁用所有可执行文件和库的ASLR。

方法1(通过全局禁用它)

(如以上评论所述,这可能对您的系统不理想,也许您可以在完成小任务后将其恢复)

从cmd/Batch,您可以尝试添加以下两个值:

REG ADD "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management" /v MoveImages /t REG_DWORD /d 0 /f
REG ADD "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel" /v MitigationOptions /t REG_BINARY /d "00000000000000000000000000000000" /f

方法2-仅针对特定应用程序禁用

来自powershell:

Get-Item -Path "C:Program FilesGitusrbin*.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:pathtoyourapp.exe"

最新更新