iphone調(diào)時(shí)間會(huì)變磚怎么辦
發(fā)表時(shí)間:2023-07-28 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]據(jù)說是將iphone系統(tǒng)時(shí)間修改為1970/1/1, 重啟后系統(tǒng)將永遠(yuǎn)無法開機(jī)。 iphone調(diào)時(shí)間會(huì)變磚怎么辦 arpun.com 想要真正了解這一bug, 您可能需要以下知識。 U...
據(jù)說是將iphone系統(tǒng)時(shí)間修改為1970/1/1, 重啟后系統(tǒng)將永遠(yuǎn)無法開機(jī)。
iphone調(diào)時(shí)間會(huì)變磚怎么辦 arpun.com
想要真正了解這一bug, 您可能需要以下知識。
UNIX時(shí)間戳
在確認(rèn)這件事情的真假前, 你需要了解的一個(gè)知識是Unix時(shí)間戳。
iOS系統(tǒng)時(shí)間使用Unix時(shí)間戳(Unix epoch)表示(time_t數(shù)據(jù)類型)。 在系統(tǒng)中, 使用系統(tǒng)位數(shù)個(gè)二進(jìn)制位儲存時(shí)間。
Unix時(shí)間戳規(guī)定, UTC時(shí)區(qū)的1970年1月1日0點(diǎn)0時(shí)0秒的值為0, 以秒為單位, 即每過一秒, 二進(jìn)制數(shù)字加1。
如果您想詳細(xì)了解Unix時(shí)間戳, 請移步到 Unix Time。
不能往前調(diào), 那我把時(shí)間往后調(diào)
有些好奇的朋友拿出了自己手機(jī), 心想:既然我不能往回調(diào), 那我要是把時(shí)間使勁往后調(diào)能怎樣?
細(xì)心的朋友發(fā)現(xiàn)了一個(gè)問題, iOS系統(tǒng)可以設(shè)置的最大時(shí)間是2038年1月1日, 并不能再往后設(shè)置。 蘋果一定考慮到了這個(gè)問題, 為什么這么說呢?
我們拿32位系統(tǒng)舉例。 在32位系統(tǒng)中, time_t是長度為32位的, 有符號整數(shù)(signed int)類型。 首個(gè)二進(jìn)制位是符號位, 用來儲存正負(fù)。 正數(shù)則為1970/1/1以后的時(shí)間, 負(fù)數(shù)反之;其余的31位用來記數(shù)。 當(dāng)時(shí)間到達(dá)2038年1月19日3時(shí)14分08秒時(shí), 數(shù)值位全部向前進(jìn)1, 導(dǎ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ò)誤。
iphone調(diào)時(shí)間會(huì)變磚怎么辦 iphone調(diào)時(shí)間變磚解決方法1
所以Apple為了避免這種問題導(dǎo)致的錯(cuò)誤發(fā)生, 將最大時(shí)間期限定在了2038年1月1日23時(shí)59分59秒。 這樣即使超出這個(gè)范圍, 在18天內(nèi)也不會(huì)有太大問題, 況且32位設(shè)備到那個(gè)時(shí)候基本都已經(jīng)淘汰了。
64位系統(tǒng)會(huì)不會(huì)受到這個(gè)影響呢?通過計(jì)算我們可以得到, 292,277,026,596年12月04日15時(shí)30分08秒是64位系統(tǒng)可以表示的最大時(shí)間。
64位處理器的『時(shí)間回歸』問題
有了剛才的知識儲備, 現(xiàn)在我們回到正題, 開始探討搭載64位處理器設(shè)備的時(shí)間bug。
我們說到了以UTC時(shí)區(qū)的1970年1月1日0點(diǎn)0時(shí)0秒為界限, 數(shù)值為0, 時(shí)間正常流逝為正數(shù), 反之為負(fù)數(shù)。 不過各位需要留意的是, 時(shí)間受到時(shí)區(qū)的影響。
假設(shè)一種情況, 我原來是北京時(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ò)誤, 無法繼續(xù)進(jìn)行啟動(dòng)。
觸發(fā)bug條件與表現(xiàn)
滿足以下條件, 『時(shí)間回歸』bug被觸發(fā):
系統(tǒng)版本:iOS8.0 ~ iOS9.3 beta 3
硬件設(shè)備:搭載64位處理器的設(shè)備(即處理器為A7~A9X的設(shè)備)
iphone調(diào)時(shí)間會(huì)變磚怎么辦 iphone調(diào)時(shí)間變磚解決方法2
進(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, 無法繼續(xù)啟動(dòng)。
解決方案
▼針對所有64位處理器的iOS設(shè)備
拆機(jī)并拆出電池, 放置10分鐘后重新安裝。
電量充足的情況下, 等待數(shù)小時(shí), 當(dāng)Unix時(shí)間戳的數(shù)值大于等于0, 系統(tǒng)時(shí)間生效, 可正常開機(jī)。
▼針對已越獄設(shè)備的防范
添加Cydia源http://repo.ziph0n.com/
并安BrickingDate插件
注意:此插件只可以防止人為修改時(shí)間, 并無法防止代碼惡意篡改時(shí)間(安裝效果如下圖)。
iphone調(diào)時(shí)間會(huì)變磚怎么辦 iphone調(diào)時(shí)間變磚解決方法3
Bug危害分析
黑客可以利用此bug通過無線局域網(wǎng)發(fā)出范圍性攻擊。
當(dāng)iOS設(shè)備連接到公共網(wǎng)絡(luò)時(shí), iOS系統(tǒng)將會(huì)使用NTP服務(wù)對時(shí)區(qū)、時(shí)間進(jìn)行校準(zhǔn)。 如果黑客發(fā)送惡意的NTP攻擊, 將iOS系統(tǒng)時(shí)間校準(zhǔn)至UTC < 0的時(shí)間, 那么所有用戶設(shè)備均會(huì)受到此bug影響, 在重新啟動(dòng)設(shè)備后無法使用設(shè)備。
蘋果應(yīng)用引領(lǐng)新的上網(wǎng)速度革命,給您帶來超快體驗(yàn)。