iOS 重簽名過程探究

注意:這里只探討重簽名的整個過程退敦,不一定能簽名成功,重簽名建議使用MonkeyApp

一棚潦、手動簽名

1. 查看簽名信息
codesign -vv -d WeChat.app
zydeMacBook-Pro:Payload zy$ codesign -vv -d WeChat.app
Executable=/Users/zy/Desktop/Payload/WeChat.app/WeChat
Identifier=com.tencent.xin
Format=app bundle with Mach-O thin (arm64)
CodeDirectory v=20500 size=2308891 flags=0x0(none) hashes=36071+7 location=embedded
Signature size=4390
Authority=Apple iPhone OS Application Signing
Authority=Apple iPhone Certification Authority
Authority=Apple Root CA
Info.plist entries=73
TeamIdentifier=88L2Q4487U
Sealed Resources version=2 rules=21 files=1554
Internal requirements count=1 size=96
zydeMacBook-Pro:Payload zy$ 
2. 查看本機(jī)所有證書
security find-identity -v -p codesigning
3. 查看可執(zhí)行文件的加密信息
otool -l WeChat | grep crypt
zydeMacBook-Pro:Payload zy$ otool -l WeChat | grep crypt
     cryptoff 2150400
    cryptsize 4096
      cryptid 0
zydeMacBook-Pro:Payload zy$ 

cryptid標(biāo)識加密與否霍弹,0表示解密楼咳,1表示加密。

4. 查看描述文件
security cms -D -i embedded.mobileprovision
5. 對Frameworks進(jìn)行簽名
codesign -fs "Apple Distribution: Shenzhen An He Da Technology Co., Ltd." LXAntiDebug.framework
zydeMacBook-Pro:Frameworks zy$ codesign -fs "Apple Distribution: Shenzhen An He Da Technology Co., Ltd." LXAntiDebug.framework
LXAntiDebug.framework: replacing existing signature
zydeMacBook-Pro:Frameworks zy$ 
6. 重簽名過程

1.干掉插件Plugins文件夾里面的內(nèi)容!
2.Watch直接干掉雾狈!
3.對Frameworks進(jìn)行簽名!
4.給可執(zhí)行文件執(zhí)行權(quán)限! chmod +x WeChat
5.拷貝描述文件
6.修改info.plistBundle ID廓潜!
7.生成plist的權(quán)限文件
8.簽名整個APP! codesign -fs "Apple Distribution: Shenzhen An He Da Technology Co., Ltd." --no-strict --entitlements=entitlements.plist WeChat.app
9.打包 zip -ry WeChat.app Payload

二、利用Xcode重簽名

1. 新建一個Xcode新工程

略過

2.替換工程中app包
  1. 將我們需要簽名的app包替換工程中app包善榛,并修改app包名
    替換app包

    2.解壓app包修改原有的Bundle identifier為當(dāng)前項目的Bundle identifier
    3.對文件夾Frameworks進(jìn)行簽名
codesign -fs "xxx" LXAntiDebug.framework
Frameworks簽名

4.給可執(zhí)行文件執(zhí)行權(quán)限

chmod +x XXX

執(zhí)行權(quán)限前

執(zhí)行權(quán)限前

執(zhí)行權(quán)限后
執(zhí)行權(quán)限后

5.干掉插件PluginsWatch文件夾里面的內(nèi)容

三辩蛋、腳本自動化重簽名

1.在工程目錄下新建APP以及Temp文件夾

新建文件夾

  1. 新建xcode腳本
    新建腳本

    3.編寫腳本
# ${SRCROOT} 它是工程文件所在的目錄
TEMP_PATH="${SRCROOT}/Temp"
#資源文件夾
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拷貝進(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.個人證書沒法簽名Extention
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"



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


#----------------------------------------
# 5. 給MachO文件上執(zhí)行權(quán)限
# 拿到MachO文件的路徑
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|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

四、腳本路徑更改

1.在根目錄下新建一個XcodeAPP.sh文件夾并拷貝上述腳本代碼

touch XcodeAPP.sh
XcodeAPP.sh

2.給腳本可執(zhí)行權(quán)限

chmod +x XcodeAPP.sh

3.添加腳本路徑即可


添加腳本路徑
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末移盆,一起剝皮案震驚了整個濱河市悼院,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咒循,老刑警劉巖据途,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叙甸,居然都是意外死亡颖医,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蚁署,熙熙樓的掌柜王于貴愁眉苦臉地迎上來便脊,“玉大人,你說我怎么就攤上這事光戈∧奶担” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵久妆,是天一觀的道長晌杰。 經(jīng)常有香客問我,道長筷弦,這世上最難降的妖魔是什么肋演? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任抑诸,我火速辦了婚禮,結(jié)果婚禮上爹殊,老公的妹妹穿的比我還像新娘蜕乡。我一直安慰自己,他們只是感情好梗夸,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布层玲。 她就那樣靜靜地躺著,像睡著了一般反症。 火紅的嫁衣襯著肌膚如雪辛块。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天铅碍,我揣著相機(jī)與錄音润绵,去河邊找鬼。 笑死胞谈,一個胖子當(dāng)著我的面吹牛尘盼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呜魄,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼悔叽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爵嗅?” 一聲冷哼從身側(cè)響起娇澎,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睹晒,沒想到半個月后趟庄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡伪很,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年戚啥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锉试。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡猫十,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呆盖,到底是詐尸還是另有隱情拖云,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布应又,位于F島的核電站宙项,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏株扛。R本人自食惡果不足惜尤筐,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一汇荐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盆繁,春花似錦掀淘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秕狰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躁染,已是汗流浹背鸣哀。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留吞彤,地道東北人我衬。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像饰恕,于是被迫代替她去往敵國和親挠羔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345