2018-04-08

拯救强迫症:移除 iPhone 设置--通用上的红字 1

一般来说,比较适合的 iPhone 系统版本为其出厂时预制的大版本的最后一个小版本。比如 iOS 6 系列的 6.1.4,iOS 10 系列的 10.3.3。为了保证流畅运行而停留在旧版本机器们会被不断地提示 OTA 升级,而且系统–通用上的那个红字 1 简直就是强迫症的肉中刺。下面以 iOS 10.3.3 为例来去掉这个红字 1。

Badge

禁用 OTA 升级

这一步比较简单,普通用户权限即可完成。通过安装下面的 tvOS 11 Beta Software Profile 的描述文件即可。

在 iOS 上的 Mobile Safari 中打开:

tvOS_11_beta_Profile

完成这一步可以防止在去掉红字 1 后 OTA 更新再次运行,导致这个 badge 再次出现。

去掉 设置–通用上的红字 1

这里需要有 root 用户权限,即通常说的越狱。下面的操作有风险,建议开始前通阅全文。

iOS 10.3.3 上获取 root 权限推荐使用 v0rtex-S,开源。

需要针对自己的设备型号、当前固件版本,自行查找 17 个 offsets。如果你偷懒,也可以使用 uroboro 的查找脚本

iPhone 7 10.3.3 offsets

国行 iPhone 7 - 10.3.3 的 offsets

几点提示:

  • 脚本输出的 offsets 不一定完全正确,需要手工核对。比如 OFFSET_ZONE_MAP 基本上都是错误的。

  • 如果之前使用过其他基于 v0rtex exploit 的提权工具(比如 Meridian),可能会遇到 killed 9 的提示,此时需要将 v0rtex-S 的 bins 目录添加至环境变量:

    echo 'export PATH=/v0rtex/bins:$PATH'  >> ~/.profile
    source .profile
    
  • 你需要 iOS 10 SDK。因此需要下载 Xcode 8。

  • 如果你有 iOS 开发者账号并且在国内,从 Apple Developer Center 下载 Xcode 8 时,建议你科学下载。否则很有可能会下载到由网宿科技 CDN 提供的 corrupted Xcode,解压时是无法通过自校验的。

  • 如何在 Xcode 9 中使用 iOS 10 的 SDK,可以参考这里

  • 添加 SDK 后在 Xcode 设备列表里会出现 x2 的设备,注意选择使用 SDK 10 版本的设备。


在成功以 root 用户 SSH 进入手机后,编辑 /System/Library/CoreServices/SystemVersion.plist 文件:

vim /System/Library/CoreServices/SystemVersion.plist

Change system version

将其中的 ProductBuildVersion 值和 ProductVersion 值更改为当前最新的系统值。

保存,并刷新 SpringBoard:

killall SpringBoard

当 SpringBoard 再次出现时,设置–通用上的红字 1 已消失,并且由于之前已经通过 tvOS 11 Beta Software Profile 禁用了 OTA 更新,此时红字将不再出现。

NoBadge

升级提示已消失

如果不放心,还可以编辑 iPhone 中的 hosts 文件:

vim /etc/hosts

将下面的内容添加至 hosts 文件,保存并退出 vim:

127.0.0.1 mesu.apple.com

还原系统版本号

此时,系统版本号被修改为了 iOS 11 最新版,需要重新使用 root 账号将系统还原为实际的版本号。

在 v0rtex-S 中更改系统判断,让其加载实际的 offsets。比如一台被伪装成 iOS 11.3 的基于 iOS 10.3.3 的 iPhone 7:

else if (strcmp(u.machine, "iPhone9,1") == 0 && [ver isEqual:@"Version 11.3 (Build 15E216)"])
{
   //Offsets 10.3.3 for iPhone 7...
}

编译运行 v0rtex-S,使用 root 账号 SSH 进入手机,将 /System/Library/CoreServices/SystemVersion.plist 里的内容还原,并重启 iPhone 即可。

几点提示:

  • v0rtex-S 直接以 Debug Scheme 编译至手机运行即可。更改 Scheme,或者使用 archive、ad-hoc 等形式可能会报错。

  • 在编译时,Xcode 可能会报错,这是由于 Xcode 认为此台 iPhone 是 iOS 11,并加载和 ARKit 相关的库进行 debug。此时可以直接拔掉 iPhone 或者退出 Xcode,直接在手机上运行 v0rtex-S。 Obsessed Mug

    Success for the Obsessed 图片来源

(End)



本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议
This article is licensed under Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)

沪ICP备15044284号-1