《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

iOS 安全论坛 - 专注于研究 iOS 安全

 找回密码
 立即注册
搜索
热搜: iOS12 越狱
查看: 1007|回复: 64

《深入解析 MAC OS X & iOS 操作系统》PDF 带书签

  [复制链接]

74

主题

194

帖子

769

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
769
发表于 2019-3-31 19:40:44 | 显示全部楼层 |阅读模式
内容简介  · · · · · ·

《深入解析Mac OS X & iOS操作系统》编著者莱文。

系统开发者、内核黑客和对苹果感到好奇的人们注意了!本书探讨了MacOSX系统和iOS系统的方方面面,深入讲解了两个系统的架构,讨论了框架手册没有讨论的内容。本书清晰而详细地讨论了苹果操作系统的内部工作原理,包括苹果私有的API,书中的大部分内容都是首次披露。

《深入解析Mac OS X & iOS操作系统》在漫游系统架构的时候,从用户态深入到内核态,通过带注释的代码示例揭示了每一个层次和组件,还提供了可上手的实验,并且比较了两个系统实现的区别。

主要内容

◆引导过程:Mac的EFI、iOS的iBoot以及内核启动过程

◆进程、线程以及虚拟内存管理

◆通过DTrace、ptrace和隐藏的系统调用进行调试和性能剖析

◆系统级的API:POSIX调用、Mach陷阱以及OSX/iOS私有的API

◆文件系统架构,包括VFS和HFS+

◆网络架构:从套接字到网络接口以及网络驱动程序

◆内核扩展、驱动程序以及I/OKit架构的讨论

◆安全特性、强制访问控制(MAC)以及iOS监狱

《深入解析MacOSX&iOS操作系统》的支持网站(http://www。newosxbook。com)包含了示例程序、可免费下载的工具、更新的参考资料以及其他额外的内容。


目录  · · · · · ·第Ⅰ部分 高级用户指南
第1章 达尔文主义:OS X的进化史        3
1.1 前达尔文时代:Mac OS
Classic        3
1.2 浪子回头:NeXTSTEP        4
1.3 走进新时代:OS X操作系统        4
1.4 迄今为止的所有OS X版本        5
1.4.1 10.0——Cheetah,初出茅庐        5
1.4.2 10.1——Puma,更强大        5
1.4.3 10.2——Jaguar,渐入佳境        6
1.4.4 10.3——Panther和Safari        6
1.4.5 10.4——Tiger,转投Intel的
怀抱        6
1.4.6 10.5——Leopard和UNIX        6
1.4.7 10.6——Snow Leopard        7
1.4.8 10.7——Lion        7
1.4.9 10.8——Mountain Lion        8
1.5 iOS——走向移动平台的
OS X        9
1.5.1 1.x——Heavenly,
第一代iPhone        9
1.5.2 2.x——App Store、3G和
企业级的特性        10
1.5.3 3.x——告别第一代,
迎来iPad        10
1.5.4 4.x——iPhone 4、Apple TV和
iPad 2        10
1.5.5 5.x——iPhone 4S和
更新的硬件        11
1.5.6 iOS和OS X对比        11
1.6 OS X的未来        13
1.7 本章小结        14
参考文献        15
第2章 合众为一:OS X和iOS的架构        17
2.1 OS X架构概述        17
2.2 用户体验层        19
2.2.1 Aqua        19
2.2.2 QuickLook        20
2.2.3 Spotlight        21
2.3 Darwin——UNIX核心        22
2.3.1 Shell        22
2.3.2 文件系统        23
2.4 UNIX的系统目录        23
2.4.1 OS X特有的目录        24
2.4.2 iOS文件系统的区别        25
2.5 bundle        25
2.6 应用程序和app        26
2.6.1 Info.plist        27
2.6.2 Resources目录        29
2.6.3 NIB文件        29
2.6.4 通过.lproj文件实现国际化        30
2.6.5 图标文件(.icns)        30
2.6.6 CodeResources        30
2.7 框架        33
2.7.1 框架bundle格式        33
2.7.2 OS X和iOS公共框架列表        35
2.8 库        41
2.9 其他应用程序类型        43
2.9.1 Java(仅限于OS X)        43
2.9.2 Widget        43
2.9.3 BSD/Mach原生程序        44
2.10 系统调用        44
2.10.1 POSIX        44
2.10.2 Mach系统调用        45
2.11 XNU概述        47
2.11.1 Mach        47
2.11.2 BSD层        48
2.11.3 libkern        48
2.11.4 I/O Kit        48
2.12 本章小结        48
参考文献        49
第3章 站在巨人的肩膀上:OS X和
iOS使用的技术        51
3.1 BSD相关的特性        51
3.1.1 sysctl        51
3.1.2 kqueue        53
3.1.3 审计(OS X)        54
3.1.4 强制访问控制        57
3.2 OS X和iOS特有的技术        60
3.2.1 用户和组的管理(OS X)        60
3.2.2 系统配置        62
3.2.3 记录日志        64
3.2.4 Apple事件和AppleScript        66
3.2.5 FSEvents        68
3.2.6 通知        73
3.2.7 其他重要的API        73
3.3 OS X和iOS的安全机制        73
3.3.1 代码签名        74
3.3.2 隔离机制(沙盒化)        75
3.3.3 Entitlement:更严格的沙盒        77
3.3.4 沙盒机制的实施        82
3.4 本章小结        83
参考文献        84
第4章 庖丁解进程:Mach-O格式、
进程以及线程内幕        85
4.1 关键概念回顾        85
4.1.1 进程和线程        85
4.1.2 进程生命周期        86
4.1.3 UNIX信号        89
4.2 可执行文件        91
4.3 通用二进制格式        92
4.3.1 Mach-O二进制格式        95
4.3.2 加载命令        98
4.4 动态库        104
4.4.1 启动时库的加载        105
4.4.2 库的运行时加载        113
4.4.3 dyld的特性        115
4.5 进程地址空间        120
4.5.1 进程入口点        120
4.5.2 地址空间布局随机化        121
4.5.3 32位地址空间(Intel)        122
4.5.4 64位地址空间        123
4.5.5 32位地址空间(iOS)        123
4.6 进程内存分配(用户态)        128
4.6.1 alloca()        128
4.6.2 堆分配        128
4.6.3 虚拟内存——系统
管理员的角度        130
4.7 线程        132
参考文献        134
第5章 进程跟踪和调试        135
5.1 DTrace        135
5.1.1 D语言        135
5.1.2 dtruss        138
5.1.3 DTrace工作原理        139
5.2 其他剖析机制        142
5.2.1 CHUD的衰落        142
5.2.2 继任者AppleProfileFamily        142
5.3 进程信息        143
5.3.1 sysctl        143
5.3.2 proc_info        144
5.4 进程和系统快照        146
5.4.1 system_profiler(8)        146
5.4.2 sysdiagnose(1)        146
5.4.3 allmemory(1)        147
5.4.4 stackshot(1)        148
5.4.5 stack_snapshot系统调用        149
5.5 kdebug        152
5.5.1 基于kdebug的工具        152
5.5.2 kdebug代码        152
5.5.3 写入kdebug消息        154
5.5.4 读取kdebug消息        155
5.6 应用程序崩溃        156
5.6.1 应用程序挂起和采样        159
5.6.2 内存破坏的bug        160
5.7 内存泄漏        161
5.7.1 heap(1)        162
5.7.2 leaks(1)        162
5.7.3 malloc_history(1)        163
5.8 标准UNIX工具        163
5.8.1 通过ps(1)列出进程列表        164
5.8.2 top(1):系统全局视图        164
5.8.3 通过lsof(1)和fuser(1)
进行文件诊断        165
5.9 使用GDB        165
5.9.1 GDB的Darwin扩展        166
5.9.2 GDB用于iOS        166
5.9.3 LLDB        166
5.10 本章小结        167
参考文献和深入阅读        167
第6章 引导过程:EFI和iBoot        169
6.1 传统形式的引导        169
6.2 揭秘EFI        171
6.2.1 EFI的基本概念        171
6.2.2 EFI服务        173
6.2.3 NVRAM变量        177
6.3 OS X和boot.efi        178
6.3.1 boot.efi的执行流程        179
6.3.2 引导内核        185
6.3.3 内核对EFI的回调        187
6.3.4 Lion中boot.efi的变化        187
6.3.5 Boot Camp        187
6.3.6 bless(8)        188
6.4 iOS和iBoot        192
6.4.1 初期:引导ROM        193
6.4.2 普通引导        194
6.4.3 恢复模式引导        195
6.4.4 设备固件更新(DFU)模式        195
6.4.5 降级和回放攻击        196
6.5 安装镜像        196
6.5.1 OS X安装过程        196
6.5.2 iOS文件系统镜像
(.ipsw文件)        201
6.6 本章小结        206
参考文献和深入阅读        206
第7章 贯穿始终——launchd        207
7.1 launchd        207
7.1.1 启动launchd        207
7.1.2 系统范围和用户范围的
launchd        208
7.1.3 守护程序和代理程序        208
7.1.4 多面手launchd        209
7.2 LaunchDaemon列表        220
7.3 GUI shell程序        224
7.3.1 Finder(OS X)        224
7.3.2 SpringBoard(iOS)        225
7.4 XPC(Lion和iOS)        230
7.5 本章小结        234
参考文献和深入阅读        235
第Ⅱ部分 内核
第8章 内核架构        239
8.1 内核基础知识        239
8.2 用户态和内核态        243
8.2.1 Intel架构——ring        243
8.2.2 ARM架构——CPSR        244
8.3 内核态/用户态转换机制        245
8.3.1 Intel上的陷阱处理程序        246
8.3.2 自愿的内核转换        254
8.4 系统调用的处理        259
8.4.1 POSIX/BSD系统调用        260
8.4.2 Mach陷阱        263
8.4.3 机器相关的调用        267
8.4.4 诊断调用        268
8.5 XNU和硬件抽象        270
8.6 本章小结        272
参考文献        272
第9章 由生到死——内核引导和
内核崩溃        273
9.1 XNU源代码        273
9.1.1 获得源代码        273
9.1.2 make XNU        274
9.1.3 一个内核,多种架构支持        276
9.1.4 XNU源代码树        278
9.2 引导XNU        281
9.2.1 引导过程概览        281
9.2.2 OS X:vstart        282
9.2.3 iOS:start        283
9.2.4 [i386|arm]_init        283
9.2.5 i386_init_slave()        285
9.2.6 machine_startup        285
9.2.7 kernel_bootstrap        286
9.2.8 kernel_bootstrap_thread        289
9.2.9 bsd_init        291
9.2.10 bsdinit_task        296
9.2.11 睡眠和唤醒        299
9.3 引导参数        300
9.4 内核调试        302
9.4.1 “不要害怕”——
避免panic        303
9.4.2 panic的实现        304
9.4.3 panic报告        306
9.5 本章小结        310
参考文献        310
第10章 Mach原语:一切以消息为
媒介        311
10.1 Mach概述        311
10.1.1 Mach设计原则        312
10.1.2 Mach设计目标        313
10.2 Mach消息        313
10.2.1 简单消息        313
10.2.2 复杂消息        314
10.2.3 发送消息        315
10.2.4 端口        316
10.2.5 Mach接口生成器(MIG)        318
10.3 深入IPC        323
10.4 同步原语        326
10.4.1 锁组对象        326
10.4.2 互斥体对象        327
10.4.3 读写锁对象        328
10.4.4 自旋锁对象        329
10.4.5 信号量对象        329
10.4.6 锁集对象        331
10.5 机器原语        332
10.5.1 主机对象        332
10.5.2 时钟对象        341
10.5.3 处理器对象        343
10.5.4 处理器集对象        346
10.6 本章小结        350
参考文献        350
第11章 刹那之间——Mach调度        351
11.1 调度原语        351
11.1.1 线程        351
11.1.2 任务        356
11.1.3 任务和线程相关的API        360
11.1.4 任务相关的API        361
11.1.5 线程相关的API        365
11.2 调度        369
11.2.1 概述        369
11.2.2 优先级        370
11.2.3 运行队列        373
11.3 Mach调度器的独特特性        376
11.3.1 控制权转交        376
11.3.2 续体        376
11.3.3 抢占模式        378
11.3.4 异步软件陷阱(AST)        383
11.3.5 调度算法        386
11.4 定时器中断        389
11.4.1 中断驱动的调度        389
11.4.2 XNU中的定时器
中断处理        390
11.5 异常        394
11.5.1 Mach异常模型        394
11.5.2 实现细节        395
11.6 本章小结        403
参考文献        403
第12章 Mach虚拟内存        405
12.1 虚拟内存架构        405
12.1.1 虚拟内存全貌        405
12.1.2 虚拟内存概述        406
12.1.3 用户态视角        410
12.2 物理内存管理        419
12.2.1 pmap的API        420
12.2.2 API在Intel架构上的
实现示例        421
12.3 Mach Zone        423
12.3.1 Mach Zone的结构        424
12.3.2 引导期间的zone设置        426
12.3.3 zone垃圾回收        427
12.3.4 zone调试        428
12.4 内核内存分配器        429
12.4.1 kernel_memory_
allocate()        429
12.4.2 kmem_alloc()系列函数        431
12.4.3 kalloc        432
12.4.4 OSMalloc        433
12.5 Mach分页器        434
12.5.1 Mach分页器接口        435
12.5.2 Universal Page List        438
12.5.3 分页器类型        440
12.6 分页策略管理        447
12.6.1 Pageout守护程序        448
12.6.2 处理页错误        450
12.6.3 dynamic_pager(8)
(OS X)        451
12.7 本章小结        452
参考文献        452
第13章 BSD层        453
13.1 BSD简介        453
13.1.1 一统天下        454
13.1.2 POSIX标准中的内容        454
13.1.3 实现BSD        455
13.1.4 XNU不是完整的BSD        455
13.2 进程和线程        455
13.2.1 BSD进程结构        456
13.2.2 进程列表和进程组        458
13.2.3 线程        459
13.2.4 对应到Mach        461
13.3 进程创建        463
13.3.1 用户态的角度        463
13.3.2 内核态的角度        464
13.3.3 加载和执行二进制文件        467
13.3.4 Mach-O二进制文件        472
13.4 进程控制和跟踪        475
13.4.1 ptrace (#26)        475
13.4.2 proc_info (#336)        476
13.4.3 策略        476
13.4.4 进程挂起和恢复        477
13.5 信号        478
13.5.1 UNIX异常处理程序        478
13.5.2 硬件产生的信号        483
13.5.3 软件产生的信号        484
13.5.4 受害者的信号处理        484
13.6 本章小结        485
参考文献        485
第14章 有新有旧:BSD高级功能        487
14.1 内存管理        487
14.1.1 POSIX内存和页面
管理系统调用        487
14.1.2 BSD内部的内存函数        489
14.1.3 内存压力        492
14.1.4 Jetsam(iOS)        493
14.1.5 内核地址空间布局
随机化        495
14.2 工作队列        496
14.3 换个角度看BSD层        499
14.3.1 sysctl        499
14.3.2 kqueue        501
14.3.3 审计(OS X)        503
14.3.4 强制访问控制(MAC)        504
14.4 苹果的策略模块        506
14.5 本章小结        509
参考文献        509
第15章 文件系统和虚拟文件
系统交换        511
15.1 磁盘设备和分区        511
15.2 通用文件系统的概念        522
15.2.1 文件        522
15.2.2 扩展属性        522
15.2.3 权限        522
15.2.4 时间戳        522
15.2.5 快捷方式和连接        523
15.3 苹果生态圈中的文件系统        524
15.3.1 苹果原生的文件系统        524
15.3.2 DOS/Windows文件系统        524
15.3.3 CD/DVD文件系统        525
15.3.4 基于网络的文件系统        526
15.3.5 伪文件系统        528
15.4 挂载文件系统(仅限于OS X)        531
15.4.1 automount        531
15.4.2 磁盘仲裁        531
15.5 磁盘镜像文件        533
15.5.1 原始DMG文件        533
15.5.2 从磁盘镜像引导(Lion)        534
15.6 虚拟文件系统交换        534
15.6.1 文件系统条目        535
15.6.2 挂载条目        535
15.6.3 vnode对象        538
15.7 FUSE——用户空间的
文件系统        541
15.8 进程的文件I/O操作        543
15.9 本章小结        547
参考文献和深入阅读        547
第16章 基于B树的HFS+文件系统        549
16.1 HFS+文件系统概念        549
16.1.1 时间戳        549
16.1.2 访问控制表        550
16.1.3 扩展属性        550
16.1.4 fork        552
16.1.5 压缩        553
16.1.6 Unicode支持        558
16.1.7 Finder集成        558
16.1.8 大小写敏感(HFSX)        559
16.1.9 日志        560
16.1.10 动态大小调节        561
16.1.11 元数据区域        561
16.1.12 热文件        562
16.1.13 动态碎片整理        562
16.2 HFS+的设计概念        564
16.3 组件        570
16.3.1 HFS+宗卷头        571
16.3.2 编录文件        572
16.3.3 extent溢出文件        579
16.3.4 属性B树        579
16.3.5 热文件B树        580
16.3.6 分配文件        581
16.3.7 HFS日志        581
16.4 VFS和内核的整合        584
16.4.1 fsctl(2)的整合        584
16.4.2 sysctl(2)的整合        585
16.4.3 文件系统状态通知        585
16.5 本章小结        586
参考文献        586
第17章 遵守协议:网络协议栈        587
17.1 用户态接口回顾        588
17.1.1 UNIX Domain套接字        589
17.1.2 IPv4网络协议        589
17.1.3 路由套接字        590
17.1.4 网络驱动程序套接字        590
17.1.5 IPSec Key Management
套接字        592
17.1.6 IPv6网络协议        592
17.1.7 系统套接字        593
17.2 套接字和协议统计信息        595
17.3 第5层:套接字        597
17.3.1 套接字描述符        597
17.3.2 mbuf        598
17.3.3 内核态中的套接字        603
17.4 第4层:传输层协议        604
17.4.1 域和protosw        605
17.4.2 初始化域        609
17.5 第3层:网络层协议        610
17.6 第2层:网络接口层        613
17.6.1 OS X和iOS中的
网络接口        613
17.6.2 数据链路接口层        614
17.6.3 ifnet结构体        614
17.6.4 案例研究:utun        616
17.7 整合所有层:网络协议栈        620
17.7.1 接收数据        620
17.7.2 发送数据        623
17.8 数据包过滤        626
17.8.1 套接字过滤器        627
17.8.2 ipfw(8)        628
17.8.3 PF包过滤器(Lion和iOS)        629
17.8.4 IP过滤器        630
17.8.5 接口过滤器        632
17.8.6 伯克利数据包过滤器        633
17.9 流量整形和QoS        637
17.9.1 综合服务模型        637
17.9.2 区分服务模型        637
17.9.3 实现dummynet        638
17.9.4 在用户态控制参数        638
17.10 本章小结        639
参考文献和深入阅读        639
第18章 内核扩展模块        641
18.1 扩展内核的功能        641
18.2 内核扩展(kext)        643
18.2.1 kext结构        645
18.2.2 kext安全需求        647
18.2.3 内核扩展的相关操作        647
18.2.4 kernelcache        647
18.2.5 multi-kext        651
18.2.6 从程序员的视角看kext        651
18.2.7 kext的内核支持        652
18.3 本章小结        661
参考文献        662
第19章 驱动力——I/O Kit驱动
程序框架        663
19.1 I/O Kit简介        664
19.1.1 设备驱动程序的
编程约束        664
19.1.2 I/O Kit是什么        664
19.1.3 I/O Kit不是什么        666
19.2 libkern:I/O Kit的基类        667
19.2.1 OSObject        668
19.2.2 OSMetaClass        668
19.3 I/O Registry        669
19.3.1 IORegistryEntry        671
19.3.2 IOService        671
19.4 用户态的I/O Kit        671
19.4.1 访问I/O Registry        672
19.4.2 获得/设置驱动程序属性        674
19.4.3 即插即用(通知端口)        675
19.4.4 I/O Kit电源管理        676
19.4.5 其他I/O Kit子系统        677
19.4.6 I/O Kit诊断        678
19.5 I/O Kit内核驱动程序        680
19.5.1 驱动程序匹配        680
19.5.2 I/O Kit族        682
19.5.3 I/O Kit驱动程序模型        685
19.5.4 IOWorkLoop        687
19.5.5 中断处理        689
19.5.6 I/O Kit内存管理        691
19.6 整合BSD        693
19.7 本章小结        694
参考文献和深入阅读        695
附录A 了解机器架构        697


下载链接: https://pan.baidu.com/s/1UdA1gCfiY_FZVeYsEd7DqA
提取码请添加微信公众号,发送关键字,深入解析Mac,即可得到提取码。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

3

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2019-4-12 09:10:42 | 显示全部楼层
支持楼主分享更多的知识
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2019-4-29 22:38:25 | 显示全部楼层
支持楼主分享
回复

使用道具 举报

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2019-5-11 23:07:43 | 显示全部楼层
支持楼主分享更多的知识
回复

使用道具 举报

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2019-5-22 09:25:08 | 显示全部楼层
赞一个,多谢多谢
回复

使用道具 举报

0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2019-5-29 15:45:06 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2019-6-3 16:32:44 | 显示全部楼层
Thanks for sharing
回复

使用道具 举报

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2019-6-18 23:48:24 | 显示全部楼层
暗黑三等奖卡仕达
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2019-6-19 00:26:10 | 显示全部楼层
电子版查阅方便
回复

使用道具 举报

0

主题

6

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2019-6-20 14:50:23 | 显示全部楼层
了解一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2019-9-18 19:33 , Processed in 0.058169 second(s), 20 queries .

iOS安全论坛

© 2017-2019 iOS Hacker Inc.

快速回复 返回顶部 返回列表