Cydia Tweak
http://www.jianshu.com/p/8982e9670fc6
?
Cydia Substrate、MobileHooker
- MSHookMessageEx
- MSHookFunction
- MobileLoader
- Safe Mode
- Logos
下面進行一一說明
四、基本原理說明
1,Cydia Substrate 和 Mobile Substrate
* Cydia Substrate 原名為 Mobile Substrate 已經正式更名為 Cydia Substrate。
?
* 它是越獄后cydia插件/軟件運行的一個基礎依賴包。提供軟件運行的公共庫,可以用來動態替換
? 內存中的代碼、數據等所以iOS系統越獄環境下安裝絕大部分插件,必須首先安裝Cydia Substrate。
?
* Cydia Substrate主要由3部分組成:MobileHooker,MobileLoader 和 safe mode。
2,MobileHooker、Logos
* MobileHooker用于替換覆蓋系統的方法,這個過程被稱為Hooking(掛鉤)
* 它主要包含兩個函數:
void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP *result);
void MSHookFunction(void*function,void* replacement,void** p_original);
MSHookMessageEx 主要作用于Objective-C函數
MSHookFunction 主要作用于C和C++函數
Logos語法就是對此函數做了一層封裝,讓編寫hook代碼變的更直觀,上面的例子用的就是logos語法。
MSHookMessageEx 和MSHookFunction 使用方法這里就不介紹了,大家可去看書籍或者查詢相關資料。
3,MobileLoader
* MobileLoader用于加載第三方dylib在運行的應用程序中。
* 啟動時MobileLoader會根據dylib的同名plist文件指定的作用范圍,有選擇的在不同進程里通過dlopen函數打開目錄/Library/MobileSubstrate/DynamicLibraries/ 下的所有dylib。
4,safe mode
* 因為APP程序質量參差不齊崩潰再所難免,tweak本質是dylib,寄生在別人進程里,如果注入Springboard等。
? 系統進程一旦出錯,可能導致整個進程崩潰,崩潰后就會造成iOS癱瘓。
?
* 所以CydiaSubstrate引入了安全模式,在安全模
? 式下所有基于CydiaSubstratede 的三方dylib都會被禁用,便于查錯與修復。
?
* 本人建議自己測試的時候如果HOOK Springboard的時候一定要注意!如果出錯,進入安全模式刪除插件即可。
總結:
在我的理解就是:我們在Tweak.xm文件里用封裝后的logos語法編寫代碼(底層利用了MSHookMessageEx,MSHookFunction函數,使用 Object-C 的runtime特性發送了method_setImplementation消息)然后theos自動打包成dylib,上傳到/Library/MobileSubstrate/DynamicLibraries/里面后,重啟Springboard, 利用MobileLoader尋找目錄并根據dylib的同名plist文件加載里面的dylib動態庫,這時候當我們再打開APP后執行方法時,方法就被替換了。
總結
以上是生活随笔為你收集整理的Cydia Tweak的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机课程成绩认定管理办法,全日制普通本
- 下一篇: 支付宝身份认证初始化服务40004未知的