根據(jù)2013年蘋果為企業(yè)級MDM提供的文檔 得出以下結(jié)論
一、蘋果MDM可以提供的功能
1、概述:
a、基本工作流程
蘋果企業(yè)級MDM方案通過提供一種叫做Configuration Profiles的文件來實(shí)現(xiàn)企業(yè)級MDM的安全驗(yàn)證;通過IOS MDM COMMAND來實(shí)現(xiàn)的各種功能。
這種Configuration Profiles文件實(shí)際上是一種XML文件,包含了使設(shè)備同企業(yè)級系統(tǒng)協(xié)作的權(quán)限。
這種文件是被簽名和加密過的,所以無法改變,也無法分享給其他機(jī)器。
這種文件被安裝在設(shè)備上,安裝的途徑如下:
a、使用蘋果官方的「iPhone 配置實(shí)用工具.app」創(chuàng)建描述文件,將配置描述文件安裝到通過 USB 端口與電腦連接的設(shè)備上;
b、通過電子郵件或網(wǎng)頁分發(fā)配置描述文件;
上述兩種方式是常規(guī)的配置文件安裝方式
企業(yè)級MDM安裝方式如下:
c、移動(dòng)設(shè)備管理服務(wù)器,則可以分發(fā)僅包含服務(wù)器配置信息的初始描述文件,然后讓設(shè)備以無線方式獲取所有其他描述文件。
它的工作流程如下:
第一步:將包含了Third-Party MDM Server信息的Configuration Profile發(fā)送到設(shè)備。這將會(huì)給用戶呈現(xiàn)哪些信息將會(huì)被第三方服務(wù)器管理和查詢。
第二步:設(shè)備安裝Configuration Profile。
第三步:設(shè)備接入,第三方服務(wù)器驗(yàn)證設(shè)備允許接入。
第四步:第三方服務(wù)器通過蘋果推送服務(wù)器向設(shè)備發(fā)送推送通知,來通知設(shè)備執(zhí)行管理和查詢等操作。(這里涉及到蘋果系統(tǒng)推送通知,后文會(huì)介紹)
第五步:設(shè)備執(zhí)行完任務(wù)后,直接與第三方服務(wù)器通信,發(fā)送執(zhí)行結(jié)果。
b、IOS MDM COMMAND
在第四步里,設(shè)備執(zhí)行管理和查詢操作是通過IOS MDM COMMAND來實(shí)現(xiàn)的,它實(shí)現(xiàn)了一種 MDM COMMAND的協(xié)議
所有的指令都是通過plist屬性文件來完成的
比如 下面是一個(gè)請求UUID信息的command的plist。它定義了RequestType、具體的Command指令
請求的響應(yīng)也是通過plist文件呈現(xiàn)的,如下
蘋果企業(yè)級MDM并不是提供私有API接口,而是將私有API接口的調(diào)用包裝起來,僅僅提供這個(gè)包裝的接口。
企業(yè)級MDM通過這種方式來保護(hù)內(nèi)部API的調(diào)用機(jī)制。
2、提供的功能
a、設(shè)備信息查詢
b、設(shè)備管理
簡單的說 就是提供了以下功能
保證設(shè)備安全:遠(yuǎn)程鎖定設(shè)備、遠(yuǎn)程擦除設(shè)備數(shù)據(jù)等
獲取設(shè)備信息:如IMEI、UDID等
應(yīng)用分發(fā):非越獄用戶可以不通過AppStore下載應(yīng)用程序、MDM擁有下載安裝app的接口
設(shè)備配置:管理員可以通過遠(yuǎn)程向iOS設(shè)備推送配置文件,配置設(shè)備的網(wǎng)絡(luò)連接、網(wǎng)絡(luò)安全和應(yīng)用程序設(shè)置等
備份和恢復(fù):可以將設(shè)備上的數(shù)據(jù)遠(yuǎn)程備份到指定的服務(wù)器上
二、蘋果MDM申請布置流程
1、基本流程
參考:http://www.lxweimin.com/p/fef831dfe12c
基本步驟如下
a、申請企業(yè)開發(fā)者賬號(hào);(個(gè)人開發(fā)者賬號(hào)不能申請MDM證書)(這一步據(jù)說需要至少一個(gè)月的時(shí)間)
b、申請MDM證書;
c、配置MDM服務(wù)器,生成Configuration Profile、MDM證書,并將它們安裝在設(shè)備上
d、推送通知,執(zhí)行MDM命令,獲取結(jié)果
2、推送機(jī)制
這里順便提一下IOS系統(tǒng)的推送機(jī)制(了解的同學(xué)可跳過)
蘋果的推送有兩種:本地推送、遠(yuǎn)程推送。這里企業(yè)級MDM推送指令是使用的遠(yuǎn)程推送。
a、申請推送證書。這個(gè)證書是用來驗(yàn)證開發(fā)者和對應(yīng)的開發(fā)應(yīng)用的,同時(shí)這個(gè)證書還用來生成每臺(tái)設(shè)備的UDID。
b、app請求使用推送功能,蘋果推送服務(wù)器會(huì)通過它的推送證書為這臺(tái)設(shè)備生成一個(gè)UDID發(fā)送給設(shè)備。
c、設(shè)備拿到UDID后,保存起來,并發(fā)送給自己的服務(wù)器存儲(chǔ)起來。
b、每當(dāng)有遠(yuǎn)程推送需求的時(shí)候,自己的服務(wù)器將向蘋果服務(wù)器發(fā)送一個(gè)指令,要給哪臺(tái)設(shè)備(UDID)發(fā)送怎樣的推送,然后由蘋果服務(wù)器給設(shè)備發(fā)送推送通知。(當(dāng)然,在注冊使用推送的時(shí)候,用戶要同意接收這個(gè)app的推送通知)
三、用與不用蘋果MDM的區(qū)別
1、當(dāng)前實(shí)現(xiàn)的demo中介紹
手機(jī)狀態(tài)監(jiān)控模塊實(shí)現(xiàn)如下:
地理位置同步 模塊實(shí)現(xiàn)如下:
應(yīng)用列表管理模塊實(shí)現(xiàn)如下:
2、用與不用MDM企業(yè)級的區(qū)別
由于MDM中涉及到的功能基本都是需要使用apple的私有API的。
而使用私有API的風(fēng)險(xiǎn)如下:
a、不清楚蘋果內(nèi)部調(diào)用這些特定私有API的機(jī)制。也不清楚這些機(jī)制會(huì)不會(huì)隨著版本的變更而變動(dòng)。
如,獲取應(yīng)用管理列表這個(gè)功能里,需要事先獲取LSApplicationWorkspace的defaultworkspace,然后再在里面獲取每一個(gè)應(yīng)用的信息合集LSApplicationProxy。
如,短信監(jiān)聽里 需要在IMDaemon中_loadServices里去調(diào)用didReceiveMessage函數(shù)。直接調(diào)用didReceiveMessage是沒用的。
b、API隨著系統(tǒng)版本的提升不斷的改變。
如,鎖屏API 在IOS5、6、7中可以調(diào)用GraphicsServices.framework/GraphicsServices中的GSEventLockDevice()函數(shù);在8、9中GraphicsServices.framework/GraphicsServices已經(jīng)沒有這個(gè)函數(shù)了
如,獲取IMEI函數(shù) 在IOS5、6中可以通過[self?coreTelephonyInfoForKey:@"kCTMobileEquipmentInfoIMEI"];在IOS7中可以通過getValue(@"device-imei");來實(shí)現(xiàn) 在IOS8、9中均失效
可以肯定的是,apple將會(huì)逐步完善保護(hù)私有API不被泄露使用,同時(shí)apple內(nèi)部的API調(diào)用機(jī)制不被人知。
class-dump可以dump出OC函數(shù),然而并不能dump出C函數(shù),apple正是逐步將隱私API轉(zhuǎn)換成C函數(shù)。
不用蘋果MDM并不是不能夠開發(fā)出企業(yè)級MDM的功能(如上面所述也開發(fā)出來了應(yīng)用列表管理),只不過以上的風(fēng)險(xiǎn)使得開發(fā)的難度變得很大,難度主要在
a、不同IOS版本各種功能的適配
b、搞清楚這些API的調(diào)用機(jī)制、這些API的變動(dòng)需要花費(fèi)非常多的時(shí)間
c、目前系統(tǒng)內(nèi)部并沒有一套完善的解析IOS系統(tǒng)內(nèi)部機(jī)制的方法(應(yīng)該要使用逆向工程);以上開發(fā)出來的功能都是我在網(wǎng)上找的,網(wǎng)上有的就可以試試,沒有的就沒辦法了
而使用蘋果企業(yè)MDM 仍然無法了解其系統(tǒng)內(nèi)部的機(jī)制 原因在IOS MDM COMMAND中有闡述過
使用蘋果企業(yè)MDM 除了第一、二部分介紹的流程外,強(qiáng)調(diào)一點(diǎn):
它不需要使用app,僅僅需要在手機(jī)上配置描述文件(Configuration Profile)、建立服務(wù)器即可。
參考資料:http://blog.csdn.net/zhaoxy_thu/article/details/10473193