很多人说iOS过于封闭,比如不能像安卓手机一样自由轻易地升级降级app,有些软件一旦升级上去,发现踩了坑想要降级回来却无路可走。其实和安卓的apk一样,iOS也有其自身的软件安装包—IPA(iPhoneApplication)。只要我们能够获取这个app对应的旧版IPA,就可以用itunes等方式将其安装到我们的iPhone上面。
本期我们就以Mac环境下的Charles网络调试软件为工具,以大家喜闻乐见的tg x 5.0.2版本app为例,详细讲述如何通过抓包的方式来获取旧版iOS App~
tg交流群:Newlearnerの水群
准备工作
Mac一台
Charles网络调试软件
iTunes 12.6.3
Workflow(捷径)软件
pp助手/Jsbox软件
-
Charles的安装
官网:Charles Web Debugging Proxy
有人问为什么不即刻使用优秀的surge来抓包,我只能很遗憾的告诉你这个“网络调试工具”不支持breakpoint。下载好Charles之后我们开始安装,因为要涉及https解密(中间人攻击),所以安装好之后我们还要在Mac上安装一个证书并且信任之。
根据上图安装证书,若出现不能修改「“system roots”钥匙串」的提示,那么我们需要手动安装该证书。
回到刚刚点击install certificate的地方,转而点击Save Charles Root Certificate,会自动下载证书到本地。得到证书文件之后手动拖入「钥匙串」—「系统」—「证书」一栏当中并安装之。最后双击打开该证书添加”始终信任“的权限即可。
-
iTunes的安装
测试抓包的时候我发现我的MacBook Pro上macOS的系统版本是10.13.2,iTunes版本是12.7.1。遗憾地发现iTunes在12.7以上的版本都不支持商店这个模块,这就意味着不能在iTunes当中直接下载IPA到本地电脑了。
还好苹果公司之前发布过一款版本号为12.6.3的针对企业用户的iTunes,极大地减轻我们为iTunes甚至macOS降级的负担。我们直接下载好iTunes 12.6.3并覆盖安装即可。
*如果你用的是Mojave及以上版本系统,请参考: macOS Mojave安装iTunes 12.6.x
安装完成后,iTunes 可能会提示资料库由更新版本的 iTunes 创建,因而无法打开。这时,你可以先退出 iTunes,在 ~/Music/iTunes/Previous iTunes Libraries/
目录中选择一个之前的资料库备份,或者直接创建一个新的 iTunes 资料库。
接着登录你的Apple ID,并且切换到「商店」界面备用即可。
-
捷径-查询历史版本号
在App Store下载捷径app(iOS12之前的手机请下载workflow),并安装查询历史版本号的规则。
如何抓取旧版IPA
以上准备工作就绪之后,我们打开Charles,选择其作为系统网络代理。与此同时,请勿随意开启其他网络代理或调试工具以免发生错误。看到侧边栏开始出现网络流量信息时,我们回到iTunes,在商店搜索你想要抓取旧包的app(我们以tg x 5.0.2为例 ),并点击下载。
下载过程中我们回到Charles,会在侧边栏看见p(xx)-buy.itunes.apple.com
这个域名,这就是我们下载IPA安装包的时候需要访问的Doamin。选择之后发现不了我们想要的信息,因为传输过程被https加密了。这时选中这个域名右击,选择「Enable SSL Proxying」,开始https解密。回到iTunes,再次下载该软件。
下载过程中我们再次回到Charles,发现该域名已经可以看到解密之后的内容了,如下图所示,点开WebObjects/MZBuy.woa/wa/buyProduct
,在右侧页面选择XML,即可看见安装包相关信息。下面呈现的是该安装包所有历史版本的版本号码。
通过手机捷径(workflow)查询该软件旧版本的版本号,一定是上图框出的几个之一。查询完毕,右击该域名,选择breakpoint(断点),准备开始抓包。回到iTunes,第三次点击下载。
下载过程中最后一次回到Charles,发现跳出来一个breakpoint的显示界面,点击右侧XML Text,在appExtVrsId
处粘贴刚刚查询到的软件旧版本号。完成之后点击Execute(执行),期间会有多次弹出,均点击Execute。等待片刻即可在~/Music/iTunes/iTunes Media/Mobile Applications
找到下载好的旧版iOS App安装包了。
IPA安装到iPhone上
写到这里我们已经抓到了想要的旧版安装包,本文可以告一段落了。但在和很多人的交流当中我发现「如何将IPA安装到iPhone上」也是不少人遇到的一个难题,啰嗦几句。
几种方法:
- 通过iTunes导入资源库,安装到iPhone
- 通过pp助手等第三方软件
- 将IPA发送到iPhone,下载jsbox软件并添加「安装IPA」脚本
- ……
不再赘述详细过程,相信能够学会抓包这个应该不成问题,打开app后输入自己的AppleID跟密码即可使用。
这篇相当于填了当时surge抓包的坑,同时也发现用surge做网络调试不是wise choice。在Windows上,可以用优秀的Fiddler和Charles来完成抓包,思路与本文一致。
此外,理论上也可以用thor直接在iPhone上面抓包,适用于一些第三方提供的IPA下载和最新版安装包抓取。至于是否支持抓取旧包,我没有验证过。