iOS應(yīng)用重簽名

一夸浅、越獄版應(yīng)用重簽名(正版的需要砸殼瘟判,這個(gè)以后介紹)

應(yīng)用重簽名需要以下幾個(gè)步驟:

  • 刪除插件和帶有插件的.app包
  • 對(duì)Frameworks里面的庫進(jìn)行重簽名
  • 給可執(zhí)行文件 +x(可執(zhí)行)權(quán)限
  • 添加描述文件
  • 替換BundleID
  • 通過授權(quán)文件重簽app包

重簽名說白了就是用自己的證書和描述文件替換原應(yīng)用的證書和描述文件扭弧,更換原應(yīng)用的bundle_id。
下面以微信為例講解應(yīng)用重簽名,這里只供學(xué)習(xí)參考洼畅,不要用于商業(yè)和個(gè)人盈利佳鳖,否則后果自負(fù)霍殴。

1. 下載應(yīng)用

先在電腦上下載一個(gè)PP助手,然后下載微信越獄版安裝包。

應(yīng)用.png

下載后使用解壓縮工具將.ipa文件解壓
image.png

解壓縮后我們會(huì)得到如下圖所示的文件系吩,其中WeChat.app是我們重簽名操作的文件来庭。
image.png

使用下面的命令查看文件信息,可以看到應(yīng)用的簽名

codesign -d -vv WeChat.app

image.png

使用右鍵顯示包內(nèi)容查看WeChat.app文件內(nèi)容穿挨,其中存在一個(gè)如下圖所示的文件月弛,這就是可執(zhí)行文件
可執(zhí)行文件.png

使用如下命令可查看這個(gè)可執(zhí)行文件的相關(guān)信息

//查看信息
otool -l WeChat 
//篩選查看信息,搜索crypt
otool -l WeChat | grep crypt
//重定向信息科盛,將信息輸出到WeChat.txt中
otool -l WeChat > ~/Desktop/WeChat.txt

image.png

可執(zhí)行文件信息中cryptid代表加密方式帽衙,0代表沒有加密,這里為什么會(huì)有兩個(gè)cryptid贞绵?
image.png

我們會(huì)發(fā)現(xiàn)可執(zhí)行文件支持兩種架構(gòu):arm_v7arm64厉萝。一種架構(gòu)對(duì)應(yīng)一個(gè)加密方式,因此cryptid有兩個(gè)但壮。

2.準(zhǔn)備一個(gè)可用的開發(fā)證書和描述文件

可以使用命令查看鑰匙串里可簽名的證書

security find-identity -v -p codesigning
image.png

3.刪除插件和帶有插件的.app包

image.png

刪除PlugInsWatch冀泻,應(yīng)為插件無法進(jìn)行重簽名,必須刪掉蜡饵。Watch文件加下WeChatWatchNative.app中也含有插件所以也必須刪掉弹渔。

4.對(duì)Frameworks中的文件進(jìn)行重簽名

image.png

使用下面的命令一次對(duì)*.framework文件進(jìn)行重簽名

codesign -fs "證書串" 文件名

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

chmod +x WeChat

6.添加描述文件

將準(zhǔn)備的描述文件放到Wechat.app內(nèi)
描述文件可以通過下圖方式獲取

image.png

找到Test.app文件顯示包內(nèi)容
image.png

7.替換BundleID

打開WeChat.app內(nèi)的Info.plist文件,修改Bundle identifierTest.app對(duì)應(yīng)的Bundle identifier

8.通過授權(quán)文件重簽app包

手動(dòng)重簽app包

首先使用下面命令查看描述文件信息

security cms -D -i embedded.mobileprovision

授權(quán)信息.png

將上述信息進(jìn)行復(fù)制溯祸,創(chuàng)建entitlements.plist文件肢专。
image.png

到此我們已經(jīng)將所有準(zhǔn)備工作都已做好舞肆,下面是利用權(quán)限文件entitlements.plist對(duì)WeChat.app進(jìn)行重簽名,命令如下:

codesign -fs “證書串” --no-strict --entitlements=權(quán)限文件.plist APP包
image.png

APP重簽名成功。


重簽名后的文件信息.png

image.png

進(jìn)行最后一步將重簽名成功后的文件進(jìn)行打包成.ipa格式文件博杖。

zip –ry 輸出文件 輸入文件  

執(zhí)行成功后就可以安裝ipa文件了椿胯,我們應(yīng)用重簽名完成了!L旮哩盲!

利用Xcode對(duì)app進(jìn)行授權(quán)重簽

這里需要對(duì)工程名需要重簽名應(yīng)用同名,只能修改工程名,不能修改應(yīng)用名狈醉,否則行不通廉油。

  • 應(yīng)用連接真機(jī),編譯一下苗傅,此時(shí)會(huì)生成一個(gè)WeChat.app抒线,如下圖
    image.png

    打開WeChat.app所在的文件夾,將前面幾個(gè)步驟處理好的越獄版的WeChat.app拷貝到此處渣慕,覆蓋工程產(chǎn)生的.app文件嘶炭。覆蓋后直接運(yùn)行工程,Xcode會(huì)自動(dòng)生成權(quán)限文件對(duì).app文件進(jìn)行重簽名并將應(yīng)用安裝到手機(jī)上逊桦。

三眨猎、使用腳本對(duì)應(yīng)用進(jìn)行重簽名

  • 首先創(chuàng)建腳本appSign.sh腳本文件,放到當(dāng)前工程文件下
  • 在工程文件下創(chuàng)建一個(gè)APP文件夾卫袒,用于存放要重簽名的ipa
  • 配置工程如下圖所示


    image.png
  • 配置成功后運(yùn)行工程即可將重簽名的應(yīng)用安裝到手機(jī)上

下面代碼是重簽名腳本宵呛,可直接復(fù)制使用

# ${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. 將解壓出來的.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è)人證書沒法簽名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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宝穗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子码秉,更是在濱河造成了極大的恐慌逮矛,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件转砖,死亡現(xiàn)場(chǎng)離奇詭異须鼎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)府蔗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門晋控,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姓赤,你說我怎么就攤上這事赡译。” “怎么了不铆?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蝌焚,是天一觀的道長(zhǎng)裹唆。 經(jīng)常有香客問我,道長(zhǎng)只洒,這世上最難降的妖魔是什么许帐? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮毕谴,結(jié)果婚禮上成畦,老公的妹妹穿的比我還像新娘。我一直安慰自己析珊,他們只是感情好羡鸥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布蔑穴。 她就那樣靜靜地躺著忠寻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪存和。 梳的紋絲不亂的頭發(fā)上奕剃,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音捐腿,去河邊找鬼纵朋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛茄袖,可吹牛的內(nèi)容都是我干的操软。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼宪祥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼聂薪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝗羊,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤藏澳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后耀找,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翔悠,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年野芒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蓄愁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狞悲,死狀恐怖撮抓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情效诅,我是刑警寧澤胀滚,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布趟济,位于F島的核電站,受9級(jí)特大地震影響咽笼,放射性物質(zhì)發(fā)生泄漏顷编。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一剑刑、第九天 我趴在偏房一處隱蔽的房頂上張望媳纬。 院中可真熱鬧,春花似錦施掏、人聲如沸钮惠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽素挽。三九已至,卻和暖如春狸驳,著一層夾襖步出監(jiān)牢的瞬間预明,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工耙箍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撰糠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓辩昆,卻偏偏與公主長(zhǎng)得像阅酪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汁针,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355