繁体   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