码迷,mamicode.com
首页 > 移动开发 > 详细

iOS app 的 ASLR

时间:2017-08-26 11:35:15      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:emma   二进制文件   不能   sizeof   bsp   激活   保护   sub   and   

       这两天逆向一个程序,发现每次image list -o -f 之后,它的基地址都是0x00000,也就是偏移地址是0。  想到这个应该是载入内存时有没有启用偏移有关,于是找了下答案:aslr

       百度百科对ASLR的定义:

       aslr是一种针对缓冲区溢出安全保护技术,通过对、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。   百度百科说的比较隐晦,用白话说,就是:ASLR (Address Space Layout Randomization),即地址空间随机布局。ASLR特性是为了防御攻击对已经地址的攻击才加入的,程序在运行时加载的地址都是随机的,正因如此,所以我们在调试程序的时候下断点要用程序的文件偏移加上加载到内存的随机地址。

       在有ASLR特性的程序在Mach-o文件头都会有PIE的标识,用 otool -hv命令查看二进制,最后一列PIE标识:

tong:crack xxxxx$ otool -hv xxxxx
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   MH_MAGIC     ARM         V7  0x00     EXECUTE    38       4272   NOUNDEFS DYLDLINK TWOLEVEL BINDS_TO_WEAK PIE

 

再找了个没有ASLR机制的二进制文件:

tong:1401 xxxx$ otool -hv xxxx
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   MH_MAGIC     ARM         V7  0x00     EXECUTE    60       6036   NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK

 

网上也有些去掉PIE标识的软件,另外还说到有些不完美越狱就是因为ASLR的原因,越狱后,每次重启都需要重新越狱(原话就是“越狱”,可能就是指现在ios9.1以后的越狱,每次重启后,都需要重新激活。)

     那么,我有个问题,如果没有了ASLR,是不是每个程序都需要指定一个基地址?且不能冲突?否则,如果两个程序基础地址都是0,怎么办?还望高手告知

             

       

iOS app 的 ASLR

标签:emma   二进制文件   不能   sizeof   bsp   激活   保护   sub   and   

原文地址:http://www.cnblogs.com/iamonion/p/7434561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!