美文网首页
11_动态库共享缓存(dyld shared cache)

11_动态库共享缓存(dyld shared cache)

作者: 伶俐ll | 来源:发表于2020-08-04 17:15 被阅读0次
    • 从iOS3.1开始,为了提高性能,绝大部分的系统动态库文件都打包存放到了一个缓存文件中(dyld shared cache)
    • 缓存文件路径:/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX
    • (X所代表的是当前设备CPU所支持的指令集架构)
    • 现在的ida、Hopper反编译工具都可以识别动态库共享缓存
    • 动态库共享缓存一个非常明显的好处是节省内存


      Snip20200804_3.png

    动态库的加载

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

    • dynamic link editor,动态链接编辑器
    • dynamic loader,动态加载器

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

    提取动态库

    1、首先要将设备里的/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX文件拷贝到本机。
    2、下载dyld源码
    3、修改dyld源码中的aunch-cache/dsc_extractor.cpp文件,将#if预处理指令的条件判断0改为1。
    4、执行下面命令编译dsc_extractor.cpp文件
    clang++ -o dsc_extractor dsc_extractor.cpp
    5、运行dsc_extractor开始提取动态库
    ./dsc_extractor 动态库共享缓存文件的路径 用于存放抽取结果的文件夹

    相关文章

      网友评论

          本文标题:11_动态库共享缓存(dyld shared cache)

          本文链接:https://www.haomeiwen.com/subject/ghfwrktx.html