iOS 系统分析(一) 阅读内核准备知识

原文出自【听云技术博客】:http://blog.tingyun.com/web/a...web

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 环境。ui

图片描述

1.2 Darwin体系加密

图片描述

1.3 XNU概述spa

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操做系统》

相关文章
相关标签/搜索