iOS逆向之旅(進階篇) — 重簽名APP(二)

使用Xcode進行重簽名【這種方式就相對簡單不少了】

步驟:git

1.新建一個Xcode工程github

2.從微信的ipa包解壓後拿出.app文件,進行替換 xcode

image.png
3.接下操做該包

  • 刪除PlugIns/Watch文件夾
  • 替換成本身的bundleid,找到info.plist進行修改

修改info.plist裏面的Bundle ID 【這個Bundle ID 必須跟咱們剛新建的工廠的Bundle ID一致】 bash

image.png

  • 用證書重簽名Framewroks下面的框架

簽名動態庫【這裏須要把.app/Frameworks目錄下的全部動態庫進行簽名】 codesign -fs "iPhone Developer: XXX (XXXXXXXX)" mars.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MMCommon.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MultiMedia.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" WCDB.framework微信

4.Xcode運行,即可以把該WeChat跑到本身的手機上了app

####使用XCode腳本自動簽名 在項目下建立一個APP的文件夾,只要在哪一個文件夾放置ipa包,就能制動重簽名安裝到本身的手機【仿照Monkey】 1.先將須要重簽名的ipa包放置到APP目錄下框架

image.png

2.往項目添加一個腳本文件ui

image.png

3.往腳本中寫入自動化簽名步驟spa

image.png

腳本信息(其實這些步驟都是咱們手動簽名作的事)3d

# ${SRCROOT} 這個是工程目錄
TEMP_PATH="${SRCROOT}/Temp"
# 資源文件夾
ASSETS_PATH="${SRCROOT}/APP"
# ipa包路徑
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"

#新建Temp文件夾
rm -rf "${TEMP_PATH}"
mkdir -p "${TEMP_PATH}"

# --------------------------------------
# 1. 解壓IPA 到Temp下
# 解壓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:$TEMP_APP_PATH"

# -------------------------------------
# 2. 把解壓出來的.app拷貝進去
#BUILT_PRODUCTS_DIR 工程生成的APP包路徑
#TARGET_NAME target名稱
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
echo "TARGET_APP_PATH:$TARGET_APP_PATH"

rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH/"


# -------------------------------------
# 3. 爲了是重簽過程簡化,移走extension和watchAPP. 此外我的免費的證書沒辦法籤extension
echo "Removing AppExtensions"
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"

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

# 5.給可執行文件上權限
#添加ipa二進制的執行權限,不然xcode會告知沒法運行
#這個操做是要找到第三方app包裏的可執行文件名稱,由於info.plist的 'Executable file' key對應的是可執行文件的名稱
#咱們grep 一下,而後取最後一行, 而後以cut 命令分割,取出想要的關鍵信息。存到APP_BINARY變量裏
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#這個爲二進制文件加上可執行權限 +X
chmod +x "$TARGET_APP_PATH/$APP_BINARY"

# -------------------------------------
# 6. 重籤第三方app Frameworks下已存在的動態庫
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];
then
#遍歷出全部動態庫的路徑
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
echo "🍺🍺🍺🍺🍺🍺FRAMEWORK : $FRAMEWORK"
#簽名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi
複製代碼

####使用Monkeydev自動簽名 #####步驟

image.png

  • 把砸了殼的IPA包放到Target目錄下

image.png
直接運行就能夠跑到咱們的手機上了 #####Monkeydev的原理 咱們到一樣的地方就能發現,Monkeydev也有本身的腳本
image.png
裏面也作了一樣重簽名的操做,這裏有興趣的本身去看,我就很少作解釋了

【晚點我再把這幾個項目的源碼上傳分享出來...】

相關文章
相關標籤/搜索