先来简单说一下这个Bug触发时的表现,如果用户进入设置—通用—时间与日期,关闭自动设置,并将时间修改为1970年1月1日,分秒任意。修改时间后,需要重启设备。然后该设备启动时,则会卡在苹果Logo,无法继续启动。
iPhone时间调到1970年1月1日变砖Bug原理:
说到IOS时间Bug,则必须要介绍一下Unix时间戳,IOS系统时间是使用Unix时间戳(Unix epoch)表示(time_t数据类型)的。Unix时间戳规定,UTC时区的1970年1月1日 0点0时0秒的值为0,以秒为单位,即每过一秒,二进制数字加1。
以32位系统为例,在32位系统中,time_t是长度为32位的,首个二进制位是符号位,用来储存正负。正数则为1970/1/1以后的时间,负数反 之;其余的31位用来记数。当时间到达2038年1月19日3时14分08秒时,数值位全部向前进1,导致符号位被置1,其余31位为0。此时,将出现 时间回归的情况,系统时间变为1901年12月13日20时45分52秒,系统将会出现错误。为了避免这个错误,苹果将最大时间设定为2038年1月 1日23时59分59秒。而64位系统的最大时间限额将为292,277,026,596年12月04日15时30分08秒,基本可以说是不受这个限制的 了。
知道上面这个知识点后,我们再来说一下时区对时间的影响,大家都知道,我们所在的时区是北京时区,假如我们将时间设置在1970年1月1日0点0时0 秒,北京时间=GMT+8=UTC+8,UTC时间则为1969年12月31日16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡 在Kernel阶段,时间错误,则无法继续进行启动。
iPhone时间调到1970年1月1日变砖触发该bug条件与表现:
满足以下条件,『时间回归』bug被触发:
系统版本:IOS 80 ~ IOS 93 beta 3
硬件设备:搭载64位处理器的设备(即处理器为A7~A9X的设备)
进入『设置』-『通用』-『时间与日期』,关闭『自动设置』,并将时间修改为1970年1月1日,分秒任意。
修改时间后,需要重启设备。
Bug触发表现:IOS设备启动时,卡在苹果Logo,无法继续启动。
iPhone时间调到1970年1月1日变砖解决办法:
对于所有64位系统,需要拆机,并拆出电池,放置一段时间后,重新安装即可。如果电池电量充足,等待数小时,当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。
需要提醒大家的是,当IOS设备连接到公共网络时,IOS系统将会使用NTP服务对时区、时间进行校准。如果黑客发送恶意的NTP攻击,将IOS系统时间校准至UTC小于0的时间,那么所有用户设备均会受到此bug影响,在重新启动设备后无法使用设备。
一、打开“设置”
二、在设置列表中找到“通用”选项,点击进入
三、在通用列表中用手指向上扫动,找到“日期与时间”选项,点击进入
四、由于系统默认的是自动设置时间,所以我们看不到设置时间的选项
五、把“自动设置”选项关闭,即可出现日期与时间设置。用手指在下方的日期与时间处滑动即可更改日期与时间
步骤
1 打开“设置”。在主屏幕上点击“设置”图标。在“设置”菜单中可以更改手机的各种设置,比如连接无线局域网、更改应用程序的行为或启用“勿扰模式”。
2 点击“通用”。“通用”设置中都是一些不常用的功能,比如手势、侧边按钮的功能以及应用程序配置。
3 点击“日期与时间”。它位于“通用”设置的中间位置。
4 向左滑动以关闭时间和日期自动设置。默认情况下,iPhone会通过无线网络或蜂窝网络自动设置时间和日期。关闭后,你就能自己更改时区、时间和日期了。 点击“自动设置”旁的开关,然后就能手动设置时间和日期了。
5 选择时区。关闭“自动设置”后,就能更改时区。点击“时区”并输入位置,将时间调整到该时区。
6 更改时间和日期。你会在当前时区下看到时间和日期。 点击时间和日期。关闭“自动设置”后,你就会在时区下方看到它们。 用手指拖动列表,更改时间和日期。你可以滚动列表以同时更改时间和日期。 如果年份不正确,向前滚动月份,直到出现正确的年份。
7 在手机屏幕的顶部向下轻扫。随后会打开通知中心,可以在其中查看通知、今天的日期及日历事件。
8 点击“今天”。随后就能看到时间和日期,还有天气。任务完成!如果时间和日期仍然不正确,再次打开“通用”设置中的“日期与时间”,然后做一些相应的调整。
欢迎分享,转载请注明来源:品搜搜测评网