標籤:

iPhone時間調到1970年1月1日0:00就不能再正常開機使用是為什麼?


可能是安全機制,比如防止使用舊證書,但更有可能是時鐘下限溢出,64位的時間戳如果下限溢出的話會被解讀為幾萬億億億億年,肯定會導致其他什麼地方溢出


iOS系統時間使用Unix時間戳表示(time_t數據類型)。Unix時間戳規定,UTC時區的1970年1月1日 0點0時0秒的值為0,以秒為單位,即每過一秒,二進位數字加1。考慮到時區的影響,在北京時區,將iPhone時間設置到了1970年1月1日0點0時0秒,那麼將這個時間轉換為UTC時間(公式:北京時間 = GMT+8 = UTC+8),那麼UTC時間則會變成1969年12月31日16時0分0秒。這樣就會出現時間負值,即時間回歸bug觸發,系統啟動卡在Kernel階段,時間錯誤,無法繼續進行啟動。


轉自IT之家

原文:

&<蘋果iOS設備日期設置到1970年變磚?原理及解救方法來了&>

蘋果iOS設備日期設置到1970年變磚?原理及解救方法來了

責編:阿華 2016-2-13 18:31:36 Hackl0us

最近iOS時間bug在網上鬧的沸沸揚揚,據說是將iOS系統時間修改為1970/1/1,重啟後系統將永遠無法開機。那麼這個事情是真的嗎?如果是真的有什麼合理的解釋嗎?

想要真正了解這一bug,您可能需要以下知識。

UNIX時間戳

在確認這件事情的真假前,你需要了解的一個知識是Unix時間戳。

iOS系統時間使用Unix時間戳(Unix epoch)表示(time_t數據類型)。在系統中,使用系統位數個二進位位儲存時間。

Unix時間戳規定,UTC時區的1970年1月1日0點0時0秒的值為0,以秒為單位,即每過一秒,二進位數字加1。

如果您想詳細了解Unix時間戳,請移步到 Unix Time。

不能往前調,那我把時間往後調

有些好奇的朋友拿出了自己手機,心想:既然我不能往回調,那我要是把時間使勁往後調能怎樣?

細心的朋友發現了一個問題,iOS系統可以設置的最大時間是2038年1月1日,並不能再往後設置。蘋果一定考慮到了這個問題,為什麼這麼說呢?

我們拿32位系統舉例。在32位系統中,time_t是長度為32位的,有符號整數(signed int)類型。首個二進位位是符號位,用來儲存正負。正數則為1970/1/1以後的時間,負數反之;其餘的31位用來記數。當時間到達2038年1月19日3時14分08秒時,數值位全部向前進1,導致符號位被置1,其餘31位為0。介時,將出現『時間回歸』的情況,系統時間變為1901年12月13日20時45分52秒,系統將會出現錯誤。

▲From Wikipedia "Year 2038 Problem"

所以Apple為了避免這種問題導致的錯誤發生,將最大時間期限定在了2038年1月1日23時59分59秒。這樣即使超出這個範圍,在18天內也不會有太大問題,況且32位設備到那個時候基本都已經淘汰了。

64位系統會不會受到這個影響呢?通過計算我們可以得到,292,277,026,596年12月04日15時30分08秒是64位系統可以表示的最大時間。

64位處理器的『時間回歸』問題

有了剛才的知識儲備,現在我們回到正題,開始探討搭載64位處理器設備的時間bug。

我們說到了以UTC時區的1970年1月1日0點0時0秒為界限,數值為0,時間正常流逝為正數,反之為負數。不過各位需要留意的是,時間受到時區的影響。

假設一種情況,我原來是北京時區,假設將時間設置到了1970年1月1日0點0時0秒,那麼我將這個時間轉換為UTC時間,公式:北京時間= GMT+8 = UTC+8,那麼UTC時間則為1969年12月31日16時0分0秒。這樣就會出現時間負值,即時間回歸bug觸發,系統啟動卡在Kernel階段,時間錯誤,無法繼續進行啟動。

觸發bug條件與表現

滿足以下條件,『時間回歸』bug被觸發:

系統版本:iOS8.0 ~ iOS9.3 beta 3

硬體設備:搭載64位處理器的設備(即處理器為A7~A9X的設備)

進入『設置』-『通用』-『時間與日期』,關閉『自動設置』,並將時間修改為1970年1月1日,分秒任意。

修改時間後,需要重啟設備。

Bug觸發表現:iOS設備啟動時,卡在蘋果Logo,無法繼續啟動。

解決方案

▼針對所有64位處理器的iOS設備

拆機並拆出電池,放置10分鐘後重新安裝。

電量充足的情況下,等待數小時,當Unix時間戳的數值大於等於0,系統時間生效,可正常開機。

▼針對已越獄設備的防範

添加Cydia源Ziph0n"s Repo

並安BrickingDate插件

注意:此插件只可以防止人為修改時間,並無法防止代碼惡意篡改時間(安裝效果如下圖)。

▲From @Ziph0n on Reddit

Bug危害分析

黑客可以利用此bug通過無線區域網發出範圍性攻擊。

當iOS設備連接到公共網路時,iOS系統將會使用NTP服務對時區、時間進行校準。如果黑客發送惡意的NTP攻擊,將iOS系統時間校準至UTC

作者新浪微博 Twitter:@Hackl0us


開始我是看到某位同學的一條說說

什麼驚喜哦?iOS有彩蛋嗎?

(以下省略過程一萬字……)

咦,怎麼一直白蘋果?

好奇的我 問了我的那位同學

因為裡面有很多某人的照片(羞羞)

不願意恢復

我按照方法

把電池拆了十分鐘

(其實我有點方了)

然後裝上去

抱著要是照片找不回來我就再也不用手機的心態

我要感謝國家,感謝人民,感謝黨。


幸好我不會改iPhone的時間,不然就我這個強迫症晚期,,,,,


目前將iphone設置到1970年1月1日的解決方案和解決辦法。請勿手賤請勿手賤,別問我怎麼找到的,我從下午到現在一直在倒騰這個....


真的變轉了, 我試啦。


真的會變磚?


電腦多數不是為了特殊計算,為了節省成本做成那樣70年全世界不過幾百台,手機每天上億台,沒有幾個人專門設置成為那個時間,一年不報廢都很長了,專門的程序書提到64位系統秒鐘數最大就從那裡開始,專門計算的都學習過那個程序知識點,最近說2040年的時間旅行者要設置核武器管理系統需要1969年這樣的IBM電腦配件,內行的知道有這個可能性,而那種IBM電腦我們多數人從來沒有任何接觸經驗的。


好想試一試 真的會變磚嗎?


推薦閱讀:

如何評價管易ERP軟體?
專業的雜誌排版設計一般都是用什麼什麼軟體?

TAG:軟體 | iPhone6 |