ASLR技术及关闭与开启

ASLR(Address Space Layout Randomization)技术用于防止缓冲区溢出攻击,通过随机化PE文件、栈和堆的内存位置。从Windows Vista/Server 2008开始引入。关闭ASLR可通过修改PE文件的DLL Characteristics字段或调整注册表,具体操作包括将DLL Characteristics值变为8100,或创建Memory Management下的MoveImages键值并设为0。开启ASLR则需删除MoveImages键值,系统重启后生效。请注意,改动ASLR可能影响系统安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASLR技术会使PE文件每次加载到内存的起始地址随机变化,并且进程的栈和堆的起始地址也会随机改变。微软从windows vista/windows server 2008(kernel version 6.0)开始采用ASLR技术,主要目的是为了防止缓冲区溢出。
该技术需要操作系统和编译工具的双重支持(主要是操作系统的支持,编译工具主要作用是生成支持ASLR的PE格式)。
我们这里要动手关闭aslr,可以修改IMAGE_OPTIONAL_HEADER的DLL Characteristics字段,下面是DLL Characteristics的属性值,相或代表属性叠加。

#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // DLL can move. ASLR
#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 // Code Integrity Image
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 // Image is NX compatible  DEP
#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 // Image understands isolation and doesn't want it
#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 // Image does not use SEH. No SE handler may reside in this image
#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 // Do not bind this image. // 0x1000 // Reserved.
#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 // Driver uses WDM model // 0x4000 // Reserved.
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000

将8140改为8100,也就是让DLL不能move,ASLR就被关掉了。

也可以通过修改注册表的方式取消系统的ASLR功能。该功能是一个安全选项,无特殊需要不建议关闭。

win+r,输入regedit,打开注册表,新建注册表项
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Memory Management] “MoveImages”=dword:00000000
就可关闭ASLR。

删除该键值项,就可以开启ASLR功能。

通过注册表修改ASLR需要重启机器。

参考:
https://blog.youkuaiyun.com/weixin_43742894/article/details/105702886
https://blog.youkuaiyun.com/m0_37809075/article/details/83041090

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值