iphone手機(jī)調(diào)時(shí)間會(huì)變磚是真的嗎?iphone調(diào)時(shí)間變磚解決方法。最近,iOS時(shí)間回歸Bug在網(wǎng)上鬧的沸沸揚(yáng)揚(yáng),好奇害死貓,不少網(wǎng)友圖新鮮,親身嘗試結(jié)果不幸中招,大過(guò)年的弄個(gè)白蘋果,想想也是醉了。據(jù)說(shuō),DFU也無(wú)法修復(fù)這個(gè)問(wèn)題。
Apple Pay中國(guó)版將于本月18日凌晨五點(diǎn)上線,Apple Pay中國(guó)版官方下載地址:http://innovatechautomation.com/soft/212672.html
目前,滿足以下條件,進(jìn)入設(shè)置-通用-時(shí)間與日期,關(guān)閉自動(dòng)設(shè)置,修改時(shí)間為1970/1/1,重啟設(shè)備,“時(shí)間回歸”Bug就會(huì)被觸發(fā)。具體表現(xiàn)為,設(shè)備啟動(dòng)后,卡在蘋果Logo,無(wú)法進(jìn)入系統(tǒng)。
系統(tǒng)版本:iOS 8.0 -iOS 9.3 beta 3
硬件設(shè)備:搭載64位處理器的設(shè)備(即處理器為A7-A9X的設(shè)備)
涉及的設(shè)備包括:
A7:iPhone 5s、iPad mini 2、iPad mini 3;
A7 variant:iPad Air;
A8:Apple TV 4G、iPad mini 4、iPhone 6、iPhone 6 Plus、iPod Touch 6G;
A8X:iPad Air 2;
A9(三星/臺(tái)積電):iPhone 6s、iPhone 6s Plus;
A9X:iPad Pro;
iphone調(diào)時(shí)間變磚解決方法:
1、拆機(jī)拿掉電池,放置10分鐘后重新安裝。
2、電量充足的情況下,等待數(shù)小時(shí),當(dāng)Unix時(shí)間戳的數(shù)值大于等于0,系統(tǒng)時(shí)間生效,可正常開(kāi)機(jī)。
3、拿到蘋果售后。
那么為什么iphone手機(jī)調(diào)時(shí)間會(huì)變磚?
微博網(wǎng)友@Hackl0us給出了該Bug背后的詳細(xì)原因,感興趣的同學(xué)可以深入了解,主要涉及到UNIX時(shí)間戳的問(wèn)題。
以下解釋原理內(nèi)容較長(zhǎng),需要點(diǎn)耐心。
想要真正了解這一bug,您可能需要以下知識(shí)。
UNIX時(shí)間戳
在確認(rèn)這件事情的真假前,你需要了解的一個(gè)知識(shí)是Unix時(shí)間戳。
iOS系統(tǒng)時(shí)間使用Unix時(shí)間戳(Unix epoch)表示(time_t數(shù)據(jù)類型)。在系統(tǒng)中,使用系統(tǒng)位數(shù)個(gè)二進(jìn)制位儲(chǔ)存時(shí)間。
Unix時(shí)間戳規(guī)定,UTC時(shí)區(qū)的1970年1月1日 0點(diǎn)0時(shí)0秒的值為0,以秒為單位,即每過(guò)一秒,二進(jìn)制數(shù)字加1。
不能往前調(diào),那我把時(shí)間往后調(diào)
有些好奇的朋友拿出了自己手機(jī),心想:既然我不能往回調(diào),那我要是把時(shí)間使勁往后調(diào)能怎樣?
細(xì)心的朋友發(fā)現(xiàn)了一個(gè)問(wèn)題,iOS系統(tǒng)可以設(shè)置的最大時(shí)間是2038年1月1日,并不能再往后設(shè)置。蘋果一定考慮到了這個(gè)問(wèn)題,為什么這么說(shuō)呢?
我們拿32位系統(tǒng)舉例。在32位系統(tǒng)中,time_t是長(zhǎng)度為32位的,有符號(hào)整數(shù)(signed int)類型。首個(gè)二進(jìn)制位是符號(hào)位,用來(lái)儲(chǔ)存正負(fù)。正數(shù)則為1970/1/1以后的時(shí)間,負(fù)數(shù)反之;其余的31位用來(lái)記數(shù)。當(dāng)時(shí)間到達(dá)2038年1月19日 3時(shí)14分08秒時(shí),數(shù)值位全部向前進(jìn)1,導(dǎo)致符號(hào)位被置1,其余31位為0。介時(shí),將出現(xiàn)『時(shí)間回歸』的情況,系統(tǒng)時(shí)間變?yōu)?901年12月13日 20時(shí)45分52秒,系統(tǒng)將會(huì)出現(xiàn)錯(cuò)誤。
所以Apple為了避免這種問(wèn)題導(dǎo)致的錯(cuò)誤發(fā)生,將最大時(shí)間期限定在了2038年1月1日 23時(shí)59分59秒。這樣即使超出這個(gè)范圍,在18天內(nèi)也不會(huì)有太大問(wèn)題,況且32位設(shè)備到那個(gè)時(shí)候基本都已經(jīng)淘汰了。
64位系統(tǒng)會(huì)不會(huì)受到這個(gè)影響呢?通過(guò)計(jì)算我們可以得到,292,277,026,596年12月04日 15時(shí)30分08秒是64位系統(tǒng)可以表示的最大時(shí)間。
如果你想了解更多關(guān)于32位系統(tǒng)在2038將出現(xiàn)的問(wèn)題,請(qǐng)移步: Year 2038 problem。
64位處理器的『時(shí)間回歸』問(wèn)題
有了剛才的知識(shí)儲(chǔ)備,現(xiàn)在我們回到正題,開(kāi)始探討搭載64位處理器設(shè)備的時(shí)間bug。
我們說(shuō)到了以UTC時(shí)區(qū)的1970年1月1日 0點(diǎn)0時(shí)0秒為界限,數(shù)值為0,時(shí)間正常流逝為正數(shù),反之為負(fù)數(shù)。不過(guò)各位需要留意的是,時(shí)間受到時(shí)區(qū)的影響。
假設(shè)一種情況,我原來(lái)是北京時(shí)區(qū),假設(shè)將時(shí)間設(shè)置到了1970年1月1日 0點(diǎn)0時(shí)0秒,那么我將這個(gè)時(shí)間轉(zhuǎn)換為UTC時(shí)間,公式:北京時(shí)間 = GMT+8 = UTC+8,那么UTC時(shí)間則為1969年12月31日 16時(shí)0分0秒。這樣就會(huì)出現(xiàn)時(shí)間負(fù)值,即時(shí)間回歸bug觸發(fā),系統(tǒng)啟動(dòng)卡在Kernel階段,時(shí)間錯(cuò)誤,無(wú)法繼續(xù)進(jìn)行啟動(dòng)。
滿足以下條件,『時(shí)間回歸』bug被觸發(fā):
系統(tǒng)版本:iOS 8.0 ~ iOS 9.3 beta 3
硬件設(shè)備:搭載64位處理器的設(shè)備(即處理器為A7~A9X的設(shè)備)
進(jìn)入『設(shè)置』-『通用』-『時(shí)間與日期』,關(guān)閉『自動(dòng)設(shè)置』,并將時(shí)間修改為1970年1月1日,分秒任意。
修改時(shí)間后,需要重啟設(shè)備。
Bug觸發(fā)表現(xiàn):iOS設(shè)備啟動(dòng)時(shí),卡在蘋果Logo,無(wú)法繼續(xù)啟動(dòng)。
Bug危害分析
黑客可以利用此bug通過(guò)無(wú)線局域網(wǎng)發(fā)出范圍性攻擊。
當(dāng)iOS設(shè)備連接到公共網(wǎng)絡(luò)時(shí),iOS系統(tǒng)將會(huì)使用NTP服務(wù)對(duì)時(shí)區(qū)、時(shí)間進(jìn)行校準(zhǔn)。如果黑客發(fā)送惡意的NTP攻擊,將iOS系統(tǒng)時(shí)間校準(zhǔn)至UTC < 0的時(shí)間,那么所有用戶設(shè)備均會(huì)受到此bug影響,在重新啟動(dòng)設(shè)備后無(wú)法使用設(shè)備。