转载地址:http://www.dotblogs.com.tw/cmd4shell/archive/2012/11/15/83453.aspx
iOS有一部分系统动态库是存放于动态链接库cache中。该链接库cache存在于/System/Library/Caches/com.apple.dylib/dyld_shared_cache_armv7中。如果想要分析其中的dylib,就需要对其进行解密。最新版的IDA Pro已经支持该功能,对使用老版IDA的用户则可以使用解密cache的方法将需要分析的dylib提取进行分析。
现成的工具在这里:https://github.com/kennytm/Miscellaneous/downloads,下载最新版的dyld_decache。
工具具体命令如下:
$ ./dyld_decache dyld_decache v0.1c Usage: dyld_decache [-p] [-o folder] [-f name [-f name] ...] path/to/dyld_shared_cache_armvX
Options: -o folder : Extract files into 'folder'. Default to './libraries' -p : Print the content of the cache file and exit. -f name : Only extract the file with filename 'name', e.g. '-f UIKit' or '-f liblockdown'. This option may be specified multiple times to extract more than one file. If not specified, all files will be extracted. |
由于直接从系统提取文件有ASLR问题,我通过多种方式解决仍无法解密,因此采用从固件中提取的方式提取。首先下载固件,然后使用WinRAR/WinZIP一类的文件打开,解压最大的DMG文件。
以iPhone3,1_5.1.1_9B206_Restore.ipsw为例,对解压的DMG执行:
./vfdecrypt -i038-4292-008.dmg -ke897c2d0aaaea8f2752ff6e144c6efc3158a5dad13c6b95ebe8b99885fc6ad0f6b5448f7 -o038-4292-008_decrypt.dmg |
打开解密后的DMG,提取上面路径下的dyld cache。
文件很大,有200M之巨。执行命令即可完成解密:
$ dyld_decache dyld_shared_cache_armv7 0/522: Dumping '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony'… ……. |
即可完成对所需要系统dylib的解密。
------------------------------