博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS app 的 ASLR
阅读量:4922 次
发布时间:2019-06-11

本文共 1120 字,大约阅读时间需要 3 分钟。

       这两天逆向一个程序,发现每次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 xxxxxMach 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 xxxxMach 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,怎么办?还望高手告知

             

       

转载于:https://www.cnblogs.com/iamonion/p/7434561.html

你可能感兴趣的文章
2019学期第七周编程总结
查看>>
Git 常用命令(转)
查看>>
[转]游戏完成平衡性的技巧
查看>>
架构实例之SpringTest
查看>>
你的跑步姿势正确吗? 教你正确跑步姿势 & 常识
查看>>
(转)Dubbo 简单Dome搭建
查看>>
mybatis在xml文件中处理大于号小于号的方法
查看>>
联想 P70-t 免解锁BL 免rec Magisk Xposed 救砖 ROOT
查看>>
wince扫描功能
查看>>
第四章
查看>>
missing python bz2 module
查看>>
CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第十节
查看>>
单个单选框radio 点击选中点击取消选中
查看>>
团队冲刺随笔合集—Beta阶段
查看>>
Android ANR的产生与分析
查看>>
大型网站架构
查看>>
Appium+python自动化29-appium对博客园APP进行自动化测试
查看>>
cocos2d实例-移动精灵
查看>>
SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
查看>>
Python控制键盘鼠标:pynput,mouse,keyboard
查看>>