iOS app 的 ASLR

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

时间: 2024-10-23 18:39:43

iOS app 的 ASLR的相关文章

教你如何动态调试 iOS App(反编译App)

教你如何动态调试 iOS App(反编译App) 开篇 通过本文你能了解 iOS 逆向的基本知识,对 iOS App 的安全有一定了解.然后能举一反三,在自家 App 找到危险漏洞加以预防,保证用户数据安全. 在安全领域,攻与防永远存在.哪怕是 iPhone 有着强大的安全防护机制,也挡不住那些极客们一次又一次的好奇,开发了很多强大且便利的工具.本文就是在这些极客们提供的工具的基础上完成的! 准备工具 Mac 电脑和越狱 iPhone 手机 查看手机系统目录工具 iFunbox 或 iTools

用Xamarin和Visual Studio编写iOS App

一说开发 iOS app,你立马就会想到苹果的开发语言 Objective C/Swift 和 Xcode.但是,这并不是唯一的选择,我们完全可以使用别的语言和框架. 一种主流的替换方案是 Xamarin,这是一个跨平台框架,允许你开发 iOS.Android 和 OSX.Windows app,它使用的是 C# 和 Visual Studio.最大的好处在于,Xamarin 允许你在 iOS 和 Android app 间共享代码. Xamarin 与其他跨平台框架相比有一个最大的好处:使用

[iOS]App上架流程[利用Archive进行上传]

今天给大家带来项目如何上架的教程 准备: 1. 一个开发者账号(需要交过钱的,??好黑) 2. 一个做完的项目 检查: 1. 你的Xcode必须是正式版,不可以是beta版本(不能上传项目) 2. 请确认你的Xcode是从App Store或者从开发者网站下的Xcode安装,而不是非法获取的安装包,因为可能有Ghost.如何检查? 开始吧. 一.生成发布证书(证书的作用:类似于驾照,证明你的身份可以进行开发者一些操作) 打开https://developer.apple.com 点击右上角开发者

iOS App上架发布到app store市场最新中文教程

iOS -App发布Appstore最新中文教程 这个教程教你怎么把开发好的ios应用上架到appstore市场,一步一步带截图,包括最新的appstore后台系统itunesconnect使用,证书创建和管理,应用id创建和管理,上传ipa等都将一步一步详细介绍. 下面从七个步骤进行详细介绍! 1.创建唯一标示符App IDs 2.申请发布证书 3.申请发布描述文件 4.到iTunes Connect创建App并填写信息 5.Windows下选择证书编译打包 6.Windows下上传IPA到A

hbuilder IOS APP 打包与发布

---恢复内容开始--- 准备:苹果开发者账号,一个Mac系统 没有账号可以再这里注册 https://developer.apple.com/ 因为账号是公司的,自己并没有注册过,这里就不进行阐述了. iOS有两种证书和描述文件: 1 开发(Development)证书和描述文件   (用于开发测试,在HBuilder中打包后可在真机环境通过Safari调试) 2 发布(Distribution)证书和描述文件  (用于提交Appstore,在HBuilder中打包后可使用Applicatio

iOS App的状态

Refer: App States and Multitasking iOS设备的系统资源有限,所以App在前台运行和在后台运行的时候是有区别的.为了节省电池寿命和用户体验,App在后台运行的时候,有一些功能会被操作系统限制. 当App在前台运行的时候,可以处理系统发送的touch事件.UIKit基础架构已经做了大部分的工作用来把事件分发到自定义的对象上,开发者只需要重写一些相应的方法. 在App的开发过程中建议遵守的方针: (Required)对状态的切换做出适当的相应,否则可能会造成数据丢失

使用Application Uploader工具在windows、linux下上传iOS App

我们知道发布一个app,一般是用到苹果的application loader助手上传应用,用过的都知道使用起来很繁琐,经常出错.而且只能运行在mac系统上,需要一定的硬件条件. 而上架辅助工具Application Uploader,可以实现在windows,linux或mac上,不需要应用程序加载器和mac计算机,就可以发布app到app store,试用了下,感觉不错,分享给各位开发者,方便大家. Application Uploader是一个专门为IOS app上架的开发助手,可以快速,轻

ios app开发步骤

虽然开发一个app的任务看上去可能很艰巨,但是整个过程可以抽象成几个相对简单的步骤,下面这些步骤会在你开发第一个app时帮你步入正途. 定义Concept 每个好app都是从一个concept开始. 获得这个concept的最好方法就是考虑你打算用你的app解决什么问题,好的app解决的问题都是单一,定义清晰的问题,比如,Settings app允许用户调整设备的所有设置,它给用户提供了一个独立界面让用户来完成一系列相关的任务. 下面是获得一个好concept的一些关键问题: 受众是谁?你app

iOS app 企业内部发布及HTTPS服务器配置

iOS企业内部发布及HTTPS服务器配置 一:所需的条件 1. 苹果开发者证书,企业版 299$ 版本 2. ssl 证书,即https使用的服务器证书 3. web服务器,支持https 4. 一个域名,可以是子域名,绑定ssl证书和https服务器 二:大致流程 申请免费或付费ssl证书-----> 配置https web服务器------>发布企业版ios app----->配置safari浏览器安装 1: ssl证书,由于苹果最近的新要求,之前发布使用的http方式已经不行了,现