3

在 Android 世界中,有两种流行的注入/劫持/挂钩框架:

XposedAndroid 基板

Xposed 的机制在开发教程中有描述。

Android Substrate的作者在 FAQ这里比较了这两个框架,但他没有说明它是如何工作的。

我只是好奇:

Android Substrate 是如何工作的?

4

2 回答 2

3

Jay Freeman(Saurik) 在这篇文章 ( http://www.cydiasubstrate.com/id/34058d37-3198-414f-a696-73e97e0a80db/ ) 中谈到了 xposed 和基板的差异,还谈到了它们如何在方式上产生差异他们的工作很好读。

于 2015-03-04T20:01:31.620 回答
1

尽管这两个框架之间有很大的相似之处,但挂钩过程等的实际实现差异足以让您能够让两个框架并行运行。

但是,我可以看到 Substrate 优于 XPosed 的最大好处是,XPosed 删除了 Java 安全模型,而 Substrate 保留了它,并且能够在挂钩方法之前等待加载类,如所述在@xmllmx 的以下关于“正交性”的回答中引用;

为了使这更容易,Xposed 为常见用例提供了一组帮助程序:您可以在 VM 启动、Zygote 控制、加载特定包或执行命令行应用程序时挂钩。您需要知道要使用其中的哪一个,并且仍然不清楚如何挂钩通过动态运行时创建的类加载器加载的类(例如针对下载的代码)。

相反,Substrate 消除了所有这些,这要归功于 MS.hookClassLoad,它提供的 API 允许您随时等待从任何类加载器加载特定类。这允许您以一种不易更改的方式编写钩子,不易出现简单错误,并且较少受目标应用程序的开发人员决定加载其程序代码的方式的限制。

总之,无论如何,在我看来,这两个框架都是非常相似的,并且都是实现相同目标的可行选择。将它们分开的唯一主要权衡因素是每个发布时间之间的时间刻度。XPosed 已经存在了更长的时间,并且在 XPosed 的发布和用于 Android 的 Cydia Substrate 的发布之间的过渡期间经过了试验和测试,并通过了它的步伐,Jay Freeman (Saurik)公开承认这一点

无论如何,Cydia Substrate 是 XPosed 的强大且极其可行的替代品。此外,您不必仅限于为其中一个框架进行开发,因为(如前所述)这两个框架都可以安装在您的设备上而不会发生冲突,因此为两者开发或简单地尝试它绝不会阻碍您不再使用当前安装的 XPosed 模块、包或扩展。

于 2015-04-10T08:29:32.657 回答