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

来源:http://www.cnblogs.com/TingyunAPM/archive/2016/09/20/5888709.html
-Advertisement-
Play Games

➠更多技術乾貨請戳:聽雲博客 0x01 iOS體系架構 1.1 iOS 系統的整體體系架構 用戶體驗( The User Experience layer ):SpringBoard 同時支持 Spotlight。 應用軟體開發框架(The Application Frameworks layer) ...


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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [1]拖放源 [2]拖放目標 [3]dataTransfer對象 [4]改變游標 ...
  • 偽對象選擇器包含三種,分別為: E::selection E::after E::before 其中before和after必須與content結合使用,如果content想用幾何圖形要加 \ 進行轉義,content裡面的內容相當於文字,可以通過color改變顏色,font-size改變大小 等等 ...
  • html, xhtml和xml 1.定義及特點: 1) html:Hyper Text Markup Language 超文本標記語言 是最早寫網頁的語言,但編碼不規範,主要用於控制數據的顯示和外觀。語法較為鬆散,不嚴謹的web語言; ① 簡易性:超級文本標記語言版本升級採用超集方式,從而更加靈活方 ...
  • 就是準備跟著W3C上的教程過一遍HTML啦,邊看邊記錄更便於理解記憶吧~ 1、屬性 HTML 標簽可以擁有屬性。屬性提供了有關 HTML 元素的更多的信息。屬性總是以名稱/值對的形式出現,比如:name="value"。 屬性總是在 HTML 元素的開始標簽中規定。 屬性例子 1: <h1> 定義標 ...
  • $.ajax()是所有ajax方法中最底層的方法,所有其他方法都是基於$.ajax()方法的封裝。這個方法只有一個參數,傳遞一個各個功能鍵值對的對象。 $.ajax()方法對象參數表: 註意:對於data屬性,如果是GET模式,可以使用三種之前說所的三種形式。如果是POST模式可以使用之前的兩種形式 ...
  • http://www.techweb.com.cn/irouter/2016-09-14/2393183_2.shtml ...
  • 第一種方法:獲取手機的IMSI碼,並判斷是中國移動\中國聯通\中國電信 第二種方法 ...
  • 2014.7版本 ADT Bundle http://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.ziphttp://dl.google.com/android/adt/adt-bundle-windows-x86_64-201 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...