2014-12-27 23 views

回答

1

調整是一個dylib - 它將在一個進程中加載​​。該過程可能具有權利,這些權利將用於調整。而已。調整沒有它自己的權利。

至於你的問題。由於我之前說過,你不能僅僅限制一項調整 - 你的限制將被應用到正在被調整的整個過程中。你無法做任何事情。這就是如何調整的 - 它們是動態加載到進程地址空間的dylib。之後,調整成爲過程的一部分。因此,任何限制都將應用於包括調整,應用程序代碼和任何其他dylib/framework應用程序鏈接到的整個過程。

所以,如果你想開發一個應用程序,它將幫助用戶限制調整,我不認爲你可以做這樣的事情。你可以做的是分析哪些應用程序正在調整,他們擁有什麼權利,調整使用什麼框架和dylib(主要是私人應用程序)。並從該用戶可以啓用或禁用該調整。你甚至可以分析調整的導入部分和字符串文字,以確定它使用哪些API。

更新

如何機進程與 的調整進程空間內被加載之前進行通信,能否請你解釋一下?

它沒有。在注入調整之前是一個單獨的dylib,它沒有鏈接到任何二進制文件。 CydiaSubstrate完成所有注入。 CydiaSubstrate的主要部分是一個特殊的加載器dylib。它與設備啓動時的launchd進程動態鏈接到啓動所有其他進程的iOS中第一個進程的進程。當一個新的進程產生時,CydiaSubstrate加載器dylib檢查所有的調整過濾器,看看哪些需要注入進程並注入它們。之後,調整加載到進程地址空間(成爲進程的一部分)和調整的構造函數被調用的地方通常所有的掛鉤正在設置。

你能向我解釋這是如何完成的嗎?

假設您有一個objc類名稱,C/C++函數,框架和dylibs數組作爲您希望檢測的字符串用法。有簡單的解決方案。你可以打開調整的文件,只是搜索它的任何比賽。由於調整通常不是很大,所以不需要太多時間。而且還有更難解決的問題。使用dyld或任何其他API來解析mach-o部分以查找導入的符號和字符串文字,然後在其中搜索任何匹配項。

+0

謝謝,請閱讀我的回覆下面我達到了字符限制(: – user4397138

0

我不確定這是否會從用戶那邊回答您的問題,但如果您正在進行調整,則可以將XXX_CODESIGN_FLAGS = -Sentitlements.xml添加到您的Makefile以添加entitlements.xml中描述的權利。

+0

謝謝,是否可以實現更新一組預製權利的腳本;自動(當安裝新的調整時)或通過終端手動說出;通過選擇軟件包並修補Makefile以包含'xx said'規則。 – user4397138

相關問題