从iTunes获取老版本ipa包(以facebook为例)

        刚开始搞ios逆向分析的时候想找一个合适的测试机也是挺麻烦的,新买的设备不能越狱还贵,二手的设备一般又没有还原锁密码,后来终于从箱底找到了个iphone5,但是版本太老了,从appstore里安装的应用都提示不兼容“Download an older version of this app? The current version requires IOS 9.0 or later ...”,又不敢轻易升级,担心跟上一块从二手店里买的6s一样变砖(刷机后需要激活锁密码)。

        后来查到可以在iTunes下载时抓包分析改下参数就可以从iTunes里下载到老版本的ipa文件,于是自己尝试了一下,好了,废话连篇。

        1. mac安装Charles,并安装根证书授权,mac版和win不太一样的地方就是需要去“钥匙串访问”里授权。

安装根证书

    2. 打开iTunes,去“appStore”里面搜索要下载的应用(以“facebook”为例),并点击下载,这时可以在Charles里看到类似 “https://p25-buy.itunes.apple.com” 的请求,然后对该请求下断点,同时因为这是条https请求,所以要将链接复制加入“SSL Proxying Setting”中。

点击下载目标应用的当前版本
类似图中的请求网址

        3.等待应用下载完成后去iTunes的“资料库”中找到下载完成的应用,右键目标选择“在finder中显示”,然后在finder中将文件彻底删除,最后再次回到iTunes的appStore中搜索该应用再次下载该应用,此时会在第二步中下的端点处停下,第一次停下是发出Request请求,点击“Execute”,第二次停下是收到了Response回应,第二次停下时点击“Edit Response”,选择“XML Text”选项,可以看到如下内容,并保存下来。

```

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<plist version="1.0">

<dict>

    ... ...

    ... ...

<key>softwareVersionBundleId</key><string>com.facebook.Facebook</string>

  <key>softwareVersionExternalIdentifier</key><integer>830380613</integer>

  <key>softwareVersionExternalIdentifiers</key>

  <array>

    <integer>18372</integer>

    ... ...

    ... ...

    <integer>2927134</integer>

    <integer>2994689</integer>

    <integer>3110723</integer>

    <integer>3127322</integer>

    <integer>3151184</integer>

    <integer>3248735</integer>

    <integer>3539776</integer>

    <integer>3611071</integer>

    <integer>3680022</integer>

    <integer>3759852</integer>

    <integer>3926286</integer>

    <integer>4095539</integer>

    <integer>4153214</integer>

    <integer>4429604</integer>

    <integer>4438870</integer>

    <integer>4827909</integer>

    <integer>5507927</integer>

    <integer>5880588</integer>

    <integer>9138323</integer>

    <integer>10528067</integer>

    <integer>11444640</integer>

    <integer>11983243</integer>

    <integer>12152835</integer>

    <integer>12235437</integer>

    <integer>12795110</integer>

    <integer>13558845</integer>

    <integer>13840059</integer>

    <integer>13875036</integer>

    <integer>14115688</integer>

    <integer>14701724</integer>

    <integer>15051581</integer>

    <integer>15095799</integer>

    ... ...

    ... ...

</array>

  <key>vendorId</key><integer>10684</integer>

<key>hasFamily</key><false/>

</dict>

</dict>

</dict>

</plist>

```

softwareVersionBundleId:    当前下载应用的Bundle ID;

softwareVersionExternalIdentifier:    值为“ 830380613”,与下面array中的数字一样表示版本序号。

        4.如要下载版本序号为“ 14115688”的ipa文件,可以删掉下载的文件,再次点击下载应用,在发出Request请求时触发断点,点击“Edit Request”中的“XML Text”,其中的“appExtVrsId”的值就是当前正要请求下载的版本号,将之修改为我们想要的版本号,这里输入“ 14115688”,点击继续,等待下载完成即可得到目标ipa。【tip:下载即将结束时断点也会断下来,注意一下点击“Execute”即可】。

        5.这里的“830380613”、“14115688”是和对应facebook210.0、Facebook197.0是相互对应的,这个也是可以查询到的:

      在iTunes中查询应用时,单击目标应用下拉菜单,选择“复制链接”,

例如,facebook的链接是“https://itunes.apple.com/us/app/facebook/id284882215?mt=8”,提取其中的ID“ 284882215”,然后访问“https://api.unlimapps.com/v1/apple_apps/284882215/versions”,其中的“284882215”是我们替换掉的上面的ID,访问结果:

对比其中的版本号和ID即可选择我们想要的id。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。