苹果iOS设备日期设置到1970年变砖?原理及解救方法来了 最近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,系统时间生效,可正常开机。 ▼针对已越狱设备的防范
并安BrickingDate插件 注意:此插件只可以防止人为修改时间,并无法防止代码恶意篡改时间(安装效果如下图)。
▲From @Ziph0n on Reddit Bug危害分析 黑客可以利用此bug通过无线局域网发出范围性攻击。 当iOS设备连接到公共网络时,iOS系统将会使用NTP服务对时区、时间进行校准。如果黑客发送恶意的NTP攻击,将iOS系统时间校准至UTC < 0的时间,那么所有用户设备均会受到此bug影响,在重新启动设备后无法使用设备。
苹果发布iOS 9.2.1 提升安全并修复漏洞北京时间1月20日消息,据科技博客AppleInsider报道,苹果在周二正式发布了iOS 9.2.1,对iPhone和iPad系统进行了维护和安全升级。此次更新解决了一些小问题,最明显的一个就是解决了阻止企业客户完成应用安装的问题。
苹果推送iOS 9.2.1更新 苹果用户现在可以通过iOS设置中的“软件更新”来安装iOS 9.2.1。苹果在更新日志中称,当企业客户在使用移动设备管理服务器安装应用时,系统中存在的一个漏洞可能会阻止应用完成安装,此次iOS 9.2.1更新解决了这一问题。
在周二发布正式版之前,苹果总计向开发者发布了两个iOS 9.2.1测试版本。尽管iOS 9.2.1刚刚发布,但是苹果已经在努力开发iOS 9.3,后者将提供更大平台更新,目前已经面向开发者推出了首个测试版本。
当iOS 9.3正式发布时,它预计将包含夜间模式,让用户在夜间阅读时保护眼睛。另外,iOS 9.3还允许用户利用Touch ID对备忘录应用内的资料上锁,提供课堂环境下的iPad多用户支持。
苹果在发布iOS 9.3测试版的同时还推出了watchOS 2.2系统。用户可以将多个运行watchOS 2.2的Apple Watch连接到一个iPhone上,便于在不同场合更换不同风格的手表。对于开发者来说,他们可以在多个硬件上同时测试应用。
首发来源:点击访问 |