1前言
在iOS系统中,存在着这么一个文件夹,/System/Library/Caches/com.apple.dyld,这个文件夹里面放着的是什么文件呢,在我的iphone5s中,两个文件dyld_shared_cache_armv7s和dyly_shared_arm64,这两个文件分别代表两个arm架构,一个是armv7s一个是arm64。
顾名思义,这两个都是缓存文件,里面放着的都是各种系统所可能用到的动态库。如Foundation.framework,Security.framework等等。在/System/Library/Frameworks/这个路径下面所有的动态库只放了一些配置文件,而真正的执行文件就在上面说的缓存文件里面。因为几乎所有的iOS程序都会用到系统库,当程序运行的时候会使用dyld(位于/usr/lib/dylb)程序进行连接,另一方面,由于每个iOS程序都会连接很多的动态库,如果需要一个一个连接会很耗时,如果把它们放在一个地方打包好,等到运行的时候全部连接岂不美滋滋,基于这些原因,就有了dyld_shared_cache_armv7s和dyld_shared_cache_armv64两个缓存文件(有些设备有可能还会有dyld_shared_cache_armv7)。
2工具
上面我已经解释了为什么会存在这两个文件以及这两个文件的作用,在iOS逆向中,我们常常需要查看某一个系统类的实现,这个时候就要去对应的系统库里面查看,这些系统库就放在对应的缓存文件里面了。但是这些文件是经过处理的,不可以直接查看,所以需要用到一些工具来查看。这里介绍两个工具,一个是dyld_decache[v0.1c] 另外一个是dsc_extractor,编译方法 。这两个工具的不同之处是,第一个工具是不可以用来解析arm64指令集的缓存文件的,而dsc_extractor是可以用来解析arm64指令集的缓存文件的,现在基本上大家用的都是arm64位指令集的设备了。(iPhone5s以上都是arm64位结构)
3还原
通过2中的dyld_decache[v0.1c]工具和dsc_extractor我们可以还原出
dyld_shared_cache_armX缓存文件中隐藏的framework。下面是语法
3.1 dsc_extractor
usage: dsc_extractor <path-to-cache-file> <path-to-device-dir>
usage: dsc_extractor 你要解析的arm64的缓存文件路径 保存的路径
解析过程中会出现类似于
0/969
1/969
2/969
3/969
4/969
5/969
.....
这样的文字。
3.2 dyld_decache[v0.1c]
dyld_decache[v0.1c] -o 要保存的路径 你要解析的缓存文件路径
解析完成后会出现两个文件加,一个是system,另外一个usr,如无意外,所有的动态库都会在里面,接下来尽情的蹂躏他们吧。不过记得在开始这一切之前,要将iphone里面的dyld_shared_cache_arm64文件拷贝一份到OSX上面去操作。
网友评论