昨天看了一篇關于iOS 逆向學習的筆記,突然大感興趣,想制作微信分身版,以達到一個手機上可以裝多個微信的目的,昨天折騰了一下午,在博主心董兒的幫助下終于大功告成,實現了微信分身版的制作,感謝心董兒。在此記錄下這無聊的過程。
1.目的
在手機不越獄的情況下,實現一個手機裝多個微信。
2.準備工作
Mac電腦(裝Xcode),PP助手(Mac版),** **ios-app-signer(很好用的簽名工具)
3.開始制作
(1)到PP助手官網下載PP助手(Mac版),下載完成后安裝打開PP助手(不要連接手機),到應用游戲模塊下選擇越獄應用,然后搜索微信(目前最新版本v6.5.8)并下載ipa文件到本地。
(2)加壓縮下載好的微信ipa文件,可以通過命令 "unzip weChat.ipa"
解壓,也可以右鍵選擇打開方式用歸檔實用工具解壓,解壓后可拿到 weChat.app 文件。接下來用命令 "otool -l WeChat.app/WeChat | grep -B 2 crypt"
可以驗證是否已解密。結果如下:
cmd LC_ENCRYPTION_INFO // armv7架構
cmdsize 20
cryptoff 16384
cryptsize 52871168
cryptid 0 // 0代表解密、1代表加密
--
cmd LC_ENCRYPTION_INFO_64 // arm64架構
cmdsize 24
cryptoff 16384
cryptsize 56901632
cryptid 0 // 0代表解密、1代表加密
(3)右鍵weChat.app選擇顯示包內容,找到Watch和Plugins文件夾并刪除。
(4)打開Xcode新建一個空白工程,選擇你的開發者證書(此證書必須和后面進行重新簽名時的一致),并修改工程的Bundle identifier (此ID就是后面你要制作微信分身版的BundleID,必須和后面用到的要一致,否則會安裝失敗),連接手機,然后 command+r 運行一下程序(運行結束后刪除手機里的此APP),在工程目錄Products文件夾下有一個文件wechat2.app(工程名.app),右鍵 Show in Finder,找到文件后右鍵顯示包內容,進去后找到embedded.mobileprovision文件(就是剛剛生成的),復制粘貼到桌面一份和步驟(3)weChat.app的包內一份。
(5)在桌面新建一個Payload文件夾,在文件夾里放入處理好的weChat.app(就是步驟3中的),壓縮Payload文件夾,可用命令 "zip -qry weChat.ipa Payload/"
壓縮,也可手動壓縮后更改后綴為weChat.ipa。
(6)接下來進行重新簽名。下載ios-app-signer(很好用的簽名工具)代碼,并運行,會有如下結果:
點擊 Start 開始重新簽名,并生產新的微信ipa包。
(7)雙擊生成的微信ipa,會自動彈出iTunes,連接手機,點擊手機圖標,選擇應用,點擊安裝,同步,此時電腦上新的微信ipa會安裝到手機,大功告成。
因為更換了Bundle Identifer,所以分身版的微信無法收到推送通知和分享跳轉等。
如果要制作多個,只需要把之前工程中的Bundle Identifer做修改,運行生成embedded.mobileprovision文件,重復以上步驟即可。
4.填坑
折騰了一下午,總結一下遇到的坑,希望能給后面的同學打個預防針。
(1)簽名的時候Bundle Identifer必須和新建工程中的Bundle Identifer一致;
(2)簽名的時候選擇的證書必須和新建工程中的證書一致;
(3)weChat.app包內必須刪除Watch和Plugins文件夾,并添加新建工程中生成的 embedded.mobileprovision 文件。
(4)簽名的時候選擇的 mobileprovision 文件必須和放在weChat.app包內的一致。
(5)以上如果有一個不正確,都會導致安裝失敗。
下面是我制作的3個微信分身,第一個是AppStore下載的,第四個是做了點小改動,把微信的icon更換了。