可能很多人見(jiàn)過(guò)別人安裝多個(gè)微信在手機(jī)中,想知道是怎么回事兒,這篇文章就將告訴你。
因?yàn)樘O(píng)果需要對(duì)App的安裝和使用進(jìn)行控制,蘋(píng)果服務(wù)器對(duì)App加了簽名驗(yàn)證,所以不能像安卓那樣隨便來(lái)個(gè)包就安裝到手機(jī)上。
蘋(píng)果的簽名是我們前幾篇文章中介紹到的RSA完成的,想要破解是肯定不行的,我們想要安裝只能不使用它的簽名,使用自己的簽名,這就是重簽名。
先行都是獲取IPA
我們這里以重簽微信為例,首先需要獲取微信的IPA,有三種方式:
- pp助手(或者別的助手)中下載,這是已經(jīng)砸殼的包,可以直接使用;
- 越獄手機(jī)中直接copy,當(dāng)時(shí)是copy非正版的包;
- iTunes 12.6.3 中下載官方的IPA,但是需要砸殼,網(wǎng)絡(luò)上有砸殼工具。
為搞明白重簽名的原理,我們先進(jìn)行手動(dòng)簽名。
手動(dòng)簽名
手動(dòng)簽名比較復(fù)雜,我們真正開(kāi)發(fā)中是用的很少的,但是有助于明白其中的原理。如果你在按照步驟操作的過(guò)程中出現(xiàn)了一些不明所以的問(wèn)題,不用著急,明白步驟就行,主要看下面的利用Xcode重簽和shell腳本重簽。
拿到已經(jīng)砸殼的IPA過(guò)后,解壓縮,顯示包內(nèi)容,對(duì)其中的文件按照這個(gè)步驟進(jìn)行操作。
第一步、刪除不能進(jìn)行簽名的部分,有PlugIns的文件夾。
Watch文件文件夾中也包含可執(zhí)行文件,需要?jiǎng)h除。
第二步、簽名frame。需要將framework一個(gè)一個(gè)的進(jìn)行簽名。
這里介紹一個(gè)命令,方便你可以列出可以進(jìn)行簽名的證書(shū),命令:$security find-identity -v -p codesigning 。
簽名命令:$Codesign –fs “證書(shū)串” 文件名 強(qiáng)制替換簽名。
第三步、替換描述文件
1、新建一個(gè)工程,運(yùn)行一下,從Products中ShowInFinder,顯示包內(nèi)容,拿到描述文件。
2、將描述文件copy到微信的包中去。
3、修改微信in中的bundleID為描述文件中的bundleID。
4、這個(gè)命令可以查看描述文件信息:$security cms -D -i .. 。
5、將描述文件中的entitlements中的這部分內(nèi)容copy出來(lái),重現(xiàn)創(chuàng)建一個(gè)plist文件。
6、將這個(gè)創(chuàng)建好的plist文件放在已經(jīng)修改過(guò)的微信IPA同級(jí)目錄中。
第四步、簽名這個(gè)App。
命令: $codesign -fs “證書(shū)串” --no-strict --entitlements=權(quán)限文件.plist APP包 。
第五步、打包。
命令:$Zip –ry 輸出文件 輸入文件 將輸入文件壓縮為輸出文件
第六步、通過(guò)Xcode安裝IPA,運(yùn)行即可。
Xcode簽名
手動(dòng)簽名實(shí)在繁瑣,而且需要處理的細(xì)節(jié)部分太多,明白了其中的過(guò)程,讓我們還是通過(guò)Xcode來(lái)完成吧。Xcode會(huì)幫我們完成對(duì)于App的簽名,但是其中對(duì)于Framework的簽名和bundleID的修改還是需要自己完成的。
通過(guò)Xcode建一個(gè)同名工程后。
第一步、仍然是把應(yīng)該刪除的內(nèi)容先刪除掉。
第二步、更改In中的bundleID。
第三步、替換我們的同名成功App包。
第四步、第一次安裝需要信任簽名。
第五步、Commond + R,然后就成功了。
shell腳本自動(dòng)簽名
Xcode簽名還需要修改一下東西,shell完全自動(dòng)化操作,讓我們的操作直接飛起來(lái)。明白其中語(yǔ)句含義,將來(lái)簽名其它的App也只需要稍作修改。
第一步、通過(guò)Xcode建一個(gè)同名功能后,在工程目錄中創(chuàng)一個(gè)叫APP的文件夾,并將IPA包放進(jìn)去。
第二步、然后在Build Phases中創(chuàng)建一個(gè)Script。
第三步、輸入下面的腳本:
# ${SRCROOT} 它是工程文件所在的目錄 TEMP_PATH="${SRCROOT}/Temp" #資源文件夾,我們提前在工程目錄下新建一個(gè)APP文件夾,里面放ipa包 ASSETS_PATH="${SRCROOT}/APP" #目標(biāo)ipa包路徑 TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa" #清空Temp文件夾 rm -rf "${SRCROOT}/Temp" mkdir -p "${SRCROOT}/Temp" #---------------------------------------- # 1. 解壓IPA到Temp下 unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH" # 拿到解壓的臨時(shí)的APP的路徑 TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1") # echo "路徑是:$TEMP_APP_PATH" #---------------------------------------- # 2. 將解壓出來(lái)的.app拷貝進(jìn)入工程下 # BUILT_PRODUCTS_DIR 工程生成的APP包的路徑 # TARGET_NAME target名稱 TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app" echo "app路徑:$TARGET_APP_PATH" rm -rf "$TARGET_APP_PATH" mkdir -p "$TARGET_APP_PATH" cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH" #---------------------------------------- # 3. 刪除extension和WatchAPP.個(gè)人證書(shū)沒(méi)法簽名Extention rm -rf "$TARGET_APP_PATH/PlugIns" rm -rf "$TARGET_APP_PATH/Watch" #---------------------------------------- # 4. 更新in文件 CFBundleIdentifier # 設(shè)置:"Set : KEY Value" "目標(biāo)文件路徑" /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/In" #---------------------------------------- # 5. 給MachO文件上執(zhí)行權(quán)限 # 拿到MachO文件的路徑 APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/In|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<` #上可執(zhí)行權(quán)限 chmod +x "$TARGET_APP_PATH/$APP_BINARY" #---------------------------------------- # 6. 重簽名第三方 FrameWorks TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks" if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ]; then for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"* do #簽名 /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK" done fi當(dāng)然這個(gè)文件可以放在外面,不是直接寫(xiě)在工程中。
在腳本中寫(xiě)出找到這個(gè)文件的路徑,就可以直接執(zhí)行了。
但是在執(zhí)行中這個(gè)文件肯定會(huì)缺乏執(zhí)行權(quán)限,那么我們需要給它加上,進(jìn)到這個(gè)文件目錄,執(zhí)行命令:chmod +x 。
使用腳本或者Xcode進(jìn)行重簽都非常簡(jiǎn)單。這樣,我們就可以在iPhone中安裝多個(gè)相同的App啦。
(熟悉的暗號(hào):e8129245b35bae61484a3c2f4ed5e037)
1.《ios7怎么下微信2017看這里!iOS逆向|iPhone不從App Store也能安裝應(yīng)用,還可以裝多個(gè)微信》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《ios7怎么下微信2017看這里!iOS逆向|iPhone不從App Store也能安裝應(yīng)用,還可以裝多個(gè)微信》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/gl/3062521.html