逆向技巧之删除ASLR

什么是ASLR

ASLR(Address Space Layout Randomization)是Windows操作系统中使用的安全保护技术。它针对缓冲区溢出等安全漏洞,通过随机化程序模块的加载地址和堆栈的起始地址,增加恶意用户预测目的地址的难度,降低利用操作系统安全漏洞破坏系统的风险。开启ASLR后,操作系统加载器会对基地址加上一个随机生成的偏移地址,然后加载程序模块,通过对堆、栈、共享库映射等线性区布局的随机化,增加攻击者预测目的地址的难度。ASLR需要程序自身和操作系统的双重支持,会在PE头中设置IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE标识来说明支持ASLR。

为什么要删除ASLR

由于应用了ASLR技术,Windows每次加载exe文件时起始地址都不一样。这给调试增加了一些难度。如下图,是用OD两次打开同一个exe的基地址。
第一次
在这里插入图片描述

如何删除ASLR

应用了ASLR技术编译出的exe文件和普通的exe文件多了一个名为.reloc的节区,如下图。这个节区里存储exe加载时的重定位信息。但它不是exe文件运行所必须的,删除这个节区软件依然可以正常运行。这时,文件会加载在imagebase,windows下通常是0x40000000。
在这里插入图片描述
我们知道,exe文件是PE格式,不清楚的朋友可以网上搜索了解一下。用010 editor打开exe文件,按照PE格式解析一下。在文件的IMAGE_OPTIONAL_HEADER/DllCharacteristics结构体中存在IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE变量,这个变量是ASLR标识,只需要将其值由0x8140更改为0x8100,如下图所示。
请添加图片描述
删除后,系统再加载exe文件便不会重定位,而是每次都加载在相同的地址上,如下图所示。
在这里插入图片描述
没有了ALSR,再调试起来就方便多了。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦子zzy

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值