本文我們將重簽名一個(gè)App,實(shí)現(xiàn)將他人的App安裝到自己手機(jī)上,然后進(jìn)行部分的調(diào)試工作。
需要準(zhǔn)備的資料:
1、安裝PP助手Mac版本。
2、一臺(tái)iPhone手機(jī)。
3、Xcode工具。
1、拔掉連接在電腦上的手機(jī),打開(kāi)PP助手,下載微信越獄包。

2、等到下載完成我們到下載的位置會(huì)看到一個(gè)類(lèi)似于微信-7.0.5(越獄應(yīng)用).ipa的包。
3、右鍵打開(kāi)下載好的微信-7.0.5(越獄應(yīng)用).ipa包,如果您的系統(tǒng)為macOS Catalina(10.15)版本可能會(huì)無(wú)法打開(kāi),我們可以打開(kāi)終端,實(shí)用unzip解壓,然后就能看到微信的包了。


3.1、然后我們查看WeChat包內(nèi)容,查看是否有WeChat可執(zhí)行文件。

3.2、由于后續(xù)我們要對(duì)微信的包進(jìn)行重簽名,但是插件以及Watch的包我們是無(wú)法進(jìn)行重簽名的,所以我們先刪除了插件以及Watch


將這兩個(gè)文件刪除。
4、查看一下證書(shū)是否生成成功,個(gè)人證書(shū)就夠用了(我這是最新版的Xcode 11.1,可能界面會(huì)有所差異)。

5、電腦連接上真機(jī),選擇真機(jī),然后將項(xiàng)目運(yùn)行到真機(jī)上面(這一步是為了先將我們的證書(shū)放到真機(jī)上面,為后續(xù)的安裝微信做準(zhǔn)備)。

如果您是最新版的Xcode(但是手機(jī)卻不是iOS 13),運(yùn)行到手機(jī)上可能會(huì)黑屏,這是由于SceneDelegate導(dǎo)致的,這里提供一個(gè)解決辦法,在AppDelegate頭文件里面添加一個(gè)window即可。

6、查看一下自己運(yùn)行后的包內(nèi)容,打開(kāi)終端,cd到包的路徑。



然后我們?cè)俅未_認(rèn)一下證書(shū),查看下電腦上我們所有的支持的證書(shū)

確實(shí)是有我們所想的證書(shū),復(fù)制一下這個(gè)證書(shū)放到備忘錄或者其他地方備用(后續(xù)簽名要用,避免麻煩)。
7、對(duì)Frameworks里面的庫(kù)進(jìn)行重簽名
7.1、打開(kāi)WeChat的包,找到里面的Frameworks,使用終端cd到這個(gè)目錄,我們看到它有這些framework。

7.2、對(duì)framework一個(gè)個(gè)的重簽名
重復(fù)調(diào)用Codesign –fs “證書(shū)串” ?文件名,對(duì)Framework一個(gè)個(gè)的進(jìn)行重簽名(后期會(huì)通過(guò)shell腳本做)。

8、對(duì)WeChat文件添加可執(zhí)行權(quán)限(一般會(huì)有可執(zhí)行權(quán)限,加一下保險(xiǎn))。
cd 到上一個(gè)目錄,然后使用chmod +x 為WeChat添加執(zhí)行權(quán)限

9、微信包里面是沒(méi)有描述文件的,我們需要將我們自己寫(xiě)的工程的描述文件添加到微信包里面,使iPhone認(rèn)為微信是我們自己開(kāi)發(fā)的App,按照第七步找到我們的App包,顯示包內(nèi)容,將下圖的文件復(fù)制到微信的包里面。


10、修改微信的BundleID
找到微信包里的info文件,修改BundleID為我們自己工程的BundleID。

11、查看一下我們剛剛得到那個(gè)描述文件


????????我們找到查看后的這一部分,其中的dict內(nèi)容是我們要用于對(duì)app重簽名使用的東西,復(fù)制一份備用。
????????在Xcode中創(chuàng)建一個(gè)plist文件,隨便起個(gè)名字就好,右鍵Open As -> Source Code,然后將上面的內(nèi)容復(fù)制進(jìn)去。


不要復(fù)制多了。
11.2、最好將微信的包和上面生成的文件放到一個(gè)目錄里面,方便后續(xù)操作。

然后對(duì)微信的包進(jìn)行重簽名:
codesign -fs “證書(shū)串” --no-strict --entitlements=權(quán)限文件.plist APP包

12、將微信包安裝到手機(jī)上


將處理好的微信包拖到上圖2的位置,過(guò)一會(huì)就會(huì)提示是否替換原來(lái)的app,選擇替換,手機(jī)上就會(huì)顯示出來(lái)安裝好的微信了。

信用一下證書(shū),我們就可以正常打開(kāi)我們自己安裝的微信了。
13、選擇debug依附調(diào)試安裝的微信

最終結(jié)果圖示

其中我們可以看到按鈕的Anction,后續(xù)就可以通過(guò)hook技術(shù)對(duì)注冊(cè)或者其他的部分做自己想做的事了。
補(bǔ)充說(shuō)明:
其中的Action為一個(gè)字典,這是Xcode11之后的變更,po地址,然后再po字典的value就好了。

總結(jié)
? ? ? ? 整個(gè)篇幅下來(lái)實(shí)際上感覺(jué)還是比較麻煩,有個(gè)小細(xì)節(jié)出錯(cuò)可能會(huì)導(dǎo)致不能重簽名不成功,還有兩種相對(duì)簡(jiǎn)單的方式去去除一些比較麻煩的操作,一個(gè)是shell腳本,一個(gè)是直接替換,后續(xù)再更新