iOS系統(tǒng)動(dòng)態(tài)庫(kù)

iOS為了節(jié)省空間,將系統(tǒng)框架以動(dòng)態(tài)庫(kù)的形式,保存在dyld中,這樣每個(gè)app都能使用這些庫(kù).也不需要每個(gè)app中都包含這些庫(kù).只需要在使用時(shí)調(diào)用就行.這個(gè)手機(jī)中就保存了一份.大大節(jié)省了內(nèi)存.

系統(tǒng)動(dòng)態(tài)庫(kù)的位置

那系統(tǒng)動(dòng)態(tài)庫(kù)的存放位置在哪呢?
需要越獄后得手機(jī)能看到.
存放地址:/System/Library/Caches/com.apple.dyld/
通過(guò)funbox可以看到兩個(gè)動(dòng)態(tài)庫(kù)dyld_shared_cache_arm64dyld_shared_cache_armv7s

手機(jī)中動(dòng)態(tài)庫(kù)

動(dòng)態(tài)加載器dyld下載地址

蘋(píng)果官方源碼地址:dyld下載
一般來(lái)說(shuō)文件名數(shù)組越大,文件最大的就是最新的代碼.

下載源碼

修改源碼

1.可以使用dyld源碼中的launch-cache/dsc_extractor.cpp.將#if 0前面的代碼刪除(包括#if 0),把最后面的#endif也刪掉.


修改后的源碼

2.執(zhí)行命令生成dsc_extractor

$ clang++ -o dsc_extractor dsc_extractor.cpp
執(zhí)行后生成一個(gè)可執(zhí)行文件

3.用生成的可執(zhí)行文件分離系統(tǒng)庫(kù)

$ ./dsc_extractor  動(dòng)態(tài)庫(kù)共享緩存文件的路徑   用于存放抽取結(jié)果的文件夾
正在抽取動(dòng)態(tài)庫(kù)

抽取后動(dòng)態(tài)庫(kù)包含兩個(gè)文件夾:System和usr


UIKit

可以用Hopper或者machoView查看系統(tǒng)的mach-o文件.


UIDevice currentDevice偽代碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容