美文网首页我用 LinuxiOS DeveloperiOS学习笔记
聊聊从iOS固件提取系统库符号

聊聊从iOS固件提取系统库符号

作者: f9dd77add98e | 来源:发表于2016-09-19 11:32 被阅读653次

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

当程序发生崩溃并有机会获取到崩溃堆栈时,还原崩溃堆栈从而定位错误显得非常重要。用户符号的还原非常简单,因为在打包 APP 时,会生成对应的符号文件(以 .dSYM 结尾)。而对于系统符号,Apple 并没有提供对应的符号文件下载,所以需要自己解析。本文就简单聊聊从 iOS 固件获取系统库符号的方法。

一、固件下载和解密

有很多提供固件下载服务的站点,比较出名的是: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 等。

三、需要说明的地方

theiphonewiki 上提供的解密 key 并没有 arm64 架构的,如果要解密 iPhone 5s 及以后产品对应的固件,需要通过其它渠道或者自己手动获取解密 key 。关于如何手动获取解密 key,本文并没有涉及,这一话题笔者也还在研究,欢迎大家指正。


                                            更多资讯请关注网易云捕微信公众号,网易云捕官方微博~~

                                                                            网易云捕微博

相关文章

  • 聊聊从iOS固件提取系统库符号

    “民之失德,乾糇以愆;他山之石,可以攻玉。”- 《诗经》 当程序发生崩溃并有机会获取到崩溃堆栈时,还原崩溃堆栈从而...

  • iOS 提取系统动态库

    通过苹果提供的dsc_extractor来提取 苹果将大部分系统动态库都打包放在一个缓存文件中(dyld shar...

  • 深入 fishhook 的内心世界

    fishhook 用于替换 iOS 程序中动态库的符号,常被用来 hook 系统中的 C 函数。 fishhook...

  • 9.15总结

    初识STM32固件库: 1.什么是固件库 2.如何获取固件库 3.固件库文件分析 4.库帮助文档的使用 然后利用S...

  • iPhone刷机教程笔记

    手动更新升级系统: 先下载iOS10正式版固件。 固件下载好之后,将iPhone连接电脑,并打开itunes。 按...

  • 工作中的一些效率方法记录

    json -> plist wireshark iphone 新建虚拟网卡抓包 iOS 系统刷机Apple 固件校...

  • Android 安全

    Android 秘钥库系统 利用 Android 密钥库系统,您可以在容器中存储加密密钥,从而提高从设备中提取密钥...

  • iOS系统的底层通知框架库

    iOS系统的底层通知框架库 iOS系统的底层通知框架库

  • iOS逆向学习

    Apple保护机制 iOS系统安全架构 软件+ 硬件固件 软件:文件系统->操作系统分区->用户分区(已加密)->...

  • 深入iOS系统底层之静态库介绍

    深入iOS系统底层之静态库介绍 深入iOS系统底层之静态库介绍

网友评论

    本文标题:聊聊从iOS固件提取系统库符号

    本文链接:https://www.haomeiwen.com/subject/jntnettx.html