簡體   English   中英

Android Substrate如何工作?

[英]How does Android Substrate work?

在Android世界中,有兩種流行的注入/劫持/掛鈎框架:

XposedAndroid Substrate

Xposed的機制在開發教程中進行描述。

Android Substrate的作者在FAQ此處比較了這兩個框架,但他沒有說明它是如何工作的。

我只是好奇:

Android Substrate如何工作?

Jay Freeman(Saurik)在這篇文章中( http://www.cydiasubstrate.com/id/34058d37-3198-414f-a696-73e97e0a80db/ )討論了xposed和substrate的差異,還討論了它們如何影響方式他們的作品讀起來很棒。

盡管這兩個框架之間的相似之處很大,但是掛鈎過程的實際實現等差異足以使兩個框架並排運行。

但是,與XPosed相比,我可以看到Substrate的最大好處是,XPosed刪除了Java安全模型,而Substrate保留了該模型,並具有在掛接方法之前等待類加載的能力。在以下來自@xmllmx答案的引用中,涉及“ 正交性 ”;

為了簡化操作,Xposed提供了一組用於常見用例的幫助程序:您可以在VM啟動時,Zygote進行控制時,在加載特定程序包時或在執行命令行應用程序時進行掛接。 您需要知道要使用其中的哪個,並且仍不清楚如何掛接通過動態運行時創建的類加載器加載的類(例如針對已下載的代碼)。

相反,借助MS.hookClassLoad,Substrate消除了所有這些麻煩,它提供的API使您可以隨時等待從任何類加載器加載特定的類。 這樣,您就可以編寫鈎子,這種鈎子對更改的脆性較小,不容易發生簡單的錯誤,並且不受目標應用程序開發人員決定加載其程序代碼的方式的限制。

總之,我認為無論如何,這兩個框架在實現同一目標方面都是非常相似且可行的選擇。 唯一將它們分開的主要事實是每一個被發布的時間間隔。 XPosed已經存在了很長時間,並且已經過嘗試和測試,並在XPosed發行與Android Cydia Substrate發行之間的過渡中邁出了步伐,Jay Freeman(Saurik) 公開承認

無論如何,Cydia Substrate是XPosed的強大且極其可行的替代方案。 此外,您不必只局限於為這些框架之一開發,因為(如前所述)這兩個框架都可以無沖突地安裝在您的設備上,因此為這兩個框架進行開發或只是嘗試就不會有任何障礙。您無需使用當前安裝的XPosed模塊,軟件包或擴展程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM