1前言
在iOS逆向中,我们常常需要对dyld_shared_cache_armX类型的文件进行还原,第一个我们经常使用的是dyld_decache工具,但是这个工具并不能用从来还原dyld_shared_cache_arm64文件,也就是64位指令集架构的缓存文件,这个时候dsc_extractor就为你续命了。
2编译
打开终端依次执行以下命令:
1 | cd ~ |
1 | mkdir dsc_extractor |
1 | cd dsc_extractor |
1 | wget http://opensource.apple.com/tarballs/dyld/dyld-210.2.3.tar.gz |
1 | tar xvf dyld-210.2.3.tar.gz |
1 | cd dyld-210.2.3/launch-cache/ |
1 | touch dsc_extractor.patch |
通过上面的操作,我们下载下来了touch dsc_extractor的源码并且解压出来,并在其中创建了一个touch dsc_extractor.patch的空文件,接下来把以下内容复制到该文件里面去。
1 | --- dyld-210.2.3/launch-cache/dsc_extractor.cpp 2012-05-21 02:35:15.000000000 -0400 |
记住,在+/endif /后面是还有一行空行的。
然后执行一下命令:
1 | patch < dsc_extractor.patch |
执行完成该命令后,你可以在dsc_extractor.patch文件的同级目录下看到一个dsc_extractor.cpp文件,接下来打开这个文件,要修改里面的内容。如下:
原处:230行
const char* afterSlash = &dirs[1];
修改成:
char* afterSlash = &dirs[1]; 去除const
原处:460行
#if 0
修改成:
#if 1
原处:488行
/ #endif /
修改成:
#endif 放开注释
修改完成后,回到终端,运行
1 | clang++ -o dsc_extractor dsc_extractor.cpp dsc_iterator.cpp |
到了这里,dsc_extractor终于编译完成了,你可以在同级目录下看到dsc_extractor的执行文件。你可以把它复制到任何地方然后使用。
3使用
编译dsc_extractor成功后,用iFunBox将iOS 里面的/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64复制到OSX的任何位置,然后在终端运行
dsc_extractor完成路径 arm64缓存文件路径 要保存文件的路径
然后终端显示
0/1004
1/1004
2/1004
3/1004
4/1004
5/1004
6/1004
7/1004
这样的文本的时候就成功了