逆向AppAdmin遇到瓶颈,求天赐高人指点!

AppAdmin可以实现从苹果商店下载"旧"版本的App,好奇心害死猫,所以有了下面这个讨论。

很简单。代码没有看过。个人这方面的知识如下:smile:

Apple 服务器有老版本的ipa
Apple返回一个plist里带有该app的各个版本的一个类似编号一样的东西。

拼接完整地址,构造请求,没了

细节我这没可执行文件没的分析

感谢楼上的回复,的确大致的逻辑是这样的,点击获取会弹出一个AlertSheet,有三个选项分别是continue, downgrade和cancel, continue就是正常AppStore下载,downgrade就会present一个新的ViewController,然后列出历史版本。

我先抓了包,先是发现了一个目标地址是https://api.unlimapps.com/v1/apple_apps/XXXX/versions的包,推测是获取历史版本信息的,果然用浏览器访问得到如下返回值:

[{"apple_app_id":"dd1e3955-09cd-4b69-b88f-3978cc0300f0","id":"8daca427-8971-40c1-a1a5-d158396c3644","bundle_version":"5.8.1","external_identifier":"813192464","created_at":"2016-03-23T12:56:55.365Z","updated_at":"2016-03-23T12:56:55.365Z"}]

然后IDA定位到这个地址位于一个叫做getLatestVersions的函数当中,有戏!然后顺藤摸瓜,搜索一下哪里调用了getLatestVersions这个函数,就是那个列出所有历史版本的ViewController。

这个视图控制器中包含一个TableView,当触发_tableView_didSelectRowAtIndexPath_时,会去下载指定版本的App,所以仔细看下

从汇编上看,似乎versions是一个数据源,然后通过row得到对应的external_identifier,然后就调用dismissWithVersionIdentifier,跳进去看看:

除了一个叫completion的函数没什么特别的,而且从名字上看好像dismiss带着VersionIdentifier的意思,再看看completion,也没什么特别的。

结果线索就断了,正如楼上所说,我需要的是从哪里开始拼接字符串的,难道说是dimiss之后,AppStore的那个界面检测到这个视图控制器dismiss了,然后开始自动下载了?说不通啊,也没看见有Notification消息发送的字样,所以,大神们,我应该怎么办呢?

注意0x7B9A处的这个BLX R2,是个书上特别提过的隐式调用。动态跟一下,看看执行的是哪里的代码