Java XPosed钩子类中的静态成员是否在进程之间共享?

Java XPosed钩子类中的静态成员是否在进程之间共享?,java,android,hook,instance,xposed-framework,Java,Android,Hook,Instance,Xposed Framework,我是Java新手,以下是我认为XPosed的工作原理: 在zygote_init之前,钩住所有api并在_xxx之前插入xposed_,在_xxx方法之后插入xposed_(其中xxx是api的名称) 加载模块。加载hook类,实现它并将其保存在受精卵的内存中。对于每个注入方法,将其添加到exposed_xxx之前/之后的私有列表中 当一个新的应用程序加载时(从受精卵分叉),它也分叉了钩子类和钩子方法 当一个应用程序调用xxx时,它实际上先运行xposed\u,然后再运行xxx,后者调用其私有列

我是Java新手,以下是我认为XPosed的工作原理:

  • 在zygote_init之前,钩住所有api并在_xxx之前插入xposed_,在_xxx方法之后插入xposed_(其中xxx是api的名称)
  • 加载模块。加载hook类,实现它并将其保存在受精卵的内存中。对于每个注入方法,将其添加到exposed_xxx之前/之后的私有列表中
  • 当一个新的应用程序加载时(从受精卵分叉),它也分叉了钩子类和钩子方法
  • 当一个应用程序调用xxx时,它实际上先运行xposed\u,然后再运行xxx,后者调用其私有列表中的每个注入方法。然后调用原始api。然后在调用_xxx之后exposed_,并处理自身的列表
  • 所以对于每个应用程序,钩子类是从合子分叉后的个体。因此,静态成员是不共享的。因为每个钩子类在应用程序中只有一个实例,静态成员的行为与非静态成员相同。我说得对吗


    感谢您阅读我的冗长而糟糕的英语…

    不,静态成员不会在进程之间共享。它们在应用程序中充当静态成员,而不是跨应用程序

    每个应用程序都在自己的VM上运行,因此进程之间不会共享任何内容

    同样适用于Xposed钩子,可以为一个应用程序钩住静态方法,而不为其他应用程序钩住静态方法

    即使您将模块设置为在所有应用程序上应用钩子,这些钩子也将是单独VM中的不同实例