什么是ASLR
- Address Space Layout Randomization,地址空间布局随机化。
- 是一种 通过
增加
攻击者预测
目的地址难度
,防止攻击者直接定位攻击代码位置
,达到阻止溢出攻击的目的的一种技术。 - MachO 可执行文件每次起始地址不一样。
- 苹果从iOS 4.3之后引入了ASLR技术,也就说把Mach-O载入内存后,所有的地址都会经过ASLR偏移
未使用ASLR的内存
函数地址永远是固定的,容易被破解者直接定位攻击代码。
使用ASLR的内存
函数的真正内存地址
Hopper 中地址
+ ASLR 偏移 = 函数内存中的地址
(偏移前地址 + ASLR = 偏移后地址)
函数内存中的地址
- ASLR 偏移 = Hopper 中地址
(偏移后地址 - ASLR = 偏移前地址)