dyld_decache

安装了iFunBox和AFC2之后,不少读者会迫不及待地开始浏览iOS文件系统,看看这个封闭平台的表面下到底暗藏了多少玄机。相信大家很快就会发现一个问题:“/System/Library/Frameworks/”、“/System/Library/PrivateFrameworks/”等目录下,怎么没有库文件?

从iOS 3.1开始,包括frameworks在内的许多库文件被存进了一个大cache里,这个cache文件位于“/System/Library/Caches/com.apple.dyld/ dyld_shared_cache_armx”(名为dyld_shared_cache_armv7、dyld_shared_cache_armv7s或dyld_shared_cache_arm64),可以使用KennyTM开发的dyld_decache将其中的二进制文件提取出来。这样做的好处是确保分析的文件来自本机,在使用Mac工具集与iOS工具集分析同一目标时,OSX与iOS上分析出的指令和地址等数据是完全吻合的,避免了出现驴唇不对马嘴的低级错误。有关这个cache的进一步介绍,可以参阅DHowett的博客(http://blog.howett.net/2009/09/cache-or-check/)。

使用dyld_decache之前,要将“/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armx”用iFunBox(不能用scp)从iOS拷贝到OSX中。然后从https://github.com/downloads/kennytm/Miscellaneous/dyld_decache[v0.1c].bz2下载dyld_decache。解压之后赋予其可执行权限,如下:
 

  
  
  
  
  1. snakeninnysiMac:~ snakeninny$ chmod +x /path/to/dyld_decache\[v0.1c\] 

然后开始提取二进制文件,如下:
 

  
  
  
  
  1. snakeninnysiMac:~ snakeninny$ /path/to/dyld_decache\[v0.1c\] -o /where/to/store/decached/binaries/ /path/to/dyld_shared_cache_armx  
  2.   0/877: Dumping '/System/Library/AccessibilityBundles/AXSpeechImplementation.bundle/AXSpeechImplementation'...  
  3.   1/877: Dumping '/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader'...  
  4.   2/877: Dumping '/System/Library/AccessibilityBundles/AccountsUI.axbundle/AccountsUI'...  
  5. …… 

提取出的所有二进制文件都存放在了“/where/to/store/decached/binaries/”下。值得一提的是,逆向工程需要分析的二进制文件现在散落在OSX和iOS两个系统中,不方便查找,建议利用下一章提到的scp工具把iOS文件系统拷贝一份存在OSX里。

你可能感兴趣的:(dyld_decache)