已哭晕丨iPhone日期调到1970年秒变砖

已哭晕丨iPhone日期调到1970年秒变砖

已哭晕丨iPhone日期调到1970年秒变砖

不知道昨天小伙伴们过得怎样

是收到了经济实惠的袋装玫瑰花

↓↓↓

已哭晕丨iPhone日期调到1970年秒变砖

还是这样浪(nue)漫(gou)的玫瑰花海

↓↓↓

已哭晕丨iPhone日期调到1970年秒变砖

又或者你们跟翼叔一样只能改名为

↓↓↓

已哭晕丨iPhone日期调到1970年秒变砖

/其实/

要说昨天最惨的还要数那些

刚收到恋人送的iPhone 6s

结果自己一作导致新机秒变砖的果粉

这大情人节的情侣约会约到苹果店也是没谁了

那么他们究竟做了什么呢?

据苹果店的工作人员说这是由于他们

将iOS系统时间修改为1970/01/01的缘故

▼

已哭晕丨iPhone日期调到1970年秒变砖

此操作会导致重启后系统将永远无法开机

那么这个bug又是为什么出现的呢

如果想要真正了解这一bug

小伙伴可能需要先了解以下知识

已哭晕丨iPhone日期调到1970年秒变砖

UNIX时间戳

已哭晕丨iPhone日期调到1970年秒变砖

在确认这件事情的真假前

你需要了解的一个知识是Unix时间戳

iOS系统时间使用Unix时间戳表明

在系统中使用系统位数个二进制位储存时间

Unix时间戳规定

UTC时区的1970年1月1日 0点0时0秒的值为0

以秒为单位 即每过一秒二进制数字加1

不能往前调那我把时间往后调

有些好奇的朋友拿出了自己手机

心想既然我不能往回调

那我要是把时间使劲往后调能怎样

细心的朋友发现了一个问题

iOS系统可以设置的最大时间是2038年1月1日

并不能再往后设置

苹果必定思考到了这个问题为什么这么说呢

我们拿32位系统来举个栗子

已哭晕丨iPhone日期调到1970年秒变砖

在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秒

系统将会出现错误

▼

已哭晕丨iPhone日期调到1970年秒变砖

所以Apple为了避免这种问题导致的错误发生

将最大时间期限定在了

2038年1月1日 23时59分59秒

这样即使超出这个范围在18天内也不会有太大问题

况且32位设备到那个时候基本都已经淘汰了

可是64位系统会不会受到这个影响呢

通过计算我们可以得到

292,277,026,596年12月04日 15时30分08秒

是64位系统可以表明的最大时间

已哭晕丨iPhone日期调到1970年秒变砖

64位处理器的”时间回归”问题

已哭晕丨iPhone日期调到1970年秒变砖

有了刚才的知识储备目前我们回到正题

开始探讨搭载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阶段

时间错误无法继续进行启动

已哭晕丨iPhone日期调到1970年秒变砖

触发bug条件与表现

满足以下条件『时间回归』bug被触发

系统版本:iOS 8.0 ~ iOS 9.3 beta 3

硬件设备:搭载64位处理器的设备

(即处理器为A7~A9X的设备)

已哭晕丨iPhone日期调到1970年秒变砖

进入『设置』-『通用』-『时间与日期』

关闭『自动设置』

并将时间修改为1970年1月1日分秒任意

修改时间后需要重启设备

Bug触发表现为当iOS设备启动时

画面会卡在苹果Logo无法继续启动

已哭晕丨iPhone日期调到1970年秒变砖

Bug危害分析

黑客可以利用此bug通过无线局域网发出攻击

当iOS设备连接到公共网络时

iOS系统将会使用NTP服务对时区时间进行校准

已哭晕丨iPhone日期调到1970年秒变砖

如果黑客发送恶意的NTP攻击

将iOS系统时间校准至UTC < 0的时间

那么所有用户设备均会受到此bug影响

在重新启动设备后无法使用设备

已哭晕丨iPhone日期调到1970年秒变砖

解决办法

NO.1‍

拆机并拆出电池放置10分钟后重新安装

(当然拆机有风险 操作请谨慎)

NO.2

添加Cydia源http://repo.ziph0n.com/

并安装BrickingDate插件

注意:此插件只可以防止人为修改时间

并无法防止代码恶意篡改时间

(安装效果如下图)

▼

已哭晕丨iPhone日期调到1970年秒变砖

NO.3

电量充足的情况下等待数小时

当Unix时间戳的数值大于等于0

系统时间生效可正常开机

NO.4

拿到苹果售后找工作人员解决

已哭晕丨iPhone日期调到1970年秒变砖

/据说/

心理学有个粉红色大象的思想实验

就是越告知你别去想粉红色大象

你脑袋里越会出现这么个形象

这次的事件就是如此

人们越是说不要去尝试的事情

往往越有人去做

对此翼叔只想说

“NO ZUO NO DIE”

已哭晕丨iPhone日期调到1970年秒变砖

觉的翼叔的文章对你有协助

请持续关注我们的账号吧

毕竟毛爷爷都说

“不以关注为目的的阅读,都是耍流氓”

© 版权声明

相关文章

暂无评论

none
暂无评论...