iOS逆向-ipa包重簽名及非越獄手機安裝多個微信

原文鏈接:https://www.jianshu.com/p/25e1f44c90f7

轉發:https://www.jianshu.com/p/25e1f44c90f7

 

 

 

前一段時間學了點兒逆向相關的一些東西,但是都是基於越獄手機上的操作,給視頻類應用去廣告之類的。隨着蘋果生態圈的逐漸完善、及蘋果對自身系統的保護越來越嚴格,導致現在的iPhone手機並不像以前那樣存在大量的越獄用戶。

前段時間我自己申請了個微信小號,申請小號的目的就是原來微信號好友中亂七八糟的人實在太多,感覺自己的朋友圈都是一些無關緊要的垃圾信息,曾經關閉了一段時間的朋友圈,但是最近遇到了好多技術上很強的同行,還想了解大佬們的動態。於是我就想着申請了個小號,但是麻煩來了,iPhone手機並不像安卓手機那樣存在着微信多開之類的應用,將自己手機越獄吧成本太高,於是就想着通過技術手段安裝多個微信,下面步入正題:

爲什麼要重簽名

其實我們平時開發的App,程序運行主要就是加載一個Mach-o可執行文件。當我們將程序打包成ipa文件,上傳到App Store的時候,期間就是進行了一些加殼操作,比如:數字證書籤名等。重簽名的目的就是將別人的程序重新簽上我們的證書信息。也可以簡單理解爲將別人的加密文件解密,加上我們自己的加密算法。

逆向當中的一些專業術語

  • 加殼:利用特殊算法(iOS中數字證書),對可執行文件的編碼進行改變,以達到保護程序代碼的目的
  • 脫殼:摘掉殼程序,將未加密的可執行文件Mach-o還原出來

查看應用是否加殼

將下載好的ipa包解壓縮之後,拿到裏面的Mach-o文件,cd到所在目錄,執行如下命令:

otool -l 可執行文件路徑 | grep crypt

image

其中cryptid代表是否加殼,1代表加殼,0代表已脫殼。我們發現打印了兩遍,其實代表着該可執行文件支持兩種架構armv7arm64.

查看應用支持哪種架構

終端下執行如下命令查看架構信息

lipo -info 文件路徑

image

除了查看架構信息,還可以利用該指令導出某種特定架構、合併多種架構:

  • 導出特定架構
lipo 文件路徑 -thin 架構類型 -output 輸出文件路徑
  • 合併多種架構
lipo 文件路徑1 文件路徑2 -output 輸出文件路徑

怎麼給應用脫殼

給應用脫殼有兩種途徑:

  • 一、直接從一些第三方應用商店裏面下載你想脫殼的應用,例如:PP助手iTools
  • 二、自己脫殼,利用GitHub上開源的一些工具,常用的有Clutchdumdecrypted。具體如何使用,請自行Google
  •  

前期準備工作:

  • 一臺iPhone,越不越獄都行
  • 開發者證書或者企業證書(個人賬號也行,但是應用安裝上之後,有效期只有7天)
  • 電腦安裝 iOS App Signer

其實重簽名的方式有很多,比如:可以利用sigh resign命令,在終端下操作,還可以藉助一些逆向相關的重簽名工具,本文采用iOS App Signer

瞭解以上基本概念之後,下面正式開始史上最詳細的重簽名過程,以微信爲例:

第一步:準備好脫殼後的微信App

我是直接從PP助手上下載的,感興趣的可以自己手動脫殼

CC5D0564776F714701F45AE5846D3464

第二步:將對用的ipa文件解壓,修改一些東西

注意:個人證書不能重籤Extension文件,所以要刪除ipa包中包含的相應文件,包括Watch裏面的Extension,爲了方便一般直接將Watch文件刪除:

C00C57F8EB9509B60FDCD8006DF3E719

34293DFAD48B9B855A066721DC0D358B

第三步:利用iOS App Signer給微信重簽名

D063FFD5907B3090DE0494AF05978BDB

  • 第一項:對應的.ipa或者.app路徑
  • 第二項:我們自己的簽名證書
  • 第三項:證書對應的Profile文件,默認項Re-Sign Only是無效的,選擇證書下存在的Profile文件)
  • 第四項:重簽名之後的Bundle identifier(選擇了Profile文件,一般會自動填寫)
  • 下面幾項可以隨便寫

25441B7BB39F6BADE92ECA6187C0F6AA

簽名完畢之後對應的文件夾下會生成重簽名之後的ipa

F2804E382DD16002B001BAA1F927AA3

注意:利用iOS App Signer重簽名,在刪除掉相應的Extension,選擇路徑的時候,一定要選擇Payload文件夾下對應的.app文件,否則會報找不到Payload文件夾的錯誤:

4C2E14FA5CA3D81E4BEC2F44D9D93647

安裝重簽名之後的微信

可以用PP助手安裝,也可以用Xcode安裝,我採用Xocde安裝:

install-wechat

不出意外地話,第二個微信就成功的安裝到了你的手機上。如果裝不上的話,基本上大部分原因就是證書不對。。。

最終效果

多個證書可以多次重新簽名,安裝多個相同的應用

wechat_hook_01

wechat_hook_02

這篇文章圖有點兒多。。。。。

注意:重簽名方式安裝的微信,是對微信APP的一種破解,會被官方認定爲非安全軟件,有被封號的危險。但是這種方式對破解各種其他軟件都是有用的,利用逆向相關的知識,我們可以利用這種知識做很多我們想做的事兒!!!(不要做非法的事情哈!)

遇到的坑

  • 錯誤一:

     

    988D211E9B6C6BEF7659DAA8854AAFBD

解決辦法:證書不對,仔細檢查下證書

  • 錯誤二

     

    BD2A4E9CB954AB66E6598ED5CCA85F8B

解決辦法:刪除ipa包裏面的watch相關的文件

總結

過程其實很簡單,我始終認爲藉助一些工具能完成的東西,都是很簡單的,因爲不需要敲代碼。總算給自己iPhone裝上了多個微信,原來還打算買個安卓手機呢,哈哈,給自己省了一大筆錢。。。

 



作者:czj_warrior
鏈接:https://www.jianshu.com/p/25e1f44c90f7
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章