0x01 ios體系架構
1.1 ios 系統的整體體系架構
使用者體驗( the user experience layer ):springboard 同時支援 spotlight。
應用軟體開發架構(the application frameworks layer):cocoa ( cocoa touch )。
核心開發架構(the core frameworks):圖形和多媒體一類軟體的開發環境,包括 核心架構,open gl和quicktime等。
darwin:系統核心核心:包括 核心 和unix shell 環境。
1.2 darwin體系
1.3 xnu概述
darwin是一種類似unix的作業系統,他的核心是xnu。
xnu是一種混合式核心。結合了mach與bsd兩種核心。
mach 是微核心實作。
bsd 實作在mach的上層,這一層提供的api 支援了posix标準模型。在xnu中主要實作了一些進階的api與子產品。
1.3.1 mach 微核心簡介
在xnu中主要完成以下幾個功能:
程序與線程的抽象
虛拟記憶體管理
任務排程
程序間通信
1.3.2 bsd 核心簡介
unix 程序模型;
posix 線程模型即pthread,以及相關的同步功能;
unix的使用者與組管理;
網絡協定棧(bsd socket api),符合posix 模型;
檔案系統/裝置系統;
1.3.3 libkern
實作了一個c+ +的子集(以庫的形式為支援c+ +提供了運作時),為i/o kit 提供基礎設施;
1.3.4 i/o kit
i/o kit 是xnu 不同于其他作業系統的裝置驅動架構。iokit是一個面向對象的驅動模型架構,它是早期driverkit的一個翻版,driver kit是使用objective-c寫的,而iokit是一個c+ +的驅動架構,它在driverkit的基礎上做了很大的改進,比如iokit可以寫在使用者空間跑的驅動(雖然大多仍是跑在核心空間上的),因而驅動挂了而系統不會挂。另外iokit考慮到了計算機發展的趨勢,是以在電源管理、即插即用、動态加載上做得更好。
0x02 ios安全機制
2.1 代碼簽名
在ios開發者使用的機器上應該已經有一個證書,一個公鑰,以及一個私鑰。這些事代碼簽名機制的核心。像ssl一樣,代碼簽名也依賴于采用x.509 标準的公開密鑰加密體系。無論是使用者還是開發者都不能改變應用開啟政策,你必須有一個開發者帳号或者應用釋出證書才能讓應用運作在 ios 系統上。
2.2(強制通路控制(mandatory access control)
ios的entitlement 機制的基礎。簡稱mac,用于将系統中的資訊分密級和類進行管理,以保證每個使用者隻能通路那些被标明可以由他通路的資訊的一種通路限制機制。通俗的說,在mac下,使用者與檔案都被标記了固定的安全屬性(如安全級别,通路權限等),在每次通路發生時,系統檢測安全屬性以便确定一個使用者是否有權通路該檔案)。
2.3 沙盒機制(sandbox)
沙盒是一種安全機制,為運作中的程式提供隔離環境。沙盒在啟動的時候可以設定運作的程式是否可以通路網絡、檔案、目錄等。
參考 《深入解析mac os x & ios作業系統》