iphone解锁那点事 (一)

 

写在前面的破事

 

 

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 效果类似。

 

超雪解锁代码解析

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

 

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

 

 

 

 

 

 

你可能感兴趣的:(iphone解锁那点事 (一))