新聞資訊  快訊  焦點  財經  政策  社會
互 聯 網   電商  金融  數據  計算  技巧
生活百科  科技  職場  健康  法律  汽車
手機百科  知識  軟件  修理  測評  微信
軟件技術  應用  系統  圖像  視頻  經驗
硬件技術  知識  技術  測評  選購  維修
網絡技術  硬件  軟件  設置  安全  技術
程序開發  語言  移動  數據  開源  百科
安全防護  資訊  黑客  木馬  病毒  移動
站長技術  搜索  SEO  推廣  媒體  移動
財經百科  股票  知識  理財  財務  金融
教育考試  育兒  小學  高考  考研  留學
您當前的位置:首頁 > IT百科 > 程序開發 > 移動端 > IOS

IOS超級簽名原理及實現

時間:2019-11-22 11:57:58  來源:  作者:

在大部分超級簽名原理及實現都是基于linux平臺來實現簽名的,代碼都是JAVAphp的需要各種部署,各種調用第三方工具,具體實現起來還是有些麻煩的,以下介紹超級簽名完全基于windows平臺來實現,方便部署,給不懂php和linux提供個思路。


超級簽名原理

簽名原理其實就是,使用了蘋果提供給開發者的Ad-Hoc分發通道,把安裝設備當做開發設備進行分發,要做到自動化首先需要獲取用戶設備的UDID,獲取UDID后需要將UDID添加到蘋果開發者中心進行生成描述文件,根據生成的描述文件、證書文件、待簽名包進行重新簽名生成安裝包ipa。

整體流程

IOS超級簽名原理及實現

 

接下來我們就看看整套機制是如何進行的:

設備安裝描述文件后,設備會向服務器(描述文件內回調服務器地址)發送設備的UDID。

服務器收到UDID后,將UDID注冊到某個蘋果開發者賬號下。

再生成簽名用的描述文件,給IPA簽名。

然后iPA傳Server,使用itms-services方式讓用戶下載。

技術細節

UDID的獲取:

蘋果公司允許開發者通過IOS設備和Web服務器之間的某個操作,來獲得IOS設備的UDID(包括其他的一些參數)。這里的一個概述:

在你的Web服務器(可以是任意語言的web服務)上創建一個.mobileconfig的XML格式的描述文件;

用戶下載描述文件后需要再手機設置里操作完成.mobileconfig描述文件的安裝;

服務器需要的數據:UDID,需要在.mobileconfig描述文件中配置好,以及服務器接收數據的URL地址;

當用戶設備安裝描述文件后,設備會回調你設置的URL,如果你的URL返回302跳轉的話,Safari瀏覽器會跳轉到你所給的地址;

開發者設備注冊 更新Provisioning Profile:

注冊設備前提是需要登陸蘋果開發者中心才能有權限注冊設備,現有文章資料是通過(AppleDeveloperCenter自動化工具)調用Api實現注冊更新,這個工具我沒有去研究,應該是個很不錯的工具。下面介紹下直接通過調用蘋果開發者網站接口來實現登陸注冊和更新描述文件,直接調用蘋果接口的速度基本是秒生成,和AppleDeveloperCenter工具理論是一個方式都是調用Api接口所以在速度方面是相同的。

登陸蘋果開發者網站有很多請求頭參數,最主要的就是“X-Apple-I-FD-Client-Info” 參數,X-Apple-I-FD-Client-Info請求頭算法決定著通過蘋果的驗證

這里大致說下算法參數,這個算法通過獲取瀏覽器的類型navigator.browser,瀏覽器版本navigator.Version,瀏覽器語言navigator.browserLanguage,插件Plugin,地域area,時間timestamp,screen.deviceXDPI,screen.deviceYDPI等多個參運算才能生成一個動態驗證串 json 如下

{"U":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36","L":"zh-CN","Z":"GMT+08:00","V":"1.1","F":"cOa44j1e3NlY5BSo9z4ofjb75PaK4Vpjt.gEngMQEjZr_WhXTA2s.XTVV26y8GGEDd5ihORoVyFGh8cmvSuCKzIlnY6xljQlpRD__htduVCbqWxf7_OLgiPFMJhHFW_jftckkCoqAkCoq0NUuAuyPB94UXuGlfUm0NUbNiqUU8jA2Q3wL6k03x0.5EwHXXTSHCSPmtd0wVYPIG_qvoPfybYb5EvYTrYesSAAQnIp.QEh2vLG9mhORoVijvw2WwjftckvIhIDLTK43xbJlpMpwoNSUC56MnGWpwoNHHACVZXnN9PL3rO8V.ueururJhBR.uMukAm4.f282pvEodUW2RjOI0NTg7lrCU.6elV2pNJFv64WDvUL0TFl9kmFxH_UavEp.icCmx_B4W1kl1BNlY6SGWY5BOgkLT0XxU..3hs"}

1.得到X-Apple-I-FD-Client-Info驗證數據就可以登陸蘋果開發者中心了,拿到授權Cookie可以操作開發者中心任意接口。

2.獲取蘋果團隊TeamId,這在以后的注冊設備,新建描述文件接口當中都會用到,具體的登陸地址以你可以使用Fildder進行抓包查看。

3.調用注冊設備接口 “/services-account/QH65B2/account/device/addDevices.action” 提交設備UDID,teamid,devicePlatforms,deviceNames,deviceNumbers,register 參數進行注冊。

4.創建描述文件 /services-account/QH65B2/account/ios/profile/createProvisioningProfile.action 我們通過這個接口來創建一個新的描述文件

IPA重新簽名

ipa的組成

IOS超級簽名原理及實現

 

事實上,ipa文件只是一個zip包,可以使用如下命令解壓:

/usr/bin/unzip -q xxx.ipa -d

解壓后,得到上圖的Payload目錄,下面是個子目錄,其中的內容如下:

資源文件,例如圖片、html、等等。

_CodeSignature/CodeResources。這是一個plist文件,可用文本查看,其中的內容就是是程序包中(不包括Frameworks)所有文件的簽名。注意這里是所有文件。意味著你的程序一旦簽名,就不能更改其中任何的東西,包括資源文件和可執行文件本身。iOS系統會檢查這些簽名。

可執行文件。此文件跟資源文件一樣需要簽名。

一個mobileprovision文件.打包的時候使用的,從MC上生成的。

Frameworks。程序引用的非系統自帶的Frameworks,每個Frameworks其實就是一個app,其中的結構應該和app差不多,也包含簽名信息CodeResources文件

重新簽名條件需要獲取對應文件:

UDID描述文件(上面我們已經拿到了)

蘋果開發者賬號Cer證書(這個可以從開發者賬號下載,前提是你生成了這個證書)將這個證書通過openssl轉換為p12證書(證書和密碼)

有了上面兩個文件后開始簽名,簽名利用到的工具大多數都是mac,linux平臺的 mac平臺成本高,這也就是為什么現在的簽名大多數都是linux平臺,以下大概介紹window平臺下進行重簽名。

IPA重新簽名原理本質是利用蘋果根證書進行校驗開發者證書及利用證書加密,先要獲取到蘋果根證書 X509Certificate,再獲取開發者賬號證書

X509Certificate校驗證書和密碼,加載待簽名IPA包利用證書給每一個文件進行重新簽名。

重新簽名后得IPA包使用itms-services方式下載,就可以安裝到指定的UDID設備手機上了。


作者:一只懵逼的土撥鼠
鏈接:https://www.jianshu.com/p/95f579d0b445
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。



Tags:IOS   點擊:()  評論:()
聲明:本站部分內容來自互聯網,內容觀點僅代表作者本人,如有任何版權侵犯請與我們聯系,我們將立即刪除。
▌相關評論
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
▌相關推薦
我們來介紹一下主板Bios的設置,其實 Bios里面有很多東西是相同的,可以說基本上是一樣的,雖然有些名字叫法不同,但是實際作用是一樣的。那么在這篇文章里面我就會更詳細的介紹一...【詳細內容】
2019-11-26   IOS  點擊:(2)  評論:(0)  加入收藏
在大部分超級簽名原理及實現都是基于linux平臺來實現簽名的,代碼都是java,php的需要各種部署,各種調用第三方工具,具體實現起來還是有些麻煩的,以下介紹超級簽名完全基于Windows...【詳細內容】
2019-11-22   IOS  點擊:(5)  評論:(0)  加入收藏
在日常操作和維護計算機的過程中,常常可以聽到有關BIOS設置和CMOS設置的一些說法,許多人對BIOS和CMOS經常混為一談。本文主要闡述對BIOS設置和CMOS設置在基本概念上的區分與...【詳細內容】
2019-11-11   IOS  點擊:(14)  評論:(0)  加入收藏
在蘋果的日常開發中,真機測試與打包等很多流程都會牽扯到各種證書,CertificateSigningRequest,p12等。但是很多相應的開發者并不理解iOS App應用簽名的原理和流程。今天著重講...【詳細內容】
2019-11-04   IOS  點擊:(8)  評論:(0)  加入收藏
一、路由器簡介路由器能起到隔離廣播域的作用,還能在不同網絡間轉發數據包。路由器實際上是一臺特殊用途的計算機,和常見的 PC 機一樣,路由器有 CPU、內存、BOOT ROM。路由器沒...【詳細內容】
2019-10-31   IOS  點擊:(22)  評論:(0)  加入收藏
概述Linux是一種自由和開放源代碼的類UNIX操作系統。該操作系統的內核由林納斯·托瓦茲在1991年10月5日首次發布。在加上用戶空間的應用程序之后,成為Linux操作系統。L...【詳細內容】
2019-10-18   IOS  點擊:(42)  評論:(0)  加入收藏
iOS 13 用了幾天后,我發現給設備充滿電的速度變慢了。有時候,當我充了大半天的電,拿起手機一看卻只有 90%。如果你也遇到了這樣的情況,不必擔心,這其實都是 iOS 13 新推出的「優...【詳細內容】
2019-10-11   IOS  點擊:(28)  評論:(0)  加入收藏
對于經常裝機的朋友來說,一定能夠在BIOS當中看到“Secure Boot”甚至如果安裝了win 10系統以后,如果要裝回原來的win 7系統的話,還是需要將“Secure Boot”關閉以后,才能夠正常...【詳細內容】
2019-10-10   IOS  點擊:(43)  評論:(0)  加入收藏
前提iOS 設備指的是 iPhone/iPod touch/iPad 等運行 iOS 操作系統的移動設備。為了測試網頁在這些移動設備上的表現,我們往往需要使用真實的設備去訪問內網的開發/測試環境。...【詳細內容】
2019-09-26   IOS  點擊:(28)  評論:(0)  加入收藏
經常折騰電腦的同學一定遇到過重裝系統,一般重裝系統的辦法很多種,但是普遍大家都在使用的一個辦法就是利用U盤重裝系統 。常在各種電腦城穿梭的老司機一定遇到過將U盤插到電...【詳細內容】
2019-09-20   IOS  點擊:(62)  評論:(0)  加入收藏
大家好,這里是一濤說電腦,今天給大家分享一下,怎么破解從BIOS密碼到windows登錄密碼。(本篇文章為技術交流,切勿用于不正當用途)BIOS密碼破解先說說BIOS密碼,那什么是BIOS,BIOS是英...【詳細內容】
2019-09-10   IOS  點擊:(46)  評論:(0)  加入收藏
電腦BIOS中的CSM Support英文全稱Compatibility Support Module,翻譯成中文就是兼容支持模塊,主要是為不支持或不完全支持uefi的操作系統和Legacy模式安裝的操作系統提供支持...【詳細內容】
2019-09-03   IOS  點擊:(294)  評論:(0)  加入收藏
不管什么機器,只要你掌握了以下這些方法,基本就可以通吃了。下面圖文結合,來說明如何修改。案例一: 此圖BIOS中,需要掌握的有這么幾個東西:(牢記); OS MODE SELECTION 意思是 選擇系...【詳細內容】
2019-08-29   IOS  點擊:(304)  評論:(0)  加入收藏
我們通過升級主板BIOS能夠修復原先BIOS的錯誤,以提升硬件的兼容性,或者說識別更多的CPU,例如新推出的CPU,可能搭配上一代主板就可能會出現無法開機的現象。而在今天組裝一臺電腦...【詳細內容】
2019-08-20   IOS  點擊:(181)  評論:(0)  加入收藏
前言React Native 是 Facebook 2015年開源的 Javascript 框架,旨在使用 Javascript 高效開發手機端 App。配合著多個顯而易見的優勢和 Facebook 強大的宣傳機器,它立刻成為國...【詳細內容】
2019-08-12   IOS  點擊:(22)  評論:(0)  加入收藏
果師兄科技資訊:蘋果公司于6月份開始向用戶推送ios13開發者預覽版,正式版將搭載iPhone11,與iPhone11同時發布。而在目前更新的幾次內測版中,ios13已經加入了很多新的功能和調整,...【詳細內容】
2019-08-12   IOS  點擊:(71)  評論:(0)  加入收藏
怎么在BIOS界面設置U盤啟動呢?這個對于很多想要U盤重裝系統的朋友來說非常頭疼的事情,相對小白用戶來說,BIOS界面的專業性比較強,而且是英文狀態,很多朋友直接懵了,那么如何設置U...【詳細內容】
2019-07-25   IOS  點擊:(55)  評論:(0)  加入收藏
閃退,多指在移動設備(如iOS、Android設備)中,在打開應用程序時出現的突然退出中斷的情況(類似于Windows的應用程序崩潰)。多表現為:應用程序畫面一閃而過,隨即退回到桌面。閃退的原...【詳細內容】
2019-07-24   IOS  點擊:(26)  評論:(0)  加入收藏
最近各個平臺配件升級頻繁,BIOS也隨著不斷更新。一般來說,升級BIOS總會有增加功能啦,提升穩定性一類的好處。不過這也不是絕對的,BIOS升級了主板功能降級了,甚至徹底用不了也是有...【詳細內容】
2019-07-16   IOS  點擊:(222)  評論:(0)  加入收藏
什么是電腦BIOS,一般電腦主板都設置了電腦開機后一直按著Del鍵即可進入BIOS。系統開機啟動 BIOS,即微機的基本輸入輸出系統(Basic Input-Output System),是集成在主板上的一個R...【詳細內容】
2019-06-20   IOS  點擊:(122)  評論:(0)  加入收藏
最新更新
欄目熱門
欄目頭條
31选7开奖11185