第145章 重构经典游戏(2)
…… …… 林灰缺钱的原因很简单: ——想做的事情太多。 而且林灰想做的事情基本都极其烧钱。 诸如硬件一类的科技产品有多烧钱就不消多说了。 软件方面的很多项目也都是吞金巨兽。 一个看似平平无奇的AI模型,具体调/教的过程往往需要无数的真金白银。 至于更复杂的人脸识别技术、FuchisiaOS之类的问世所需要的更是金山银海。 没钱根本玩不转。 或许有人不理解林灰的“野心”。 其实林灰也知道,重生未必就非得波澜壮阔。 也可以渔樵江渚、闲云野鹤。 但林灰觉得他做不到如此这般。 至少最近半年之内林灰很难做到。 太多的事情需要林灰亲历亲为。 虽然没人逼着林灰走什么路线。 但在家庭背景、教育经历、人生际遇这些东西的潜移默化之下实际上一个人该走什么路线已然是定数。 除了家庭因素、教育经历以及人生际遇之外的原因之外。 跟林灰的个人想法也有很大的关系。 林灰觉得一个人的命运只有跟国家的命运民族的命运紧密地结合在一起。1 才能走得更高更远。 有着远大的理想,林灰自然不会被眼前的小小困难所掣肘。 虽然林灰缺钱了,不过问题不大。 搞钱很容易! 这个时代对于林灰来说遍地是钱。 软件能换钱,算法能换钱、商业模式能换钱…… 不过暂时林灰没心情鼓捣这些东西。 暂时还是找些轻轻松松的搞钱方式比较好。 说到轻轻松松地搞钱,林灰最先想起了他前几天看到的新闻: ——蘋果公司全面开放了漏洞赏金计划。 根据该计划,可以通过提交漏洞来换取报酬。 当安全人员向“漏洞赏金计划”提交漏洞之后。 蘋果方面称会对这些漏洞基于开发链的复杂性和严重性进行衡量。 每个安全漏洞至高可获得100万美元的赏金。 而如果能够在Beta版(测试版)软件中发现漏洞的话。 赏金最高一次能够获得150万美元。 林灰前段时间之所以没有马上提交漏洞,主要是抱着观望的态度。 万一提交了漏洞,蘋果不认账就比较悲催了。 这事前世蘋果也不是没干过。 不止蘋果这么干过,谷歌微软之类的企业都这么干过。 不过林灰从一些公开的新闻获悉。 已经有几个安全团队通过这个安全网站提交了安全漏洞并且换得近百万美元了。 当然并不能据此说蘋果守规则。 林灰觉得这主要是因为这个漏洞赏金计划刚刚推出不久。 蘋果方面还不至于这么快就自己打自己脸。 如果是这个原因,那么最近一段时间。 林灰似乎没必要担心太多,他只需要如法炮制提交些漏洞就可以了。 说到蘋果iOS的漏洞,林灰最先想到的是“时间回归漏洞”。 所谓的时间回归漏洞指的是有一段时间蘋果手机调整时间会变砖。 调整时间手机会变砖? 听起来可能有点滑稽,不过这漏洞真实存在。 在iOS64位设备的早期版本上。 只要将苹果手机时间设定到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? 听起来很匪夷所思,但实际上在程序里面涉及到这种现象比比皆是。 这与二进制表达负数的方式有关系。 因为Unix采用了二进制的方式来存储。 二进制数据在执行在执行00……0-1 实际进行的的运算是:(1)00……0-1(ps:省略号中有61个0) 得到的结果是11……1(ps:省略号中有61个1) 这样的话0-1≠-1 得到的数实际是2的64方-1。 类似于这种的例子在计算机的世界里有很多。 比如说两个正数相加结果为0这种情况。 林灰记得以前玩ACM的时候经常遇到那种比较蛋疼的编程题。 表面上要求两个数相加。 听起来要求很简单。 但跑程序测试的时候遇到的测试数据都是那种超大数。 但实际操作的时候必须要考虑数据溢出的情况。 总而言之,计算机世界。 一个奇妙的世界。 在Unix里当时间戳为0的时候进行求差也会遇到类似的这种情况。 当蘋果手机里时间戳的时间设置成0的时候重启手机。 手机的查询机制在通过时间求差查询的时返回的时间非但不是一个时间戳0之前的时间。 反而会返回一个极大的时间。 功能的时间是无穷大,而系统的时间却是0。 而现在这种情况,查询之前的时间会出错。 出错的后果很直接整个系统直接罢工。 即手机直接即变砖。 当然,虽然这个漏洞存在。 但脑回路正常的用户在安全的网络环境下想触发这个漏洞很麻烦。 如果用户想触发这个漏洞的话。 首先用户需要打开“通用”设置下的“日期与时间”。 在这里用户必须先关闭“自动设置时间”的功能才会出现手动设置时间的选项。 紧接着用户要做的时间事情是滑动选择的时间。 因为没有年份的选项,用户想要改变唯一的办法就是滑动日期。 经过很麻烦的操作将才可以将时间设置为1970年1月1日。 而仅仅是这样还不会触发这个漏洞。 在时间设置为1970年1月1日之后。 用户要接着进行下一步操作:关机重启。 至此iPhone变砖的步骤才大功告成。 按照这一番操作下来的话手机将一直卡在苹果手机开机时Logo刚刚出来的界面。 听起来这个漏洞似乎很难触发啊! 这样一个很难触发的漏洞有什么价值吗? 当然有价值。 凡事就怕有心人故意利用。 漏洞这种东西也一样。 对于普通用户来说这个漏洞不算什么。 但对于有心搞事情的技术人员来说通过这么一个蠢萌的漏洞可以做很多事情。 当iOS设备连接到公共网络时,iOS系统将会使用网络时间协议服务对时区、时间进行校准。 如果黑客发送恶意的网络时间协议攻击,将iOS系统时间校准至UTC为0的时间,那么所有用户设备均会受到此bug影响,在重新启动设备后无法使用设备。 NTP(网络时间协议)是最古老的网络传输协议之一。 其本身的目的是将精确计时装置如原子钟的时间通过网络的手段传递给每一台联网设备,从而提供最精确的对时能力。 即使网络时间协议协议本身已经考虑到了篡改时间的可能性。 但长久以来,以网络时间协议为切入点网络攻击方式屡见不鲜。 虽然林灰并不是很擅长这类操作,不过这对于黑客来说很容易做到。 毕竟哪怕是林灰这样并非专门从事IT安全方面的人,也知道上述操作具体如何实现上述过程。 随便找一个公共场所,设定一个不设密码的开放WiFi。 然后将苹果的网络时间协议请求解析到自己控制的IP上(这里的IP指IP地址)。1 具体到网络时间协议攻击如何操作。 首先伪造一份数据给一台服务器。 服务器就会进行自动响应。 转而对一个特定IP发送大量响应信息。 而且这份数据和受害者最终收到的数据之间有一个非常大的倍数关系。 通过大量数据的阻塞攻击,可以瞬间影响受害者的网络带宽,甚至直接瘫痪受害者的网络。 这种情况下,当用户将iPhone连接到这个WiFi之后,一旦重启就变砖。 总而言之,这个漏洞在普通用户视角中可能不算什么。 但对于一些心术不正的技术人员来说。 这个漏洞很容易利用。 而且这个漏洞很严重。 遇到这个漏洞的手机解决方案只有一个: 拆机断电。 在将iPhone拆开之后需要将电池与主板的连接切断。 并且放置一段时间,让内部的电容内的电能充分消耗。 之后再次连接电池开机,这样一来iOS就能重归正常工作状态。 其中的原理更简单,通过彻底断电,清除iPhone内部电子元器件的计时功能,让一切相关数据归零。 重启之后就能跳出这个Bug。 当然,也仅仅是暂时跳出这个BUG而已。 但如果你将时间,或者时间被再次修改为1970年1月1日,这个问题还会再次出现。 虽然看起来简单。但实际很难,毕竟不是那么多人擅长手机拆解。 而且拆解本身也已经对iPhone本身造成了损伤。 总之这件事情影响很大,林灰记得前世这件事情影响很不好。 前世这个漏洞涉及的范围很广。 几乎涵盖了系统版本:iOS8.0-iOS9.3beta3 (对对应搭载64位处理器的设备) 虽然现在iOS8正式版还没发布。 但iOS8Beta版却已经存在了。 没道理正式版上存在的bug在测试版上却不存在。 不过出于谨慎,林灰找了部空余的iPhone5s。 林灰记得这似乎是前不久买那堆电脑时顺带买的。 啧啧啧。 老实说这测试漏洞的成本有点高昂啊。 不过比起即将获得的回报这点成本不算什么。 蘋果方面的安全人员也不是傻子。 不会不清楚林灰提交漏洞的价值。 刷到iOS8beta版本之后。 林灰进行了测试。 测试的过程林灰还顺带着进行了录像。 通过一番测试。 林灰发现这个涉及到改时间重启会变砖的漏洞果然依旧存在。 存在很合理。 不存在才不正常。 只要蘋果手机底层跟Unix有牵连。 这个漏洞就会一直存在。 事实上前世的蘋果手机涉及到这个漏洞所采取的解决方案也只是将让用户没法将时间调到1970年1月1日而已。 可以说这是很睿智的一种做法了。 尽管这个漏洞很强大。 但面临提交的时候。 林灰却有点犹豫了。 这么牛比的漏洞拿去换钱会不会有点亏? 或许可以有更大的用处。 不过旋即林灰就放弃了这一想法。 林灰现在最不缺的就是蘋果的漏洞。 比这个时间回归漏洞严重的多的蘋果漏洞比比皆是。 林灰之所以第一时间想到时间回归漏洞不是因为这个漏洞最严重。 而是因为这个漏洞相对来说比较经典。 以后林灰真想利用漏洞搞事情完全可以用别的漏洞来安排一波。 在此时缺钱的情况下漏洞还是有必要提交的。 在实际漏洞提交的过程中,林灰使用的是前段时间买的新电脑。 连的是代理IP。 虽然有点麻烦,但小心一点为好。 这种所谓的漏洞提交网站说白了很像是黑客论坛。 不小心些着了道就不妙了。 在漏洞激励计划的第一步林灰就卡住了。 起个什么id好呢? 这让起名废林灰着实很纠结。 纠结了一会之后林灰干脆直接以“admin”命名了。1猪熊的穿越:2014