theos中的bug

1:theos中不能debug調(diào)試,只能通過log看中間信息

2:在tweak中 只要不存在logos的基本的語法錯誤 不存在未知類的鏈接錯誤 就不會報錯就是說 假設我在tweak里面hook一個根本沒有的類 根本沒有的函數(shù) theos也不會報錯

3:theos的插件沖突



決定theos是不同的插件 是由Package名來決定的 就是說 只要Package是相同的 則在cydia系統(tǒng)中會覆蓋前一個

而theos作用的范圍是由bundle id決定的 這個在之前的文章中有介紹

假設出現(xiàn)的三個theos插件 都對同一個bundle id的app作用

app是


從1~3 的theos tweak分別是


測試結(jié)果為


而且期間 無論按照怎么樣的次序去安裝這三個插件 出現(xiàn)的規(guī)律是這樣的:

假如在cydia上存在著多個插件 對同一個app的同一個函數(shù)均hook生效,則該函數(shù)最終生效的是cydia列表的最后一個插件,而且其他插件關(guān)于這個函數(shù) 均不產(chǎn)生作用


僅僅出現(xiàn)theos-3的log

但是在做短信監(jiān)測的時候


兩者SMSNjina和我寫的hook均對短信函數(shù)進行監(jiān)控 發(fā)現(xiàn)兩者都有調(diào)用··

這是SMSNjina的函數(shù)


這是我寫的hook短信監(jiān)測的函數(shù)


我發(fā)現(xiàn)之所以會產(chǎn)生這種情況 是因為函數(shù)里加了%orig

因此 我在前面測試的那三個里面都添加了%orig

測試結(jié)果如下:


得出結(jié)論如下

在多個theos插件對同一個app的同一個函數(shù)產(chǎn)生作用的時候

1:無論這些插件安裝的順序如何 對該函數(shù)產(chǎn)生效果的 始終是最后一個插件(在cydia中的順序)

2:hook是最終效果是替換,若其中一個插件無%orig復制前面的代碼過程,則log從此結(jié)束

3:不同的插件對同一個app的hook 每一個都是在編譯過程中的替換 而在實際運行過程中 只會運行那么多次替換的最終結(jié)果

因此 這個算是對上述現(xiàn)象的一個說明

所以即便是將我們的tweak安排在最后一個 也是沒有用的 只要前面的theos中


將%orig文件抹掉


則關(guān)于這個函數(shù) 就已然失效了 后面的smsnjina也失效了

所以需要解決的問題是:將我們的tweak放在最后面一個

然后在最后面寫入正確的邏輯 保證系統(tǒng)功能的正確性和完整性

測試tweak中的排序特點是


所以 接下來的目標是 獲取cydia中的最后的tweak

在創(chuàng)建我們的監(jiān)測tweak工程之后 動態(tài)的修改control文件里 的Name 使得我們的插件排到最后 進行監(jiān)控

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

相關(guān)閱讀更多精彩內(nèi)容

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