ipa重簽名原理步驟

簽名以及驗(yàn)簽過(guò)程:

圖片1.png

ipa文件結(jié)構(gòu):

20200729173726122.png
  • _CodeSignature目錄里是一個(gè)無(wú)后綴的plist文件,里面存放的是.app中除可執(zhí)行文件外所有文件(非目錄)的hash值。
  • embeded.mobileprovision文件就是打包時(shí)的pp文件(appstore下載的無(wú)此文件)
  • MachO文件就是可執(zhí)行文件,里面包含了自己的簽名。
    *archived-expanded-entitlements.xcent:權(quán)限配置文件
  • Frameworks(目錄):用于存放用戶級(jí)別的 Framework(Static Framework / Embedded Framework)
    iOS 默認(rèn)內(nèi)置了系統(tǒng)級(jí)別的 Framework(Dynamic Framework),在項(xiàng)目中使用系統(tǒng)自帶的 Framework 時(shí),實(shí)際上是保存對(duì)系統(tǒng)級(jí)別的 Framework 的引用。因此,在項(xiàng)目打包時(shí),系統(tǒng)級(jí)別的 Framework(Dynamic Framework)不需要拷貝到 .app 中
    因?yàn)槊總€(gè) Framework 其實(shí)就是一個(gè) App,所以 .framework 的結(jié)構(gòu)類似于 .app 的基礎(chǔ)結(jié)構(gòu),有:
    ① 存放簽名信息的 _CodeSignature 目錄
    ② Info.plist 文件
    ③ 與 Framework 同名的可執(zhí)行文件
    ④ SC_Info 目錄
    因?yàn)?Frameworks 目錄下的每一個(gè) Framework 都有自己獨(dú)立的簽名信息
    所以在進(jìn)行 iOS App 重簽名時(shí),需要對(duì) Frameworks 目錄下的每一個(gè) Framework 都進(jìn)行強(qiáng)制重簽名
  • Bundle文件:一般是第三方資源
  • Plugins(目錄)
    用于保存插件,無(wú)法對(duì)此目錄進(jìn)行重簽名,因此 App 重簽名時(shí)需要?jiǎng)h除此目錄(或者刪除此目錄下的所有文件)
  • Assets.car
    項(xiàng)目中所有 .xcassets 打包后生成的一個(gè)壓縮包(注意:.xcassets 中的 AppIcon 和 LaunchImage 不會(huì)參與 Assets.car 的打包,而是直接放在 .app 包中 )
    可以通過(guò) github 上的開(kāi)源工具 cartool 解壓查看 Assets.car 里面的內(nèi)容
  • Info.plist(文件):iOS 系統(tǒng)讀取該文件,并獲取 App 的配置信息
  • PkgInfo(文件)
    存儲(chǔ)包信息的文件(包的 8 字節(jié)標(biāo)識(shí)符,APPL = Application)
  • lproj(文件)
    Localized Project Folder,包含用于支持 iOS / macOS 中 App 的單種語(yǔ)言的文本文件和其他資源文件(可能包含 .strings 和 .nib 文件)
  • SC_Info(目錄)
    包含 appname.sinf 和 appname.supp 兩個(gè)文件:
    ① .sinf 為 metadata 文件
    ② .supp 為解密可執(zhí)行文件的密鑰
  1. app的簽名包含兩部分:代碼文件的簽名直接在Mach-O文件內(nèi)部;其它文件的簽名在_CodeSignature目錄中的CodeResources文件中。不可往此目錄寫(xiě)入數(shù)據(jù)
  2. 因?yàn)槟夸洸粎⑴c簽名,所以重簽名后可以在.app內(nèi)放目錄存放資源。

重簽名過(guò)程

  • 刪除插件,因?yàn)闊o(wú)法對(duì)插件目錄Pluigin重簽名。
  • 對(duì)FrameWorks進(jìn)行簽名
  • 給可執(zhí)行文件執(zhí)行權(quán)限
  • 拷貝描述文件
  • 修改info.plist中的Bundle ID
  • 生成plist權(quán)限文件
  • 簽名整個(gè)APP
  • 生成ipa包
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ipa重簽名是指對(duì)已經(jīng)打包好的ipa,利用新的證書(shū)重新簽名。 ipa重簽名作用: 作用一:有時(shí)候公司在進(jìn)行軟件開(kāi)發(fā)...
    coder_zhengyi閱讀 6,810評(píng)論 1 11
  • 前言 以前想獲取應(yīng)用的 .ipa 文件可以從 iTunes 下載,macOS 上的 iTunes 升級(jí)成 12....
    iOSugarCom閱讀 5,319評(píng)論 0 2
  • 一 開(kāi)發(fā)者調(diào)試安裝app到手機(jī)的簽名過(guò)程 Mac電腦生成公鑰M和私鑰M 公鑰M傳給蘋果服務(wù)器,蘋果服務(wù)器的私鑰A對(duì)...
    meryin閱讀 8,486評(píng)論 5 16
  • 砸殼以后,導(dǎo)出可執(zhí)行文件。 獲得齒輪文件在真機(jī)運(yùn)行后,在Xcode 中進(jìn)入Products文件夾中的xxx.app...
    MaShuai丨閱讀 922評(píng)論 0 0
  • 一、IPA 的簡(jiǎn)單認(rèn)識(shí) 首先有一個(gè)這樣的 ipa 包文件: 直接修改文件后綴為:IPADev.zip, 然后解壓,...
    CoderHG閱讀 14,879評(píng)論 0 30

友情鏈接更多精彩內(nèi)容