iphone解锁那点事 (一)


2010-10-18 21:25 11712人阅读  评论(21)  收藏  举报

 

写在前面的破事

 

 

iphone 用了也 1 年多了, 3gs41 周前,各种升级,越狱,解锁都是用人家的,玩的有些腻了,闲的有些蛋疼,正好Limera1n 突降,虽然早已经 4.1 自制 4.1 也已经玩腻了,但还是想再次追求破处那一瞬间,但是我是日版,不能升级基带。但是用绿雨必然要用官方固件,看到小雨伞可以保护基带升级(没看到只支持 iphone4 ),就毅然的尝鲜了,更新中间没有产生 1005 错误,当时心一沉,等待 iphone 重新启动成功,看到雨伞中显示的基带版本 05.14.02 ,我也不知道为啥没有沮丧,嘴角竟然露出了一抹微笑,嘿嘿,这下好玩了……

 

抛砖引玉

  我再这么 balabala 写下去,估计大家都来喷我了,开始正题了,首先我也一个程序员,别人能做到的事情,我们国人为什么不行呢,与其每天无聊的刷论坛等软解,不如去实际的去做点事情,由于之前没有接触过 mac 的开发。一切从零开始,经过了一周的调查研究,算是初有成果,我也不知道最终能不能解锁,但是研究,学习的过程就是另外一种收获吧。我这里把我了解到的东西,拿出来和大家分享,也算是抛砖引玉吧,还有很多棘手的课题要大家一起来协助解决。(由于个人知识有限,而且第一次接触 mac 的开发,所以必然有很多错误的理解,甚至是低级的,希望大家能够理解,并且及时指出,大家共同进步。)

 

软解的由来

软解顾名思义就是用软件的方法来解锁,为何 3G/3GS/4 要软解呢? 因为苹果为了应对 2G 的解锁,加入了很多的验证机制,基带的 BootLoader 需要通过 BootRom 的验证,基带内的程序,又要通过 BootLoader 的验证,而这个验证实在相应程序启动之前进行,所以任何关于 BootLoader 以及基带程序的修改都是不允许的。那么我们怎么解锁呢 ? 大概方法有三!

 

1、   使用一个特殊的 SIM 卡,保证它既可以通过苹果的认证,又能通过电信商验证。

3G 2.2 版本之前的卡贴,大概都是这个原理。通过苹果只验证两次 IMSI 漏洞。

详细请大家百度( iPhone sim 破解原理 )

 

2、   基带程序运行之后,找到一个漏洞,注入代码,修改解锁部分程序, ultraSn0w , BlackSn0w 都是利用这个原理。因为只是修改 ram 的破解,所以每次重启动,或者基带 reset 都需要重新注入代码。

 

3、   利用基带 BootLoader 的漏洞,降级基带的程序,然后通过 ultraSn0w 来解锁, 3G 的 5.8 版本的基带就存在这样的漏洞。但是这个只有一小部分机器可以受益。

AT 命令

没有什么意外,我们都是通过方法 2 进行解锁的,那么第二种方法是如何解锁的呢,和一般的 PC 漏洞攻击差不多,如果对方是封闭的那么我们一点办法没有,可是基带要和手机通信,所以我们就有机会,而基带和手机通信的方法就是 AT命令, AT 命令有很多,具体大家请百度,如果大家想要尝试 AT 命令也可以,需要在手机上装一个 minicom ,还需要MobileTerminal ,不过我建议大家装 openssh ,这样通过 putty 或者其他 SSH 客户端在电脑上操作很方便。

1)        先要用 minicom –s 进行设定

 

 

 

 

2)        修改 Serial Port setup 中的 Serial Deceive 为 /dev/tty.debug , Save setup as df1 ,然后选择 Exit ,进入命令模式。

3)        输入命令 AT 进行测试,个别时候不好用,可能是被其他设备占用,重新启动一般可以好用,建议卸载 ultraSn0w后进行尝试。

4)        输入 At 后,如果显示 OK ,则表示成功 (要不关闭飞行模式)

 

5)        At+xgendata 获得基带的一些信息,其中我们可以看到基带版本号。

 

 

如果输入命令没有回显,我们可以先输入 ate1 回车,设置回显模式 ON ,再重新输入就可以看到我们输入的命令了。其他的命令还有很多,大家可以继续百度,一般的命令都是通用的。大家可以随便玩,万一哪个命令输入之后,导致基带 crash 了,一定要记下来,他有可能就是一个可利用的漏洞,嘿嘿 ~ ,不过不要轻易公布哦,让苹果知道了,他们可就补上了。

 

 

 

 

缓冲区溢出

什么是缓冲区溢出式攻击呢,其实是 CPU 架构加上 C 语言的弱边界检查,导致的代码注入式攻击,以前 windows 的冲击波等,都是利用这种漏洞进行攻击的。

具体的技术细节,大家可以参考如下连接,虽然是讲解 windows 上的溢出攻击,但是原理基本上是相同的。

http://www.vckbase.com/document/viewdoc/?id=1503    缓冲区溢出攻防 作者:局部变量

 

从 4.26.08 到 5.13.04 的基带解锁,其他都是一条 AT 命令完成解锁( ultraSn0w )

解锁我们只需要一条指令!!

以下的资料来源于大神们维护的 wiki ( http://theiphonewiki.com/wiki/index.php 

(英文好的可以自己浏览(需要翻墙),后续我会进行详细的解读)

 

  4.26.08 : at+xlog=1,"dddddddddddddddddddddddddddd44445555PPPP"

   d 都是填充数据,让基带程序的堆栈溢出,覆盖如下的寄存器

R4=4444 , R5=5555 , PC=PPPP

  R4,5,6 是 ARM CPU 的寄存器, PC 是程序计数器,也就是说我们通过这样一个命令,可以改变程序的正常动作,而修改 PC 可以让程序跳转到我们想要跳转的地址。当然如上的命令并不是真正的解锁命令(真正的后续将进行详细的讲解)

 

5.11.07 , 5.12.01 , 5.13.04 ( ip4 : 1.59.00 ):

at+xapp="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4444555566667777PPPP"

 

其中 R7=7 ,其他的和 xlog 的如出一辙,这个漏洞可以保持 3 版本基带就是因为 Dev term 没有更早的放出漏洞的原因,才没有被修补,所以大家要理解为什么不能升级一个版本出一代解锁,漏洞是要保留的,都浪费掉了,以后有大的升级就不能及时解锁,这个就会更郁闷,所以还是管住自己的手才对。

 

5.14.02 :(主角登场了)

经过我的研究也发现了一个可以 crash 基带的命令,嘿嘿,暂时保密。目前还不能完全证明是否是可以溢出的漏洞,但是通过在 5.13.04 基带上验证,基本上可以和 xapp 效果类似。

 

超雪解锁代码解析

  下面开始讲解核心部分之一,超雪的注入代码解析。

 

未完待续,敬请期待………………

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值