iOS 系統分析(一) 閱讀內核准備知識


更多技術干貨請戳:聽雲博客

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 內核簡介 

  • BSD 實現在Mach的上層,這一層提供的API 支持了POSIX標准模型。在XNU中主要實現了一些高級的API與模塊。

  • 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操作系統》

原文鏈接:http://blog.tingyun.com/web/article/detail/1134


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM