“民之失德,乾糇以愆;他山之石,可以攻玉。”- 《诗经》

一、固件下载和解密
有很多提供固件下载服务的站点,比较出名的是: theiphonewiki.com 。这个站点同时也维护了用于固件解密的 key,如图1所示:

图1:theiphonewiki.com 维护的 iOS 9.x 版本的固件解密 key
在图1中,蓝色字体部分表示对应的固件 key 存在,红色字体表示对应的固件 key 暂时不可得,所以 theiphonewiki 上只有极少数的 arm64 版本的固件是可以解密的。
固件(以 .ipsw 结尾)文件其实是一个压缩包,解压后得到的 3 个 dmg 文件中,占用空间最大的那个就包含需要的系统库。而这个文件是 AES 加密的,解密这个需要 Root Filesystem Key。例如,iPhone5,4(即 iPhone 5c )固件的解密 key
如图2所示:

图2:iPhone5,4 固件的 Root Filesystem 解密 Key
获取到 key 后,就可以使用 VFDecrypt 工具完成最终的解密,当然也有很多更方便的 UI 集成工具或者 python 脚本,比如:iDecrpyptIt。
二、系统库符号提取
从 iPhone OS 3.1 开始,所有的系统库都打包成一个文件:dyld_shared_cache_xxx ,其中 xxx 表示具体的架构,此文件位于:/System/Library/Caches/com.apple.dyld 目录。dyld_shared_cache_xxx 文件的解压可以使用 dyld 中的代码,
步骤如图3所示:

图 3:dyld_shared_cache_xxx 文件解密方法
最后得到的目录中就包含了此固件的系统库文件,如 UIKit.framework 等。