轉發: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
代表已脫殼。我們發現打印了兩遍,其實代表着該可執行文件支持兩種架構armv7
和arm64
.
查看應用支持哪種架構
終端下執行如下命令查看架構信息
lipo -info 文件路徑
image
除了查看架構信息,還可以利用該指令導出某種特定架構、合併多種架構:
- 導出特定架構
lipo 文件路徑 -thin 架構類型 -output 輸出文件路徑
- 合併多種架構
lipo 文件路徑1 文件路徑2 -output 輸出文件路徑
怎麼給應用脫殼
給應用脫殼有兩種途徑:
- 一、直接從一些第三方應用商店裏面下載你想脫殼的應用,例如:
PP助手
、iTools
等 - 二、自己脫殼,利用
GitHub
上開源的一些工具,常用的有Clutch、dumdecrypted。具體如何使用,請自行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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。