iOS逆向之手動重簽名App
准備工作
- 非越獄的iPhone手機
- 用PP助手下載: 微信6.6.5(越獄應用)
步驟
-
解壓微信-6.6.5(越獄應用).ipa,直接用系統的解壓工具就可以,ipa實際上就是zip包;
-
找到Payload文件夾下的Wechat.app
-
在終端中查看微信6.6.5(越獄應用)的簽名信息
$codesign -vv -d WeChat.app

看圖中紅框之中的信息,可以知道該應用是沒有簽名信息的,用Xcode是安裝不了的。 -
查看本機所有證書(重簽名要用到)
$security find-identity -v -p codesigning

-
查看可執行文件的加密信息,在WeChat.app顯示包內容的路徑下使用終端,可以看到越獄應用是沒有加密的(cypptid 0)
$otool -l WeChat | grep crypt

6.對微信6.6.5(越獄應用)進行簽名
微信需要注意的地方: WeChat.app文件夾內Plugins文件夾里的文件簽名不了,直接刪除,Watch文件也一樣不能簽名,直接刪除
以上是微信需要注意的地方,其他app可能有這些文件夾也可能沒有,有的話也需要刪除
重簽名:
- 干掉插件Plugins文件夾里面的內容
- Watch 直接干掉
- 對 Frameworks 進行簽名(每個framework都要簽名)
$codesign -fs "iPhone Developer: WinJayQ (6ZBFDG73L)" mars.framework
$codesign -fs "證書" 需要簽名的文件
iPhone Developer: WinJayQ (6ZBFDG73L)是你的開發證書
- 給可執行文件執行權限: chmod +x WeChat
- 拷貝描述文件
怎么獲取描述文件
新建一個工程001--Demo,選擇開發者賬號,選擇真機,編譯成功,然后在001--Demo.app右擊show in finder
顯示包內容
可以看到embedded.mobileprovision描述文件,將此描述文件拷貝到WeChat.app文件夾中
- 修改info.plist 的Bundle ID
將001--Demo的Bundle ID拷貝過來,替換info.plist的com.tencent.xin
- 生成plist的權限文件
在WeChat.app文件夾下,已經有了描述文件,查看並找到權限信息:
security cms -D -i embedded.mobileprovision
上圖就是權限信息,將其拷貝,生成一個plist文件,隨便取名,比如en.plist,將en.plist文件放入與WeChat.app同級的目錄下
- 簽名整個APP(cd到WeChat.app上一級目錄Payload)
$codesign -fs "iPhone Developer: WinJayQ (6ZBFDG73L)" --no-strict --entitlements=en.plist WeChat.app
en.plist就是權限文件 - 簽名成功后,就可以打包為WeChat.ipa(其實就是一個zip)
$zip -ry WeChat.ipa Payload - 通過Xcode->Window->Devices and Simulators就可以安裝了。
至此,你的手機就安裝好重簽名之后的微信,加上正版的微信,你的手機上就有兩個微信了。同理,安裝7,8個微信都不在話下。





