林灰觉得这主要是因为这个漏洞赏金计划刚刚推出不久。

蘋果方面还不至于这么快就自己打自己脸。

如果是这个原因,那么最近一段时间。

林灰似乎没必要担心太多,他只需要如法炮制提交些漏洞就可以了。说到蘋果ios的漏洞,林灰最先想到的是“时间回归漏洞”。

时间回归漏洞可以说是ios系统最经典的漏洞之一。

所谓的时间回归漏洞指的是有一段时间蘋果手机调整时间会变砖。

调整时间手机会变砖?

听起来可能有点滑稽,不过这漏洞真实存在。

在ios 64位设备的早期版本上。

只要将苹果手机时间设定到 1970年1月1日,然后重启,苹果手机就变砖头。

之所以存在这样一个漏洞跟ios系统的最底层——unix系统有很大的关系。

unix操作系统,是一个强大的多用户、多任务操作系统。

该系统支持多种处理器架构。

按照操作系统的分类,属于分时操作系统。

该系统最早由肯·汤普逊、丹尼斯·里奇和道格拉斯·麦克罗伊于1969年在at&t的贝尔实验室开发。

unix系统有很多衍生产物。

ios基于的 darwin正是 unix的分支之一。

ios作为一个系统一定程度上继承了unix的特性。

既然是系统,那么不可避免会涉及到计时的问题。

与人类一般使用“年+月+日”的计数格式不同。

unix采用了一种完全不同的计时方式:

在unix系统中计时方式是先将(utc时区) 1970年 1月 1日 00:00设定为 0点。

随后计算到目前为止所经过的秒数。

举个栗子。

2014年6月22日18时30分25秒。

表示出来的话为1403433025秒。

换算成对应的二进制在unix系统下表示时间。

这种计时方法被称为时间戳。

ios系统也沿袭了unix这一计时方法。

也正因此,ios中时间的设定最多也只能回溯到 utc时区1970年 1月 1日 00:00也是这个原因。

仅仅是设置成这个时间的话不会有什么问题。

但涉及到一些特殊的在局部关键功能具有查询过往信息的规则的时候

将时间设置成utc时区1970年 1月 1日 00:00很容易出问题。

尽管多数时候可以通过人为的因素避免触发这个漏洞。

但蘋果手机开机的时候就有一个这样强制查询过往信息的机制这个几乎无法避免。

这个机制没办法取消,因为关机重启之后手机肯定是要读取一部分先前的日志数据的。

这种情况下如果时间戳是正常时间的话,那么读取先前的日志数据并不会有什么问题。

但当utc时区1970年 1月 1日 00:00的时候,这个时候时间戳的时间是0。

当局部时间比时间戳 0点更早的情况下。

应该怎么表示比时间戳 0点更早的时间?

似乎没什么好办法。

尽管没别的好办法,系统是机器。

又不是拥有智慧的生物,它一样是要通过查询机制找到更早时间的。

这个时候就会在时间戳0的基础上进行-1操作。

(这是为了在系统时间戳表达的时间上减去相差的秒数来查询之前的内容)

不过在0的基础上-1就比较悲催了。

得到的结果并不是-1。

0-1≠-1?

听起来很匪夷所思,但实际上在程序里面涉及到这种现象比比皆是。

(本章完)

本章未完,点击下一页继续阅读。

都市言情小说相关阅读More+