iPhone 日期时间设定为1970/1/1变砖 到底是真是假

手机 驱动中国 张凡 16,777,215 次阅读 0 条评论
分享 Q

这两天突然在网上盛传有人的iPhone 6因为自己设定了日期为1970/1/1,重启后变成了砖头,到底是网友的恶搞还是真的有这么回事,想要弄清楚事情的真假,必须知道其原理。

201601071013563048

iOS系统时间使用Unix时间戳表示timestamp。在系统中,使用系统位数个二进制位储存时间。在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秒,系统将会出现错误。Apple为了避免这种问题导致的错误发生,将最大时间期限定在了2038年1月1日23时59分59秒。

20160213_181843_488

而在64位的系统中,基于UTC时区来说,北京时间的1970/1/1将变成1969年12月31日16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡在Kernel阶段,时间错误,无法继续进行启动,微博中也有网友晒出了其出现这种情况的设备型号。

20160213_181843_921

而解决办法也非常简单,拆机并拆出电池,放置10分钟后重新安装。电量充足的情况下,等待数小时,当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。已越狱的机子添加Cydia源http://repo.ziph0n.com/并安装BrickingDate插件。不过这个bug很可能被黑客利用,当iOS设备连接到公共网络时,iOS系统将会使用NTP服务对时区、时间进行校准。如果黑客发送恶意的NTP攻击,将iOS系统时间校准至UTC < 0的时间,那么所有用户设备均会受到此bug影响,在重新启动设备后无法使用设备。

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友