iOS逆向----查看APP是否开启了完整的ASLR

在iOS4.3中,苹果引入了地址空间布局随机化也就是ASLR。这个功能确保了内存中程序的结构和数据(library,framework,主程序,堆,栈以及内存映射文件)被加载到虚拟地址空间中不可预测的位置。这使得代码执行时的逆向更加困难(当然就现在的iOS逆向来说,只是多了一步算地址的操作),因为很多针对特定库的调用都要依赖于这些虚拟地址,还需要引用堆和栈上的数据。

ASLR机制非常有效,但是应用程序必须构建一个位置独立的可执行程序(PIE),这就要求编辑器可以生成一堆机器代码,而这些代码的功能与其在内存中的位置无关。如果没有ASLR机制,那么可执行程序和栈上的数据在内存中的位置将保持不变,即便再重启手机后再加载程序,内存地址还是不变,这就可能导致自动化攻击。

当然,现在的所有iOS程序均启用了ASLR机制,这个设置是默认的,就是这两个选项,默认值为No,也就是开启了地址随机化:


image.png

已经打包好的二进制文件可以使用otool工具进行查看(仅限于真机包):


image.png

可以看到这里在MH_MAGIC_64这一行的结尾,可以看到明显的PIE标志。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容