OTA那点事儿

如何阻止设备自动更新

在iOS 5时代,苹果引入了一项更新的新技术叫OTA Updates (全名为Over The Air Updates),但是对于安卓用户来说,其实已经不算是什么新技术了。
这项技术允许用户通过设备直接下载更新包,通过差异对比进行对系统进行部分文件覆盖更新,『旧文件+补丁文件=新文件』,大家可以大致这么理解。
从iOS 5到iOS 10,这种OTA技术已经更迭3个版本,前两个版本使用BSDIFF40对文件进行更新,在第三个版本则使用BXDIFF41,更新包结构发生一些变化。
OTA这项技术起初对于越狱十分有帮助,因为更新包内仅存在新版本与旧版本的差异文件或全新文件,苹果若要修复上一版本的漏洞,做出的变更也一定在这个压缩包内,况且当时OTA更新包没有做出加密,可以直接解压,所以可以一定程度上减少黑客的工作量。
当然,OTA这项技术存在很多槽点:

  • 当你的设备连接至电源,且处于无线网络连接时,不经过用户许可,设备将自动检测并下载更新包
  • 占用储存空间,反复提示用户更新 (好在现在可以删除更新包)
  • 更新时发热量极大,更新后可能存在若干问题,甚至无法启动设备
  • 某些地区下载速度奇慢无比
  • 对越狱的成功存在一定干扰

如何阻止设备自动更新

通常来讲,已经越狱的设备,不具备检测更新的功能。越狱工具会在越狱过程中关闭OTA功能,例如evasi0n。但是最新的Pangu越狱工具好像并没有做此工作,所以可能导致越狱用户检测并下载到了更新。

准备工作

如果你的设备已经出现了更新提示『1』这样的角标,作为强迫症的我们绝对是不能忍的。您需要如下操作:

  1. 检查系统是否已经下载更新包
    进入『设置』-『软件更新』,如果界面按钮显示『现在安装』,那说明设备已经下载好更新包,你需要进行第2步工作。如果按钮显示『下载并安装』,说明设备没有下载更新包,请跳过此版块。

  2. 删除更新包
    经过第一步确认后,如果设备已经下载了更新包。进入『设置』-『通用』-『储存空间与iCloud用量』,找到『储存空间』标签,选择『管理储存空间』。稍等片刻,系统会列出所有App占用空间情况,在列表中找到『更新』,点击并删除更新包即可。

我的设备已经越狱了

对于已经越狱的设备,阻止设备自动更新的方法多种多样。请各位根据喜好自行选择。
注意:仅选择一种方法即可!

方法1:关闭OTA守护进程

此方法最靠谱,可以保证OTA功能被彻底关闭,而且此操作可逆。不过推荐高级玩家操作。因为对系统改动较大。操作错误可能会有负面影响。
所需工具:
iOS端:Cydia安装MTerminaliFile(或类似软件)

如果更倾向在计算机上操作,需要:
iOS端:Cydia安装MTerminalSaurik源中的Apple File Conduit "2"
计算机:iFanboxiMazing(或类似软件)

  1. MTerminal安装后,桌面会多出终端图标。点击后,输入命令:

    launchctl unload -w /System/Library/LaunchDaemons/com.apple.OTAPKIAssetTool.plist
    launchctl unload -w /System/Library/LaunchDaemons/com.apple.OTATaskingAgent.plist
    

    成功执行后,守护进程被成功卸载。

  2. 保险起见,进入/System/Library/LaunchDaemons/文件夹,移动com.apple.OTAPKIAssetTool.plistcom.apple.OTATaskingAgent.plist两个文件到备份目录(您自定义即可)。
    如果您100%确认该功能一定不需要,那么也可删除文件,尽管不是十分推荐该操作。

方法2:修改系统版本号

此方法自定义度较高,可以让你的iOS版本显示为你想要的任意版本。并没有关闭OTA功能,普通用户可以操作。

所需工具:
iOS端:Cydia安装iFile

打开iFile,进入/System/Library/CoreServices/找到SystemVersion.plist文件,使用『属性表编辑器』,打开后两条键值可以更改。
ProductBuildVersion:系统版本号,可将其修改至很高的版本,例如10.1.2等。
ProductVersion:系统版本,你可以将其任意修改,例如JASON,ANDY等。

修改后保存,并重新启动设备。系统检测到文件变更,并将其应用至系统。需要一小段时间。成功后,可以进『设置』-『通用』-『关于本机』看看,是不是逼格很高?

方法3:欺骗系统版本

此方法同样适用于未越狱设备,请移步下一版块。

我的设备还没越狱

未越狱的设备对系统操作可能很少,至少我们不能直接关闭OTA功能。所以只能从版本号下手,但是我们又不能直接更改系统版本号,因为权限不允许。
这时候我们需要借助苹果官方的AppleTV描述文件欺骗iOS的版本号,服务器会将tvOS的版本号和iOS版本号对比,这样以来,你的iOS版本几乎永远是最新的,只是描述文件会过期。方法其实和『越狱版块』的『方法2』类似,只是我们这个做法类似于以子之矛攻子之盾的感觉。
请使用iOS的Safari直接访问并安装描述文件:下载地址
安装后即可。请使用『设置』-『通用』-『软件更新』

OTA那点事儿_第1张图片
尝试检测新版本
OTA那点事儿_第2张图片
描述文件内容


当你需要OTA更新时,直接删除描述文件即可。

屏蔽升级检测方法对比

我的文章几乎都会列出表格把每个方法进行对比,给读者更直观的感觉。这篇文章也不例外,三种方法对比如下,请各位根据需求自行选择:

OTA那点事儿_第3张图片
屏蔽升级检测对比表格

我该如何更新设备

本人更新设备一直是下载最新的固件,备份数据后,在iTunes选择固件更新。这样更新对设备负担最小,最安全,且出现问题的可能性最小,但是此操作可能相对繁琐,因为每次都需要下载最新的固件,然后连接至电脑刷机,可能对于一些用户来说实在不方便。
综上所述,个人推荐的比较合理的更新方式是:
小版本更新(例如:iOS 9.3.2 到 iOS 9.3.3),使用OTA更新,因为更新包比较小,覆盖文件不多,造成问题的可能性稍微小,而且比较方便快捷。
跨版本更新(例如iOS 9 到 iOS 10),使用iTunes下载完整固件更新。OTA更新需覆盖大量文件,而且设备运算量极大,机器发热会非常严重,而且更新后系统存在问题的可能性很大。
如果您想越狱,则推荐不使用OTA更新,或越狱前使用iTunes保留数据刷机。

结束语

一个良好的习惯是,常备一个最新的、完整的官方固件在计算机。以便设备出现问题是,可以及时使用iTunes进行刷机。
以前的iTunes不可以保留数据刷机,一旦出现问题,刷机过程将直接覆盖系统区数据,并清空用户区数据。自从iTunes 12后,Apple做出更改,如果用户不手动进入DFU模式,设备出问题后将自动置于Recovery模式,刷机后尽可能地保留用户数据,比较人性化。和『保留数据固件制作工具』原理一致。
但是对于一般用户来讲,寻找并下载最新固件可能是一个困难。用iTunes下载速度又不是很满意。所以我致力于解决这个问题,正在推出新版本的@App1eDNA,若各位感兴趣,可以关注。


文章可能存在纰漏,欢迎各位批评指正。
文章未经作者允许,谢绝转载。

新浪微博:@Hackl0us
2016年09月02日 13:37:02

你可能感兴趣的:(OTA那点事儿)