標籤:
原文在此
首先肯定不是擷取自己的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瀏覽器。下面以Firefox瀏覽器為例:
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時,如果不想被破解,最後使用簽名驗證的方式。
iOS擷取.ipa程式包