引言
在工作之余,有人問想要安裝多個某信、其他App 怎么辦?
這個時候我的思想是:我湊 這都找我
不假思索的說:“越獄啊”
某人:“不想越獄”
“不想越獄你還想裝多個App?”
某人:“是的”
“額,你想干嘛?”(其實心里沒底,我也不清楚,但是裝逼還是要全套的)
某人:“我業務多,比方說某信賬號工作的時候一個、生活一個、玩有一個、行業交流有一個、還有一些其他賬號”
....
不要爬來來來正題
正文
根據上一篇文章探究IPhone怎么驗證App合法、開發怎么驗證? , 自己重新簽名App達到安裝多個同樣的App的目的,因為在IPhone中Bundle identifier這個標示(appleid)決定了你的app的標示唯一,so修改Bundle identifier重新將App打包成Bundle identifier、證書等就可以實現App多個安裝,實際上是騙過Apple,這個不再是一樣的app,目的達到 實現多開。
手動簽名的方式
準備操作
- 準備需要多開的應用的ipa包(越獄包)、并解壓文件
- 需要一個開發者賬號、或者自己注冊的私人的可申請開發證書的賬號
-
codesign
重簽名,以及查看簽名信息的工具
分析包文件
一、查看App的簽名的信息:
codesign -vv -d 路徑/WeChat.app
-
進入ipa包解壓后的文件夾,查看簽名信息:
然后我們發現是沒有簽名信息的,簽名信息是被破壞的、砸過殼的,在Iphone上面是不讓安裝的用Xcode安裝是安裝不了的。
-
查看正版應用的簽名信息:
正版的是有簽名信息,只有這個簽名信息的時候才能安裝,我們如果需要重新簽名需要證書進行簽名
二、列出我們所有的證書
security find-identity -v -p codesigning
- 上述是存在的幾個證書,只要是能夠開發的證書都是可以用的。
如果,Xcode選中的證書能夠把demo安裝到iphone上面,那么這個證書就能夠讓我們重新簽名
三、越獄的App與正版的App有什么區別?
otool -l WeChat | grep crypt
- 通過
otool
工具來查看可執行文件的加密信息-
越獄版的加密信息:
加密的信息是0
-
正式版的加密信息:
加密的信息是1
-
手動重簽名操作
一、目標文件
我們將要對WeChat進行重簽名:
-
我們個人免費證書沒法對Plugins里面的內容進行重簽名,所以只能干掉
干掉Plugins文件里面的內容
- watch文件干掉(因為里面也有Plugins,并且我們對于這個App也沒用)
- 對Frameworks里面的動態庫
- 通過下面命令進行依次簽名
codesign -fs "你的證書" 簽名的文件
- 給可執行文件可執行的權限,在App中可以看到WeChat是白色的不可執行
chmod +x WeChat
- 新建一個項目,build拿到release版本的App中的
embedded.mobileprovision
文件直接拷貝到我們剛才修改的越獄包里面 - 修改Info.plist中的Bundle identifier!越獄App的替換成新建項目的!
- 在越獄App中查看復制過去的
embedded.mobileprovision
的權限
security cms -D -i embedded.mobileprovision
將權限copy出來生成一個plist文件
- 簽名整個App
codesign -fs "證書" --no-strict --entitlements=權限文件plist 你的應用.app
二用Xcode安裝簽名后的App
步驟
- 打包ipa 在*.app文件夾下
zip -ry WeChat.ipa Payload
-
Xcode command + shift + 2
找到我們的真機設備