iPhone安装旧版本应用

今天不小心把自己iPhone6上做实验的软件“Physics Toolbox Sensor Suite”升了级,结果发现磁力计的采样率从100Hz变成了10Hz,还不能调,简直智障,所以就想把旧版的软件再装回来。现有的iPhone安装旧版本应用方法的原理主要是通过抓取https流量,在iTunes下载应用时将应用版本号替换为旧版本号,得到旧应用的安装包。这个过程其实就是一个中间人攻击的过程。然而网上的教程都不是很全面,从开始到装好折腾了我两个多小时,踩了不少坑,所以还是有必要写一篇博客分享一下。

安装旧版本iTunes

由于iTunes在12.6.3版本后取消了应用商店,无法通过iTunes下载应用,所以必须使用旧版本。这里我用的是12.0.1.26版本。注意iTunes分成32位和64位版本,一定要选择和自己操作系统匹配的版本,否则不能安装。

在iTunes上登录自己的Apple ID

可能大多数人都觉得这一步应该很简单,我当时也是这么想的。然而我输好ID和密码,按下回车之后就傻眼了。iTunes提示无法登录,我的iPhone6手机上出现了6位安全码,用于登录。但是这个安全码往哪输啊?旧版iTunes没有能输安全码的地方。其实这六位安全码只要附在密码后面就ok了。

安装fiddler

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。这里我们的“中间人攻击”就是用它来实现的。建议通过官网下载安装。

配置fiddler

打开Fiddler.exe,点击tools - Options,选择HTTPS选项卡,勾选Capture HTTPS CONNECTs选项和Decrypt HTTPS traffic选项,确认后关闭fiddler
fiddler配置

安装证书

使用fiddler可能会出现证书错误的情况,这时候就需要安装一下证书。

  1. 打开cmd
  2. 进入fillder.exe所在目录
  3. 执行下面命令
    1
    makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012

这一步操作转自周小董的博客。

截取下载请求

  1. 打开iTunes
  2. 在APP Store找到需要安装的应用
    需要安装的应用
  3. 打开fiddler。如果iTunes提示无法验证服务器身份,点继续就行,下同。
    无法验证服务器身份提示
  4. 设置断点。在fiddler左下角里的黑框里输入:bpu MZBuy.woa/wa/buyProduct,按下回车即设置了断点.
    设置断点
  5. 点击下载应用,这时应该会提示输入AppleID和密码,正常输入就好。
  6. 这时fiddler会触发断点
  7. 在左边的列表中左键点击触发断点的事件
    点击触发断点的事件

获得旧应用版本号

  1. 点击“Break on Response”
  2. 点击“Response body is encoded. Click to decode”解密流量
  3. 在右下部分切换至textView选项卡,找到所有版本号。可通过搜索关键字“softwareVersionExternalIdentifiers”找到。
  4. 自行推断想要下载的版本的版本号,把它记下来。
    版本号

下载旧版本应用

  1. 重新执行截取下载请求中的所有步骤,选择Inspectors - TextView选项卡
  2. <key>appExtVrsId</key>下面的版本号改为旧版本的版本号
  3. 点击绿色的Run to Completion,即可下载旧版安装包

安装旧版本应用

下载itools,连接手机,通过安装包安装应用。注意,手机的id必须和iTunes登录的id一致