【问题标题】:How does Android Substrate work?Android Substrate 是如何工作的?
【发布时间】:2014-12-10 02:28:20
【问题描述】:

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

XposedAndroid 基板

a development tutorial 中描述了 Xposed 的机制。

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

我只是想知道:

Android Substrate 是如何工作的?

【问题讨论】:

    标签: java android hook code-injection cydia-substrate


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 2012-07-30
        • 2011-09-04
        • 2019-11-24
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        相关资源
        最近更新 更多