探索未知,记录点滴

利用Charles抓取旧版 iOS App

Spread the love

很多人说iOS过于封闭,比如不能像安卓手机一样自由轻易地升级降级app,有些软件一旦升级上去,发现踩了坑想要降级回来却无路可走。其实和安卓的apk一样,iOS也有其自身的软件安装包—IPA(iPhoneApplication)。只要我们能够获取这个app对应的旧版IPA,就可以用itunes等方式将其安装到我们的iPhone上面。

本期我们就以Mac环境下的Charles网络调试软件为工具,以大家喜闻乐见的tg x 5.0.2版本app为例,详细讲述如何通过抓包的方式来获取旧版iOS App~

tg交流群:Newlearnerの水群

《利用Charles抓取旧版 iOS App》

准备工作

Mac一台

Charles网络调试软件

iTunes 12.6.3

Workflow(捷径)软件

pp助手/Jsbox软件

  • Charles的安装

官网:Charles Web Debugging Proxy

有人问为什么不即刻使用优秀的surge来抓包,我只能很遗憾的告诉你这个“网络调试工具”不支持breakpoint。下载好Charles之后我们开始安装,因为要涉及https解密(中间人攻击),所以安装好之后我们还要在Mac上安装一个证书并且信任之。

《利用Charles抓取旧版 iOS App》

《利用Charles抓取旧版 iOS App》

根据上图安装证书,若出现不能修改「“system roots”钥匙串」的提示,那么我们需要手动安装该证书。

《利用Charles抓取旧版 iOS App》

回到刚刚点击install certificate的地方,转而点击Save Charles Root Certificate,会自动下载证书到本地。得到证书文件之后手动拖入「钥匙串」—「系统」—「证书」一栏当中并安装之。最后双击打开该证书添加”始终信任“的权限即可。

《利用Charles抓取旧版 iOS App》

《利用Charles抓取旧版 iOS App》

  • 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并覆盖安装即可。

点此下载 iTunes 12.6.3 dmg

*如果你用的是Mojave及以上版本系统,请参考: macOS Mojave安装iTunes 12.6.x

《利用Charles抓取旧版 iOS App》

安装完成后,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抓取旧版 iOS App》

下载过程中我们回到Charles,会在侧边栏看见p(xx)-buy.itunes.apple.com这个域名,这就是我们下载IPA安装包的时候需要访问的Doamin。选择之后发现不了我们想要的信息,因为传输过程被https加密了。这时选中这个域名右击,选择「Enable SSL Proxying」,开始https解密。回到iTunes,再次下载该软件。

《利用Charles抓取旧版 iOS App》

下载过程中我们再次回到Charles,发现该域名已经可以看到解密之后的内容了,如下图所示,点开WebObjects/MZBuy.woa/wa/buyProduct,在右侧页面选择XML,即可看见安装包相关信息。下面呈现的是该安装包所有历史版本的版本号码。

《利用Charles抓取旧版 iOS App》

通过手机捷径(workflow)查询该软件旧版本的版本号,一定是上图框出的几个之一。查询完毕,右击该域名,选择breakpoint(断点),准备开始抓包。回到iTunes,第三次点击下载。

《利用Charles抓取旧版 iOS App》

下载过程中最后一次回到Charles,发现跳出来一个breakpoint的显示界面,点击右侧XML Text,在appExtVrsId处粘贴刚刚查询到的软件旧版本号。完成之后点击Execute(执行),期间会有多次弹出,均点击Execute。等待片刻即可在~/Music/iTunes/iTunes Media/Mobile Applications找到下载好的旧版iOS App安装包了。

《利用Charles抓取旧版 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下载和最新版安装包抓取。至于是否支持抓取旧包,我没有验证过。

 

参考文章:悄悄发布的 iTunes 12.6.3,让你在电脑上管理 iOS 11 设备的 App

                  Charles 从入门到精通

发表评论

邮箱地址不会被公开。 必填项已用*标注

Recommended
内网穿透运用十分广泛…