在仿写一些程序时,避免不了获取它的图片素材等等,那么最快也是最有效的方式就是获取原程序的ipa包。更或者,你想要逆向分析某一款APP时,那么只有获取了ipa后才能进行class-dump,ida等等后续工作。
方法一:使用未越狱的手机获取
在iOS8之前使用iTools等可以直接导出ipa包,但是iOS9之后就不能了。
方法二:通过越狱设备获取
如果有越狱手机,那么就变得很简单,只需要从AppStore下载到越狱手机,然后用iTools/PP助手等工具将ipa包备份到电脑即可。
方法三: 使用 Apple Configurator 2 获取(推荐)
3.1 首先 去Mac上的App Store下载Apple Configurator 2,安装成功后把iphone连接上Mac,点击Apple Configurator。
3.2 菜单中->账户->登陆(用连接设备的Apple ID[如果担心设备数据会丢失,就备份下数据])。
3.3 所有设备->选中当前iPhone->添加应用,找到您想要ipa的那个应用->添加
3.4 添加后会显示正在下载App Store上的应用
3.5 当你的设备上存在这个应用的时候会有如下提示:
这个时候切记:不要点击任何按钮!不要点击任何按钮!不要点击任何按钮!直接进入下一步!
3.6 打开Finder前往文件夹,或者直接快捷键command+shift+G并输入下面路径~/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps/可以看到我们需要的包,这个时候拷贝出来(一定要拷贝出来!一定要拷贝出来!一定要拷贝出来!),然后回到Apple Configurator 2点击【停止】会发现刚才目录下的文件也消失了!
3.7 拿到包后,想怎么搞就怎么搞!
方法四:使用电脑获取(查资料得到,未测试)
此方法只是用来获取企业账号发布的APP。在一些情况下,公司可能发布一款违背苹果审核规则的APP,不能上架AppStore,那么可以使用企业账号发布在自己的网站上,然后通过微信、微博或者扫二维码的方式分发推广应用。
4.1 可以直接将他们推广的网址输进电脑浏览器,这是会获得plist文件,或者浏览器提示无法打开并给出itms-services:///?action=download-manifest&url=...一大串提醒。
如果是plist文件,那么用Xcode打开plist文件,将下图中红色框住的部分即是ipa的下载路径,复制后直接用浏览器打开即可。
如果是一串itms-services:///?action=download-manifest&url=...这样的提醒(用Safari打开会这样),那么“url=“后面的链接直接就是ipa包的下载地址,同样是复制用浏览器打开即可。
4.2 现在程序的保护意识都加强了,可能服务器会判断你的设备如果不是手机则拒绝下载,直接返回失败,那么这种情况,可以将MAC下的浏览器通过修改userAgent伪装成手机的Safari浏览器。下面以火狐浏览器为例:
4.2.1 首先打开Firefox在地址栏输入:about:config,这时会有提醒,直接点击I promise!即可
4.2.2 在搜索里面搜索:general.useragent.override,第一次是搜索不到的,然后再空白区域右击->New->String
4.2.3 在弹出的框里面输入general.useragent.override->OK
4.2.4 再在弹出的框中输入具体的值,比如:iPhone6,iPhone5s,iPhone4s(目前我只有这三款手机,欢迎添加,获取方法见下面代码)。
iPhone6,iOS9.0.2:Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A452
iPhone5s,iOS9.0.2:Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A452
iPhone4s,iOS7.1.1:Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201
如果上面三款不符合你的要求,下面贴上获取手机userAgent的代码,可以根据需要来获取自己需要的,注意:要真机调试:
- (void)viewDidLoad {
[super viewDidLoad];
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"--%@--",userAgent);
}
4.2.5 最后,关闭浏览器再次打开进行1的操作。企业账号发布的应用都是没有加密的,直接使用class-dump,ida/Hopper Disassembler分析即可,当然图片素材也是可以获得的。