iOS應用重簽名

簽名與重簽名

簽名:原始數據 --> HASH --> 原來的證書加密
重簽名:原始數據 -->HASH --> 現(xiàn)在的證書加密

注意:重簽名后WeChat不能登錄自己微信賬號,不然會被封號

準備工作

越獄微信IPA包 密碼:ws80
Myzip
iTerm2/終端
IPhone手機

我們將下載的砸過殼的微信IPA包通過Myzip解壓

解壓IPA

CodeSigna手動簽名

終端命令
  • codesign -vv -d 查看原始簽名
  • security find-identity -v -p codesigning 列出鑰匙串里可簽名的證書
  • Codesign -fs “證書串” 文件名 強制替換簽名
  • Chmod +x 可執(zhí)行文件 給文件添加權限
  • security cms -D -i ../embedded.mobileprovision 查看描述文件
  • codesign -fs "證書串”--no-strict --entitlements=權限文件.plist APP包
  • Zip -ry 輸出文件 輸人文件 將輸人文件壓縮為輸出文件
查看原始簽名
codesign -vv -d Wechat.app
查看原始簽名
列出鑰匙串里可簽名的證書
security find-identity -v -p codesigning
鑰匙串里可簽名的證書
查看可執(zhí)行文件

otool -l查看Mach-O詳細信息

cd WeChat.app
otool -l WeChat
image.png
開始重簽名

需要重簽名的文件

  • WeChat可執(zhí)行文件
  • Frameworks文件夾里面的.framework文件

不能簽名的文件

  • PlugIns里面的文件(是不能用免費證書簽名的),所有不用管它,可以直接刪除,不會印象可執(zhí)行文件的執(zhí)行
  • Watch文件里的也是不能重簽名的,直接刪除,也不會有啥影響

.framework重簽名

我們使用哪個賬號重簽名,就要用對應的證書去創(chuàng)建描述文件
需要使用下面的方法依次遍歷執(zhí)行Framework文件夾中的.framework

codesign -fs "Apple Development: 1106903517@qq.com (XU65U3794Q)" andromeda.framework
.framework重簽名

可執(zhí)行文件重簽名

創(chuàng)建描述文件
新建Xcode項目
信任證書

連接手機編譯后,就會出現(xiàn).app


image.png

顯示.app包內容,里面就有描述文件


描述文件

然后我們運行成功后,描述文件就會安裝到我們的手機上

替換BuildID

復制我們剛剛新建項目中的BuildID(aaa.WeChat1),然后打開WeChat包內容,找到打開Info.plist,替換里面的BuildID

替換BuildID

添加.plist
查看embedded.mobileprovision

復制embedded.mobileprovision文件中的

    <dict>

                <key>application-identifier</key>
        <string>BRLQDNZ4ST.aaa.WeChat1</string>

                <key>keychain-access-groups</key>
        <array>
                <string>BRLQDNZ4ST.*</string>
        </array>

                <key>get-task-allow</key>
        <true/>

                <key>com.apple.developer.team-identifier</key>
        <string>BRLQDNZ4ST</string>

    </dict>
![復制](https://upload-images.jianshu.io/upload_images/16490557-2cd86410d919838c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

使用Xcode新建一個Entitlements.plist文件,將剛復制的內容粘貼進去
然后再將Entitlements.plist文件復制到下面目錄下

Entitlements.plist

Mach-O和App簽名

替換權限文件

codesign -fs "Apple Development: 1106903517@qq.com (XU65U3794Q)" --no-strict --entitlements=entitlements.plist WeChat.app
替換權限文件
安裝重簽名后WeChat

打開Xcode的Devices,點擊+選擇重簽名后的WeChat

image.png

點擊Open
image.png

點擊Replace安裝
image.png

image.png

運行調試WeChat

我們在手機上打開重簽名后WeChat,在Xcode上選擇Debug -- Attach to Process --- WeChat

運行

等待一會后,就可以進行調試界面
調試

shell腳本進行重簽名

相關命令

  • source FileName

    • 當前shell環(huán)境中讀取并執(zhí)行FileName中的命令
    • 命令可以強行讓一個腳本去立即影響當前的環(huán)境(一般用于加載配置文件)。命令會強制執(zhí)行腳本中的全部命令,而忽略文件的權限
  • bash FileName、 $zsh FileName

    • 重新建立一個子shell,在子shell中執(zhí)行腳本里面的句子。
  • ./FileName

    • 讀取并執(zhí)行文件中的命令。但有一個前提,腳本文件需要有可執(zhí)行權限。

Mac的文件屬性

文件屬性
文件類型和權限
文件類型和權限

XCode腳本重簽名

新建一個XCode項目,在改項目目錄下新建一個.sh文件和APP文件,
將未解壓的砸殼WeChat放到APP文件夾中,.sh文件的腳本在文章末尾

image.png

連接手機,運行項目成功后,清空緩存
在新工程中將.sh文件放到Run Script下,記得給.sh文件運行權限
注意:如果是自己的IPA包,要刪除info.plist文件中UISupportedDevices字段

image.png

重新運行就可以了,我們會發(fā)現(xiàn)重簽名的WeChat就安裝上了

腳本

# ${SRCROOT} 它是工程文件所在的目錄
TEMP_PATH="${SRCROOT}/Temp"
#資源文件夾,我們提前在工程目錄下新建一個APP文件夾,里面放ipa包
ASSETS_PATH="${SRCROOT}/APP"
#目標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"
# 拿到解壓的臨時的APP的路徑
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
# echo "路徑是:$TEMP_APP_PATH"


#----------------------------------------
# 2. 將解壓出來的.app拷貝進入工程下
# 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.個人證書沒法簽名Extention
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"



#----------------------------------------
# 4. 更新info.plist文件 CFBundleIdentifier
#  設置:"Set : KEY Value" "目標文件路徑"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"


#----------------------------------------
# 5. 給MachO文件上執(zhí)行權限
# 拿到MachO文件的路徑
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#上可執(zhí)行權限
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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、越獄版應用重簽名(正版的需要砸殼,這個以后介紹) 應用重簽名需要以下幾個步驟: 刪除插件和帶有插件的.app包...
    綠葉竹林閱讀 1,586評論 0 1
  • 本文我們將重簽名一個App,實現(xiàn)將他人的App安裝到自己手機上,然后進行部分的調試工作。 需要準備的資料: 1、安...
    裸奔的蝸牛z閱讀 1,302評論 1 0
  • 前言 在逆向過程中,當我們對IPA包發(fā)生改動時,就需要對IPA包進行重新簽名,才可以重新安裝到我們的iOS設備中。...
    jackss閱讀 1,014評論 0 0
  • 七律·長征作者: 毛澤東紅軍不怕遠征難,萬水千山只等閑。五嶺逶迤(wēi yí)騰細浪,烏蒙磅礴(páng bó)...
    冰雨9527閱讀 867評論 0 0
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉變要...
    余生動聽閱讀 10,836評論 0 11

友情鏈接更多精彩內容