iOS獲取.ipa程序包
首先肯定不是獲取自己的ipa包。
為什么要獲取ipa包呢?比如,在仿寫一些程序時,避免不了獲取它的圖片素材等等,那么最快也是最有效的方式就是獲取原程序的ipa包。更或者,你想要逆向分析某一款APP時,那么只有獲取了ipa后才能進行class-dump,ida等等后續工作。
一、通過越獄設備
如果有越獄手機,那么就變得很簡單,只需要從AppStore下載到越獄手機,然后用iTools/PP助手等工具將ipa包備份到電腦即可,下圖是使用PP助手:
如果只是為了獲取圖片素材,那么獲取到ipa包解壓后,顯示包內容即可。但是如果想進一步進行逆向分析,還需要使用Clutch等工具進行砸殼,因為從AppStore下載的程序都是加過密的,至於砸殼不再詳述。
二、使用未越獄的手機
在iOS8之前使用iTools等可以直接導出ipa包,但是iOS9之后就不能。(我用的是MAC系統,如果大家可以的,還煩請告訴我一聲,在次謝謝)。
三、使用電腦
此方法只是用來獲取企業賬號發布的APP。在一些情況下,公司可能發布一款違背蘋果審核規則的APP,不能上架AppStore,那么可以使用企業賬號發布在自己的網站上,然后通過微信、微博或者掃二維碼的方式分發推廣應用。
1 我們就可以直接將他們推廣的網址輸進電腦瀏覽器,這是會獲得plist文件,或者瀏覽器提示無法打開並給出itms-services:///?action=download-manifest&url=...一大串提醒。
如果是plist文件,那么用Xcode打開plist文件,將下圖中紅色框住的部分即是ipa的下載路徑,復制后直接用瀏覽器打開即可。
如果是一串itms-services:///?action=download-manifest&url=...這樣的提醒(用Safari打開會這樣),那么“url=“后面的鏈接直接就是ipa包的下載地址,同樣是復制用瀏覽器打開即可。
2 現在程序的保護意識都加強了,可能服務器會判斷你的設備如果不是手機則拒絕下載,直接返回失敗,那么這種情況,可以將MAC下的瀏覽器通過修改userAgent偽裝成手機的Safari瀏覽器。下面以火狐瀏覽器為例:
A)首先打開Firefox在地址欄輸入:about:config,這時會有提醒,直接點擊I promise!即可
B)在搜索里面搜索:general.useragent.override,第一次是搜索不到的,然后再空白區域右擊->New->String
C)在彈出的框里面輸入general.useragent.override->OK
D)再在彈出的框中輸入具體的值,比如: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); }
最后,關閉瀏覽器再次打開進行1的操作。企業賬號發布的應用都是沒有加密的,直接使用class-dump,ida/Hopper Disassembler分析即可,當然圖片素材也是可以獲得的。
綜上,通過越獄手機不僅可以獲得AppStore上的APP,更可以獲得企業賬號發布的APP,如果是AppStore上的APP且想進行逆向分析,還需要使用clutch工具進行砸殼。如果沒有越獄手機,可以通過瀏覽器獲取企業賬號發布的APP,有可能需要偽裝成手機瀏覽器,其實如果對方服務器添加了簽名驗證,那么即便是偽裝成手機瀏覽器也不能獲取了,所以,如果自己在發布企業app時,如果不想被破解,最后使用簽名驗證的方式。