了解了一点iOS逆向方面的知识了,就迫不及待的要开始查看一下iOS文件系统,查看传说中的iOS系统的私有库等等,然后很快发现iOS中'/System/Libraray/Frameworks'、'/System/Libraray/PrivateFrameworks'等目录下,怎么没有相关的库文件?比如要逆SpringBoard库,去哪找? 原来包括frameworks在内的许多库文件被存进了一个大cache里,这个cache文件位于'/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armx'(armx为对应的cpu指令集,如对应的文件为dyld_shared_cache_armv7或dyld_shared_cache_armv7s或dyld_shared_cache_arm64)
如在iphone5或iphone5c上会有/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armv7s,而在iphone5s及以上的iOS会有/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armv7s和/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64两个文件。
要导致cache里库文件,就需要用到dyld_decache工具,在http://github.com/downloads/kennytm/Miscellaneous/dyld_decache[v0.1c].bz2下载,然后解压;
然后chmod命令将其提权:
chmod +x /path/to/dyld_decache\[v0.1c\]
ios逆向工具--dyld_decacheX
然后就可以对cache文件进行处理了,用pp助手之类的工具,或scp命令,将iOS中对应的cache文件,如:/System/Libra ry/Caches/com.apple.dyld/dyld_shared_cache_armv7s导出到mac上,然后用dyld_decache[v0.1c]工具进行处理。
dyld_decache命令格式为:
path/to/dyld_decache -o /where/to/store/decached/binarires/ /path/to/dyld_shared_cache_armx
eg:
ios逆向工具--dyld_decache
需要注意的是,上面导出的是iphone5c上的dyld_shared_cache_armv7s,如果是iphone5s上的dyld_shared_cache_arm64,会发现用dyld_decache\[v0.1c\]并不能正确的decache出来,显示Error,同时导出来的文件明显不完整:
ios逆向工具--dyld_decache
对arm64的caches此时需要dsc_extractor工具。
请参考:http://iosre.com/t/when-dyld-decache-fails-on-dyld-shared-cache-arm64-dsc-extractor-saves-our-days/1974
先创建一个存放该具的目录dsc_extractor,然后从http://opensource.apple.com/tarballs/dyld/dyld-210.2.3.tar.gz下载该工具,得到dyld-210.2.3.tar。然后解压:
ios逆向工具--dyld_decache
在terminal中切换到launch-cache目录,并其目录下创建名为dsc_extractor.patch的空文件:
ios逆向工具--dyld_decache
然后打开https://gist.githubusercontent.com/lightbulbone/6092321/raw/305c9cc67a2379cdf852903de2d4b102c8e7bf4a/dsc_extractor.patch,将里面的内容,复制到刚创建的dsc_extractor.patch文件中。如果正确复制保存了的话,文件的md5值应该为b54a2e2c9556003a91b04009e9986dba;如果不是这个md5值,说明内容复制不准确,简单的方法就是直接从下面的地址:
http://7xibfi.com1.z0.glb.clouddn.com/uploads/default/original/2X/e/e4ce267c5583ef72198d2d59df2dcb2f2f62bd2e.patch下载,然后改名为dsc_extractor.patch即可;
dsc_extractor.patch文件正确后,然后执行如下命令:
patch ios逆向工具--dyld_decache
然后执行命令:
clang++ -o dsc_extractor dsc_extractor.cpp dsc_iterator.cpp
ios逆向工具--dyld_decache
上面命令执行完毕后就生成了dsc_extractor的可执行文件,然后就可以执行命令提取dyld了,其命令格式为:
/path/to/dsc_extractor /path/to/dyld_shared_cache_armx /where/to/store/decached/binarires/
eg:
ios逆向工具--dyld_decache
网友评论