180102 逆向-ASLR技术及去除

1625-5 王子昂 总结《2018年1月2日》 【连续第459天总结】
A. ASLR
B.

简介

ASLR,即Address Space Layout Randomization 地址空间布局随机化
是一种用来针对漏洞利用的技术

当开启了ASLR时,PE文件每次加载到内存的起始地址都会随机变化,并且栈和堆的起始地址也会随机改变。
这样Payload中的内存地址就无法硬编码了,使得漏洞利用包括跳转、访问内存的难度都大大增大

使用

首先,OS的内核版本必须在6以上,即Windows Vista/Windows Server 2008以上
当不开启ASLR时,EXE文件的ImageBase默认为0x4000000,DLL文件的ImageBase默认为0x10000000
(DLL的ImageBase被占用时会自动进行重定位,无关ALSR)

VC++2010中可以在设置-链接器-高级中的/DYNAMICBASE选项来开关ASLR

标识

节区

开启ASLR的程序会多一个节区:.reloc,它被用作重定位的参考,但不是EXE文件的必需部分
(但DLL经常需要重定位,所以不可删除)

文件头


  1. 未开启ASLR的程序的IMAGE_FILE_HEADER的Characteristics选项的值中会多一个

0001 IMAGE_FILE_RELOCS_STRIPPED
而开启了ASLR的程序则无该属性


  1. 未开启ASLR的程序的IMAGE_OPTIONAL_HEADER的DLL Characteristics选项的值会少一个

0040 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
而开启了ASLR的程序则会有这个属性
修改时只需要删除第二项的属性即可去除ASLR
但添加时不可,因为开启ASLR功能的程序若无.reloc节区,运行时可能会因不正确的内存引用而报错

C. 明日计划
看书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值