原文地址:http://blog.youkuaiyun.com/yiyaaixuexi/article/details/20391001
ASLR (Address Space Layout Randomization),即地址空间随机布局。大部分主流的操作系统都已实现了ASLR,以防范对已知地址进行恶意攻击。iOS从4.3开始支持ASLR,Android从4.0也支持了ASLR机制。
ASLR的存在,给iOS系统越狱造成了很大的困难,某些不完美越狱方案就是因为攻破不了或者绕不开ASLR,所以每次重新启动后地址再度随机偏移,需要重新进行越狱操作。与此同时,ASLR也给应用层攻击带来了一些困难,不同进程会造成不同的地址空间偏移,而且在运行时才可确定其偏移量,不易锁定攻击地址。
Mach-O文件的文件头会记录二进制的属性标识,有个flag叫做PIE (Position Independent Enable)。开启了PIE的二进制文件,在执行时会产生ASLR。
我们可以使用otool工具,来查看任意应用程序二进制文件的属性,以支付宝为例:
- otool -hv Portal
有PIE标识,表示该程序在启动时会产生随机地址布局。
removePIE 是个去掉PIE flag的工具。
坏消息是,年久失修,它不支持iOS7。
好消息是,我们还有2个变通方法可以走。
- 利用Theos编译removePIE
- 改编一个Mac版的MyRemovePIE
if ( currentHeader . magic == MH_MAGIC ){ //little endian
if ( currentHeader . magic == MH_MAGIC || currentHeader.magic == 0xbebafeca ){ //little endian
- ./MyRemovePIE Portal
把处理过的Portal二进制拷贝回iPhone,启动支付宝钱包应用,然后gdb该进程,利用info sh命令查看偏移:
5777



被折叠的 条评论
为什么被折叠?



