找回密码
 加入我们

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2143|回复: 2

[破解] [ZT]科普:目前各种iPhone软件解锁的原理,以及理论上真正完美的解锁

[复制链接]
发表于 2008-2-2 15:38 | 显示全部楼层 |阅读模式
因为最近才买的iPhone,所以这几天把DEV TEAM的WIKI和hackint0sh.org翻了个遍,补习知识。+ R% |0 i/ m; Q% O3 @$ ?' d  K; e+ N
目前中文社区上好像还没有人发过这样的帖子,我把这几天看到的总结一下,发一个科普帖。
, H& M0 W) H( G) V所有的参考资料都来自DEV TEAM WIKI(http://iphone.fiveforty.net/wiki)和hackint0sh.org,其实很多东西我是粗略的看了一下,以下文章如果有错误的地方,还麻烦指出。# \: O- s; B2 T+ n& J
------------------------------------4 V' {) |+ G, K, l% c4 g
1,iPhone的硬件
+ I7 N7 f' s& p  QiPhone的硬件配置比较高,虽然卖得是比较贵,但是相对于Nokia N95之类的比起来,iPhone造价肯定比N95贵不少。! D" J' _3 N6 w  X% N3 |/ Y
现在初步相信iPhone的CPU是一个Samsung S5L8900,这个CPU是具有A-GPS和3G功能的(这是后话),但是iPhone的GSM模块采用了另外一个完全独立的系统,就是我们常说的baseband,这个baseband有自己的firmware(操作系统)和CPU(是一个S-GOLD2,西门子的手机也是采用这个CPU),而且,通俗点说,baseband还有自己的闪存用来记录目前baseband的状态,这个闪存被称为NOR,我们所说的seczone就在其中。这个baseband单独拆下来经过小改,也够当一个手机用了。4 e9 x# T  o$ c$ b
所以实际上iPhone是非常复杂的一个手机。我们每次所谓更新firmware,实际上是更新iPhone的firmware(就是OS X Darwin),而bbupdater则是更新baseband的firmware。
) Y7 e, r# G4 n2 T0 y6 {你可以这样想,iPhone是一个电脑,这个电脑上插了一个联通CDMA卡,你使用电脑可以打电话发短信和上网,问题是联通CDMA卡被锁死了,只能上联通,如果要解锁,怎么办?通过修改电脑的操作系统(Windows XP)是不行的,因为控制权在CDMA卡手里,所以你必须想办法通过Windows XP来修改CDMA卡上的系统,才能达到解锁的目的。
* y5 m* p; o) Y# L, h2,完美的解锁
* c1 \/ M& X8 `; J% \有些人会问了,什么才是所谓的完美解锁?现在的解锁有什么不完美?
+ R5 q9 J+ F- y8 h6 W" W完美的解锁,就是真解锁,如果你的iPhone完美的解锁了,你的iPhone不需要任何打过补丁的basebandfirmware,你的iPhone可以随着Apple的firmware升级随时升级,不会有任何问题,而且,你的整个iPhone系统,就是Apple原汁原味的系统,没有任何改动!
  E4 \( h( J8 R; Q$ G) F就像软件的破解一样,完美解锁,就是注册码,软件还是那套软件,输入注册码后就注册了,完美,而目前的解锁,实际上都是注册机,把软件中的某些地方打了补丁。
# p8 O8 J( X0 G' F那么,怎么样才能实现完美解锁?刚才我们提到了,iPhone中baseband的资料都存在NOR里,是的,NOR里保存了目前baseband的状态,其中就有目前iPhone的解锁状态,iPhone出厂的时候,都给锁在ATT的网络里了。# N1 \5 v. O/ v1 H  J; F
到这里有些人想问了:那么我们把这个状态改成解锁,不就完美了么,是的,但是,问题是:+ N8 t" b! \/ Q1 t* B
1,只有通过baseband的firmware,也就是baseband的操作系统,才能读写NOR,而且NOR中seczone的控制及其严格,想要直接发指令写入,是不可能的。
/ f2 [2 r) b6 o; G0 b2 B+ k1 R2,baseband的firmware是Apple数字签名过的,意思就是说,只有Apple自己的1024位的私匙签名过的firmware,baseband才会运行。
% Q( B" N+ z# @3,最重要的一点,我们不知道要往NOR seczone里面写入什么,才能解锁,因为NORseczone里数据都是加密过的,不是0就是锁,1就是解锁这么简单,每台iPhone的NOR在加密前可以是一样的,但是加密后每台都是不一样的,而且这个加密机制,也只有通过Apple的私匙才能算出来。
9 m! v! A6 A3 Z$ B. g/ T; q$ s那么,想要达到完美解锁,需要怎么做?
# ^2 Z5 T6 G' j' R' t4 q实际上,你可以通过iPhone的minicom对iPhone的baseband发送指令,其中有一条指令,就是用来解锁的,而且我们明确知道这条指令是什么,就是:0 z$ K# }  S) O6 U) Y: S: N; A
AT+CLCK="PN",0,"xxxxxxxx"' u0 i  ~7 q/ k& l3 a+ f
注意到后面那8个x了吗?那些x就是你的解锁码,unlock code,或者专业说法,叫做NCK、Network Control Key,,这个key每个iphone都不一样,相信苹果应该是用某种随机机制生成了这些解锁码,然后和IMEI或者序列号挂钩,放在自己的数据库里,在将来,苹果官方提供解锁的时候,他们会通过你的IMEI或者序列号告诉你的unlock code,达到完美解锁。
( n& u2 `9 Y+ g! @, b# `但是你发送指令的时候,你的iPhone又怎么知道这个解锁码是对还是错的?如果iPhone需要知道对错,那么说明iPhone自己知道unlock code,所以我们能从iPhone里某个地方找到这个code,然后完美解锁,对吗?不对!
' u0 x3 ?, g( R: |) P* F实际上iPhone NOR上保存的,是这个code经过某个特殊的算法生成的一个hash值,hash(code) ,而这个算法是不可逆的(就像MD5)。
# p& s2 f6 m) T6 I# o8 J4 [; j9 q通俗点说,我们可以这么想,Apple教会了iPhone一套暗号,告诉iPhone 1 = 鸭子 2 = 鸡 3 =鹅,然后把暗号123这个unlock code编码成“鸭子鸡鹅"存放在Phone NOR里,这时候iPhone并不知道unlockcode是123,它只知道如果别人告诉我123,我按照Apple的暗号算一下,如果算出来和"鸭子鸡鹅"一样,那么别人告诉我的code就是对的了。当然实际上这个过程不是这么简单,否则你一猜就能破译这个密码了,按照目前的计算机水平,把这个unlockcode通过hash过的值逆算回来,几乎是不可能的。
, d2 v+ `+ f- e2 f; C8 s那么,我们穷举行吗?不就是一个8位数嘛?我们从00000000试到99999999,总有一个对吧?这个方法理论上可以,但是实际上行不通,原因又两个:+ e, p  {) B% Y/ q
1,按照粗略结算,关把这些1亿个指令发给iPhone尝试,就要35天,并且还不考虑iPhone算需要多久。
1 X0 I, ]! U6 J2,最关键的,iPhone的baseband NOR seczone中,有一个NCK计数器,一旦你尝试3-10次失败,你的baseband将会硬件烧死在AT&T上。
  B* B# d8 W. q8 z- W- z8 b所以,目前来说,iPhone完美解锁,还没有,相信如果Apple不出大错误,也不会有,除非Apple到时候官方推出解锁,那才是完美解锁。
9 [3 ]4 ^' x. z' z" ]: j3,目前的解锁
. f* r1 V% p4 J目前iPhone上有3种软件解锁,分别是:
; j- {9 h1 l7 g! a1,iUnlock / Anysim 1.0.2 / iUnlock Reloaded 这些都是同一种,都是使用了iUnlock的核心代码。
" C) F! }7 s2 V+ f2,iPhoneSimFree.com,也就是IPSF提供的需要花钱购买的解锁。% ~  {2 A/ {6 B& _! c3 E' i
3,Anysim 1.1.1' I) _5 c1 E4 h# m. e! `
这3种解锁,都不是完美解锁!
7 g: R7 m1 `) z# v6 l, @8 M
目前相信,这3种方法的工作原理如下:
* T- g! b% m1 f) |& AiUnlock
! E! g: X7 H6 V* `iUnlock通过直接在baseband firmware上打补丁(我不知道他们怎么跳过了苹果的签名检查,我知识不够),跳过了basebandfirmware对的NOR 中token(这个token就是hash过的NCK挂钩的值)检查,然后发送AT+CLCK给baseband要求解锁,由于token的检查已经被跳过这个时候实际上发送什么NCK iPhone都会同意解锁,这样解锁后的baseband会修改seczone中的lockstatetable,但是这么做的结果就是NOR中的数据不再是"合法"的了,因为我们根本不知道真正能够满足token是NCK什么,只不过因为在baseband firmware上打了补丁,告诉baseband firmware不要检查这个token而已。
) x% S# s6 c4 u4 L; c( d% n这么做过之后,你的baseband firmware就是打过补丁的了,不是苹果原来的baseband firmware了。6 {8 a# W* A7 c( S3 T' m7 a
这也造成了后来的1.1.1升级,Apple升级了baseband firmware,结果不合法的lockstate table 导致了iPhone  -> 砖头。( f+ I) y) c. u2 |
iPhoneSimFree IPSF. L% J. Y! x6 X  C: ?2 i
最开始大家都认为IPSF的解锁是最完美的,也很多人认为IPSF的解锁就是完美解锁,因为IPSF的解锁过程需要联系他们的服务器,不少人相信他们通过走后门或者其他内奸手段,得到了Apple iPhone这个unlock code数据库,所以能够提供真解锁,现在广泛相信的是,这是一个天大的谎言/ C5 r. e7 l2 ?  B
根据DEV TEAM的研究,IPSF的解锁原理是:他们找到了AppleiPhone中RSA算法的一个漏洞,一个很大的Bug,通过利用这个BUG,他们把NORseczone中的token清零(全部清空),然后再构造一个特别的lockstate table。iPhone在启动校验token /locktable 合法性时候,因为这个BUG,导致这个全部是0的token +locktable得以合法验证,所以iPhone认为这个机器是合法解锁的了。( ?9 m9 a( |; }$ X! Y% t4 m. S9 }8 y/ O
这个bug在1.1.1升级的时候苹果还没有补上,所以IPSF的机器在升级1.1.1之后可以继续保持unlock。3 p3 F3 u7 O3 l$ l
但是,这么做的后果是不堪设想的!我上面说了,每个机器的token都不一样,每个iPhone的token全世界唯一,除了苹果知道,没有人知道,IPSF把iPhone的token清零,目前在这个bug还没有补上的时候,IPSF解锁过的iPhone还能用,但是当苹果在修补这个漏洞后,要么就别升级,要么升级后IPSF iPhone就变废铁了,而且基本上无药可救。
  q2 w# d6 T' G3 b4 @: x0 pAnysim 1.1.1" K2 i0 f! O2 `$ u3 S: T: G
最新推出的Anysim 1.1.1应该是目前最好的软解,Anysim 111的原理和iUnlock不一样,Anysim111完全不去动seczone里的token和lockstatetable,整个解锁过程不需要发送AT+XCLK指令,如果你解锁用minicom运行后就知道lockstatetable还是锁住的状态,anysim 111用的是在baseband firmware上打补丁,跳过了所谓mnc检查(networkcheck,实际是什么我也不是很明白)完全欺骗了iPhone,让iPhone认为自己解锁了。这个方法的好处就是:seczone完全没有动过,内容完全,之后如果Apple再升级baseband firmware,大不了我们的手机重新锁死,应该是不会再变砖了。
. y- v5 c* x/ ]. e+ i所以,目前所谓变“处女"的方法,就是把iUnlock修改seczone的locktable重新改回来。至于IPSF解锁后破坏的seczone,就得听天由命了……
$ m5 S' c, W2 Z3 D8 N! `------------------------------------, d% ~3 y2 R7 }
10月28日更新5 E' C! g' v' c& o& b, G& O
------------------------------------7 K$ R: D" D3 U# O' H+ j
anysim 1.1.1p
' h9 {' s8 B6 U" [; C- I
现在anysim出了1.1.1p,看google code上只有一个简短的说明:“fix the counter problem”,也就是说:“解决了计数器的问题”。
1 [* z. ^0 }& T5 z$ g# U2 w8 Z$ P我也不明白这个到底是怎么回事,hackint0sh上曾经有讨论过anysim 111在更新了basebandfirmware后,还是发送了XCLCK这个指令,而按照anysim111的工作原理,这个指令完全不需要而且也完全不可能会成功。而且执行这个命令会增加一次NCK尝试解锁计数。据说是因为失误,在anysim102 -> 111的时候这段代码忘记剔除了。! [, M" G+ W1 n* a
但是这个帖子当时就被骂是胡说八道,据说源代码上已经把调用标记了,不会再调用了,反正看到最后也是没有结果。而且也不能确定这个所谓的计数器,就是指NCK计数器。
, a+ o6 T; d& |# ^" z5 x8 S我的看法是,你如果现在要解锁,就用anysim 1.1.1p吧,如果你已经用了anysim 1.1.1解锁,那也完全没有关系,反正NORseczone完全可以重写(回复出厂状态,恢复NCK解锁计数器为0),这个NCK计数器也就已经是一个摆设了(只要你不要没事就尝试解锁玩就行了,如果你没事就一直尝试用iUnlock发送XLCK指令玩,又没有刷回seczone,到时候NCK计数器超了,会发生什么事情我不知道)。
6 `1 {0 t0 }9 A; l# \1 S. g现在解锁了,将来是否能用苹果推出的官方解锁6 |; Q8 i- u2 c4 O
如果你现在已经解锁了,并且解锁工具是用iUnlock 1.0.2 / anysim 1.0.2 / anysim 1.1.1 / anysim 1.1.1p,那么将来苹果推出官方解锁的时候,你是可以使用苹果官方的办法来解锁的,所需要的就是重新修复seczone(1.02)或者重新刷回原厂baseband firmware(1.0.2 / 1.1.1)
  ]5 u2 r2 m/ [如果你现在已经解锁了,并且解锁工具用的是iPhoneSimFree.com推出的付费方案的话,我也不知道你将来是否能用官方的办法。我个人觉得:你的机器将来可能连升级1.1.2或者更高级的firmware都不行了,更别说解锁了,你唯一能希望的就是iPhoneSimFree.com在解锁的时候备份了你的seczone2 u( N$ a! c! Z# |: H0 S( A% g* B) Z
1 b4 t% d/ R8 n$ \2 T4 G2 q

+ F6 Z6 w; B. Z6 g3 w, ~( x另外:; ?0 ^* W4 N# f# e1 q3 |) u
觉得自己运气实在太好的朋友,真的想要尝试猜测自己的NCK的:# x' h$ N& d- s0 b( o
先刷回原厂firmware(恢复一次即可),然后参考这个帖子:http://bbs.baowo.net/viewthread.php?tid=222992,按照这个帖子的办法进入minicom,在minicom输入:
7 b) s) T$ n1 q7 k/ ]2 P& l- \AT+CLCK="PN",0,"NCK码"
/ W  Q/ o0 i& Q" x7 O% iNCK码从00000000 到 99999999,8位! C" c; u* b0 P5 b
然后再用n000b帖子中的办法判断是否已经解锁。9 e9 c3 Y) {+ `6 ~# W  A' K/ K
警告:这个办法完全完全完全是按照目前的知识得出来的,是否能成功,是否有危险,我完全不知道,如果你真的要尝试,那我先谢谢你为iPhone机友作出的贡献,请在尝试后告诉我们你的壮烈经过。
& C0 h9 ~; ~% C, y, ^
' f$ t# s% M+ V! ^# k" D2 `6 c4 b" y5 Z4 g! B0 y3 T& m

7 q; n6 }$ N' M+ u
; z2 ^! d3 ]* @7 Z  XiPhone手机论坛1 {* {6 R" h# @& j+ `# N, c7 v  \5 |" U) ^2 C+ Z7 b+ ?
bbs.iphone.com.cn" h6 l; F; B; m5 v5 N* G4 }
) p; [% U" M- O& n) u6 r2 ^警告:如果你尝试了超过NCK计数器的次数还失败了,你的iPhone很有可能就永远属于AT&T了,啊门。bbs.iphone.com.cn4 \. C  Z! Q* o2 b, {( x
* F2 N6 m' ^& y) ]( V. k: niPhone手机论坛|iphone破解|iphone汉化|iphone资源|iphone主题|iphone配件|手机新闻|苹果iphone|手机游戏|刷机包|手机图片|手机铃声|MOTO|摩托罗拉|诺基亚|NOKIA|索爱|手机软件|手机电影|电子书|iphone|iphone破解|iphone游戏|iphone软件|iphone价格|刘搞完0 X) ?/ T, m2 Y2 t5 E
" P3 A. G/ g: Y6 n4 T[ 本帖最后由 locomotive 于 2007-11-10 12:17 编辑 ]
 楼主| 发表于 2008-2-2 15:39 | 显示全部楼层
当然,如果有某位仁兄如果认为自己运气实在好,可以自己尝试刷回原厂的baseband firmware,然后用minicom尝试
3 A5 Y% m5 i* {* Z, E. `0 G3 f5 X, lAT+CLCK="PN",0,"自己随便想个8位数"iPhone手机论坛|iphone破解|iphone汉化|iphone资源|iphone主题|iphone配件|手机新闻|苹果iphone|手机游戏|刷机包|手机图片|手机铃声|MOTO|摩托罗拉|诺基亚|NOKIA|索爱|手机软件|手机电影|电子书|iphone|iphone破解|iphone游戏|iphone软件|iphone价格|刘搞完( P2 ~: {8 [6 e, B4 @
  b3 Z( h% |  m. c8 r/ }3 E4 q' O- s/ }: i8 l) v2 `+ o! J& O
搞完也许给你一下猜中了,那么恭喜,你拥有全球第一个真解锁iPhone,你的iPhone顿时身价倍涨,价值连城,去ebay卖个1W US$绝对没有问题。
6 W: C+ E0 b- y7 x) D1 M

9 y! A! Z2 l& T# uhttp://bbs.iphone.com.cn/thread-32315-1-6.html
发表于 2008-2-2 22:21 | 显示全部楼层
学习一下!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2023-6-1 16:25 , Processed in 0.209614 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表