当前位置: 首页 > article >正文

iOS 逆向学习 - iOS Architecture Core OS Layer

iOS 逆向学习 - iOS Architecture Core OS Layer

      • 一、Core OS Layer 概述
      • 二、Core OS Layer 的核心组成部分
        • 1. Kernel(XNU 内核)
        • 2. Device Drivers(设备驱动)
        • 3. Security Frameworks(安全框架)
        • 4. File System(文件系统)
      • 三、Darwin OS 与 XNU Kernel 的关系
        • 1. Darwin OS
        • 2. XNU Kernel
      • 四、逆向开发中的关联概念
        • 1. Hook 内核行为
        • 2. 越狱与沙盒绕过
        • 3. 文件系统逆向
      • 五、总结
      • 六、参考资料

一、Core OS Layer 概述

在这里插入图片描述
Core OS Layer 是 iOS 系统的最低层,直接与硬件交互,提供系统资源管理、设备驱动、文件系统、安全框架等底层服务。它是整个 iOS 操作系统架构的基础,其稳定性和性能直接影响系统的整体表现。

该层的组件包括 Kernel(XNU 内核)Device Drivers(设备驱动)File System(文件系统)Security Frameworks(安全框架)


二、Core OS Layer 的核心组成部分

1. Kernel(XNU 内核)

XNU(“X is Not Unix”)是 iOS 和 macOS 操作系统的内核,作为 Darwin 操作系统的一部分,它结合了以下几个关键模块:

  • Mach

    • 提供任务管理、线程调度、内存管理(虚拟内存)等功能。
    • 支持进程间通信(IPC),如 Mach 消息机制,用于系统服务之间的数据传递。
    • 提供内核扩展的模块化支持,使系统可以动态加载设备驱动和服务。
  • BSD(Berkeley Software Distribution)

    • 提供 POSIX 接口,支持 UNIX 风格的系统调用和工具。
    • 负责文件系统管理、网络协议(如 TCP/IP)支持、权限管理等功能。
    • 提供用户空间和内核空间的桥梁。
  • Device Drivers(设备驱动)

    • 通过 I/O Kit 提供对硬件的抽象层接口。
    • 包括摄像头、Wi-Fi、蓝牙、存储设备等硬件的驱动程序。

2. Device Drivers(设备驱动)
  • 是什么:
    Device Drivers 是操作系统与硬件之间的桥梁,负责控制硬件设备的操作,提供接口供上层调用。
  • iOS 的驱动实现:
    • 使用 I/O Kit(基于 C++)来管理设备驱动程序。
    • 支持动态加载和卸载驱动程序,以提高系统灵活性。
  • 作用:
    • 控制硬件设备(如 CPU、GPU、存储设备、传感器等)。
    • 提供统一的接口,让开发者或系统调用硬件设备。
  • 逆向开发中的用途:
    • 分析硬件设备的驱动行为(如 USB 或 Wi-Fi 驱动)。
    • 在越狱环境下修改驱动行为,实现未授权的硬件操作。

3. Security Frameworks(安全框架)
  • 功能:
    • 提供加密、解密、证书管理、数据完整性校验等安全服务。
    • 包括 Keychain 服务(存储敏感数据,如密码、证书)和硬件安全模块(如 Secure Enclave)。
  • 关键特性:
    • 沙盒机制:隔离应用,防止未授权的操作和访问。
    • 数据保护:通过文件加密确保文件系统安全。
    • 代码签名:验证应用和库的完整性,防止恶意代码执行。
  • 逆向开发中的用途:
    • 绕过代码签名检查。
    • 修改或解密数据保护文件。

4. File System(文件系统)
  • 功能:
    • 管理数据存储和访问。
    • 提供分层目录结构,支持权限控制。
  • iOS 文件系统类型:
    • APFS(Apple File System):优化了 SSD 的性能和加密支持。
  • 关键特性:
    • 应用沙盒:每个应用拥有独立的文件存储空间。
    • 文件加密:通过硬件加速实现高性能加密。
  • 逆向开发中的用途:
    • 访问沙盒目录以提取敏感数据。
    • 绕过文件系统的加密限制。

三、Darwin OS 与 XNU Kernel 的关系

在这里插入图片描述

1. Darwin OS
  • 是什么:
    Darwin 是 Apple 开发的一个开源操作系统,作为 macOS 和 iOS 的基础。它整合了开源组件(如 FreeBSD)和 Apple 的专有技术。
  • 组成:
    • XNU 内核(最底层,负责硬件管理和核心功能)。
    • 系统工具(支持 POSIX 接口和用户工具)。
    • 驱动程序和框架(如 I/O Kit)。
  • 功能:
    提供操作系统的核心服务,为上层框架(Cocoa Touch、Media 等)提供基础支持。
2. XNU Kernel
  • 是什么:
    XNU 是 Darwin 的内核,负责系统的核心功能,包括硬件管理、任务调度、虚拟内存等。
  • 与 Darwin 的关系:
    XNU 是 Darwin 的核心部分,Darwin 则包含 XNU 和其他用户空间工具(如 shell、命令行工具)。

四、逆向开发中的关联概念

1. Hook 内核行为
  • 通过越狱工具访问 XNU 内核,分析系统调用和内存分配。
  • 常用工具:Kernel Debugger (KDP)
2. 越狱与沙盒绕过
  • 核心操作:
    • 绕过内核中的代码签名验证(AMFI)。
    • 禁用应用沙盒,访问受限资源。
3. 文件系统逆向
  • 使用工具提取沙盒外的文件。
  • 破解文件加密机制(如 APFS 数据保护)。

五、总结

Core OS Layer 是 iOS 系统的核心底层,提供了内核、设备驱动、文件系统和安全机制等基础服务:

  1. XNU 内核 是核心模块,整合了 Mach 和 BSD 的功能。
  2. Device Drivers 提供硬件抽象接口,支持动态加载驱动。
  3. Security Frameworks 确保系统和数据的安全性。
  4. File System 管理数据存储和权限。

Darwin OS 是 XNU 内核的延展,包括了内核、驱动和用户空间工具,而 XNU 则是实现系统核心功能的关键模块。在 iOS 逆向开发中,理解这些概念是分析系统行为和修改底层逻辑的重要基础。

六、参考资料

1、如果想了解更多有关该内核的细节,可以参考Apple的官方文档:
https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html
2、如果想了解更多有关 macOS 系统中与 IOKit 相关的安全与权限提升内容,可以参考下面的文档:
https://book.hacktricks.wiki/en/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-iokit.html


http://www.kler.cn/a/468916.html

相关文章:

  • 运动相机拍摄的视频打不开怎么办
  • 前后端环境配置java/vue/maven/node.js/mysql
  • 网络安全抓包
  • 遗传学的“正反”之道:探寻生命密码的两把钥匙
  • 君正T41交叉编译ffmpeg、opencv并做h264软解,利用君正SDK做h264硬件编码
  • taro转H5端踩坑
  • pytorch索引操作函数介绍
  • DOM HTML
  • 【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)
  • 银行账户类别详解
  • 【Springboot知识】Springboot监控工具SpringbootAdmin
  • 游泳溺水识别数据集,对25729张图片进行YOLO,COCO JSON, VOC XML 格式的标注,溺水平均识别率在89.9%
  • 数据结构复习 (顺序查找,对半查找,斐波那契查找,插值查找,分块查找)
  • 鸿蒙UI开发——Toast即时提示框的使用
  • 【Qt】QLabel显示图片
  • 【STM32项目】智能物联网驱动的生物样本培育与管理辅助系统(完整工程资料源码)
  • 低空管控技术-无人机云监视技术详解
  • 功能篇:页面实现实时的时钟功能
  • 【NLP高频面题 - Transformer篇】Transformer的输入中为什么要添加位置编码?
  • java基础之代理
  • Qt 绘图
  • 9.课程分类查询
  • Linux(Centos 7.6)命令行快捷键
  • I.MX6ull-PWM
  • 封装/前线修饰符/Idea项目结构/package/impore
  • Linux菜鸟级常用的基本指令和基础知识