ios逆向(五)动态共享缓存库

在电脑的
"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/UIKit.tbd"
这个文件里显示UIKit在手机如下目录,“/System/Library/Frameworks/UIKit.framework/UIKit”,实际上在这个目录里根本不存在UIKit这个文件。

实际上所有的系统框架都在一个文件,

从iOS3.1开始,为了提高性能,绝大部分的系统动态库文件都打包存放到了一个缓存文件中(dyldsharedcache)

缓存文件路径(ios手机):/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX

在Mac\iOS中,是使用了/usr/lib/dyld程序来加载动态库

dyld(dynamic loader,动态加载器)

dyld源码

https://opensource.apple.com/tarballs/dyld/

从动态库共享缓存抽取动态库

可以使用dyld源码中的launch-cache/dsc_extractor.cpp

将#if0前面的代码删除(包括#if0),把最后面的#endif也删掉

编译dsc_extractor.cpp

clang++ -o dsc_extractor dsc_extractor.cpp

使用dsc_extractor

./dsc_extractor 动态库共享缓存文件的路径   用于存放抽取结果的文件夹

然后可以在hopper中打开查看分析

发布了96 篇原创文章 · 获赞 10 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/feifeiwuxian/article/details/85341976