苹果“1970事件”是什么在搞鬼

摘要

近日,苹果“1970 事件”闹得沸沸扬扬,有许多使用iOS设备的好奇人士“好奇害死猫”,抱着好奇的态度,结果自己的爱机真的变砖了。据了解,运行iOS 8以上系统的64位处理器的设备几乎无一幸免,把iPhone、iPad或iPod touch的时间设定为1970年1月1日,然后关机再开机,手机就变成一块“砖头”。下面让我们看看“1970”到底是什么“鬼”。

稿源:中关村在线

近日,苹果“1970 事件”闹得沸沸扬扬,有许多使用iOS设备的好奇人士“好奇害死猫”,抱着好奇的态度,结果自己的爱机真的变砖了。据了解,运行iOS 8以上系统的64位处理器的设备几乎无一幸免,把iPhone、iPad或iPod touch的时间设定为1970年1月1日,然后关机再开机,手机就变成一块“砖头”。下面让我们看看“1970”到底是什么“鬼”。

GIXN-fxprucs6393721

在了解“1970年事件”时,我们需要了解一个知识就是Unix时间戳。iOS系统时间使用Unix时间戳(Unix epoch)表示(time_t数据类型)。在系统中,使用系统位数个二进制位储存时间。Unix时间戳规定,UTC时区的1970年1月1日0点0时0秒的值为0,以秒为单位,即每过一秒,二进制数字加1。

有了这个知识储备,我们现在了解一下搭载64位处理器的iOS设备的时间bug。我们说到了以UTC时区的1970年1月1日0点0时0秒为界限,数值为0,时间正常流逝为正数,反之为负数。不过各位需要留意的是,时间受到时区的影响。

5Rqx-fxprucv9800855

假设一种情况,我原来是北京时区,假设将时间设置到了1970年1月1日0点0时0秒,那么我将这个时间转换为UTC时间,公式:北京时间=GMT+8=UTC+8,那么UTC时间则为1969年12月31日16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡在Kernel阶段,时间错误,无法继续进行启动。

那么既然事件不能往前调,好奇的朋友可能会往后调,当我们往后调的时候会发现iOS系统可以设置的最大时间是2038年1月1日,并不能再往后设置了。为什么时间只能调到这里?

kUPp-fxpsfak1708698手机时间计算原理

我们了解一下在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秒,系统将会出现错误。

为什么深藏这么多年的Bug到现在才被发现

一个名为vista980622的网友在国外网站Reddit的论坛上发表了一篇“把iPhone时间改成1970年1月1日,手机即可永远变砖”的帖子。

isnO-fxprucs6393801网友@vista980622的帖子(图片引自Reddit)

其实关注科技的同学想必都知道Reddit的影响力,在该帖子发布不久,很多人都不相信,抱着试试看的态度将手机的时间设置成1970年1月1日,结果手机关机后重新开机真的变砖了。

1970年1月1日就像病毒一样在世界蔓延开来了,不仅很多国外网友中招,在国内也有很多iPhone用户又都尝试了。笔者刚刚看到关于1970年变砖的视频后,内心是不相信的,觉得这个视频后半段开机画面是被剪掉了,然后笔者就手贱的进行了尝试,把时间设置成1970年1月1日,手机关机重启真的停留在白苹果了,变“砖头”了,真是应了这句话“不作就不会死”。

然后小编只能用仅有的一点手机维修的功底,把手机拆开,断开电池与主板的连接,为了保险起见等待了十分钟,重新连接电池,然后开机就正常了,这只是解决“苹果1970年事件”其中一种方法。

遇到这个“鬼”我们怎么去降服

解决的方法不仅小编尝试的这一种,下面我们看看针对所有64位处理器的iOS设备解决方案有哪些?

1。在保修范围之内的设备变砖你可以拿着变砖的iPhone去找苹果售后。

根据iOS用户反馈,他们在苹果技术支持那里获得的处理方式并不一样:有的用户称,苹果会直接更换了他们的设备,还有的用户则被“拒绝”了(整机更换)。

有趣的是,因为不少人很好奇这个Bug,但舍不得拿自己的iPhone做试验,就跑到苹果店里把人家的展示用iPhone、iPad给玩死了……

2。电量充足的情况下,等待数小时,当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。

3。让电池“死亡”,手机没电了自动关机,设备会保留有3%的电量来维持设备内部时钟的运转,只有3%的电量都消耗殆尽,设备的内部时钟在你重新充电开机后会被重置,只要1970年1月1日这个日期被重置,设备就能恢复了(不过也有人试过此法无效)。

4。拆机并拆出电池,放置10分钟后重新安装。但拆机有风险,没有拆机经验的同学不建议这么做。另一方面在保修之内的手机,私自拆机将失去苹果的官方保修。

5。等待苹果推出新系统来修复这个Bug。(这种方法适合以上都不敢尝试设备又不在保修期的用户)

对于1970事件,苹果是如何回应的?

日前,苹果已经发出声明,承认了将时间设置为1970年1月1日会导致设备罢工的问题,并承诺很快推出iOS更新来修复该问题。但是至于已经变砖的设备该怎么办,苹果没有给出统一的答复,只说了让受影响的用户自己联系苹果售后。

Akol-fxprucu3126545苹果官方对“1970年事件”作出回应(图片引自苹果官网)

令人我们不敢相信的是,竟然有用户因为这个问题成功换了新机。据悉,有用户因这个问题去了苹果零售店,在跟苹果售后工作人员说明情况后,成功换了新机,用港版的iPhone 6换了一台全新国行iPhone 6。但是这台设备还在保修期,已经过保修期的设备只能自己解决了。但有网友也遇到不给用户换新机的问题,所以用户最好不要钻空子,故意让手机变砖,那样有可能自酿恶果。

哪些设备具有“变砖”的“能力”

据了解,所有系统版本为iOS 8.0至iOS 9.3 beta3,并且搭载64位处理器(即处理器为A7-A9X的设备)的苹果设备都会触发这个Bug。

搭载64位处理器的设备包括设备:

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(三星/台积电):iPhone 6s、iPhone 6s Plus;

A9X:iPad Pro;

gM65-fxprucv9800901搭载64位处理器的设备(图片引自新浪微博

想必谈了这么多,大家也对“苹果1970这个鬼”有所了解了,虽然这个事件根本原因是iOS设备本身存在Bug,但是该事件缘起iOS设备用户所谓的“好奇心”。显然,这是故意为之。手动设置一个日期需要分几个步骤,更别提还要滚动日期到46年前,这就是典型的“好奇害死猫”。关于苹果“1970年事件”今天就先聊到这里吧。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: