类 XposedInterfaceWrapper

java.lang.Object
io.github.libxposed.api.XposedInterfaceWrapper
所有已实现的接口:
XposedInterface
直接已知子类:
XposedModule

public class XposedInterfaceWrapper extends Object implements XposedInterface
XposedInterface 的封装,用于模块使用,以屏蔽框架实现的细节。
  • 构造器详细资料

    • XposedInterfaceWrapper

      public XposedInterfaceWrapper()
  • 方法详细资料

    • attachFramework

      public final void attachFramework(@NonNull XposedInterface base)
      将框架接口绑定到模块。模块不应调用此方法。
      参数:
      base - 框架接口
    • getApiVersion

      public final int getApiVersion()
      从接口复制的说明: XposedInterface
      获取运行时的 Xposed API 版本。框架实现不得重写此方法。
      指定者:
      getApiVersion 在接口中 XposedInterface
    • getFrameworkName

      @NonNull public final String getFrameworkName()
      从接口复制的说明: XposedInterface
      获取当前实现的 Xposed 框架名称。
      指定者:
      getFrameworkName 在接口中 XposedInterface
    • getFrameworkVersion

      @NonNull public final String getFrameworkVersion()
      从接口复制的说明: XposedInterface
      获取当前实现的 Xposed 框架版本。
      指定者:
      getFrameworkVersion 在接口中 XposedInterface
    • getFrameworkVersionCode

      public final long getFrameworkVersionCode()
      从接口复制的说明: XposedInterface
      获取当前实现的 Xposed 框架版本号(version code)。
      指定者:
      getFrameworkVersionCode 在接口中 XposedInterface
    • getFrameworkProperties

      public final long getFrameworkProperties()
      从接口复制的说明: XposedInterface
      获取 Xposed 框架的属性。 带有前缀 PROP_RT_ 的属性可能会在不同的启动之间发生变化。
      指定者:
      getFrameworkProperties 在接口中 XposedInterface
    • hook

      @NonNull public final XposedInterface.HookBuilder hook(@NonNull Executable origin)
      从接口复制的说明: XposedInterface
      Hook 一个方法 / 构造函数。
      指定者:
      hook 在接口中 XposedInterface
      参数:
      origin - 要被 hook 的可执行对象
      返回:
      用于构建 hook 的构建器
    • hookClassInitializer

      @NonNull public final XposedInterface.HookBuilder hookClassInitializer(@NonNull Class<?> origin)
      从接口复制的说明: XposedInterface
      Hook 一个类的静态初始化方法(<clinit>)。

      静态初始化方法会被当作一个普通的 static void() 无参方法处理。 因此,在传递给 hooker 的 XposedInterface.Chain 中:

      注意:如果该类已经完成初始化,则该 hook 永远不会被触发。

      指定者:
      hookClassInitializer 在接口中 XposedInterface
      参数:
      origin - 要 hook 的目标类(其静态初始化方法)
      返回:
      用于构建 hook 的构建器
    • deoptimize

      public final boolean deoptimize(@NonNull Executable executable)
      从接口复制的说明: XposedInterface
      对方法 / 构造函数进行去优化(deoptimize),用于解决由于内联优化导致 hook 失效的问题。

      通过去优化该方法,运行时将回退到“不进行内联”的调用方式,从而确保所有被调用的方法都会以真实调用的形式执行。 例如,当方法 A 内联了一个较短的方法 B 时,即使你 hook 了 B,也可能不会触发回调。 这时可以对 A 进行去优化,使 A 必须通过真实调用方式调用 B,从而使 hook 生效。

      通常情况下,你需要找到所有调用该方法(callee)的调用者,但这在实践中很难做到 (不过可以使用 DexKit 来搜索调用关系)。 建议仅在确定影响范围可控时使用该方法,否则更好的方案是调整 hook 点, 或者通过重新安装应用(不卸载直接覆盖安装)来整体触发去优化。

      指定者:
      deoptimize 在接口中 XposedInterface
      参数:
      executable - 要进行去优化的方法 / 构造函数
      返回:
      表示是否成功完成去优化操作
    • getInvoker

      @NonNull public final XposedInterface.Invoker<?,Method> getInvoker(@NonNull Method method)
      从接口复制的说明: XposedInterface
      获取指定方法的调用器(invoker)。通过该调用器进行的方法调用将绕过访问权限检查。 默认的调用器类型为 XposedInterface.Invoker.Type.Chain.FULL
      指定者:
      getInvoker 在接口中 XposedInterface
      参数:
      method - 要获取调用器的目标方法
      返回:
      该方法的调用器
    • getInvoker

      @NonNull public final <T> XposedInterface.CtorInvoker<T> getInvoker(@NonNull Constructor<T> constructor)
      从接口复制的说明: XposedInterface
      获取指定构造函数的调用器(invoker)。通过该调用器进行的调用将绕过访问权限检查。 默认的调用器类型为 XposedInterface.Invoker.Type.Chain.FULL
      指定者:
      getInvoker 在接口中 XposedInterface
      类型参数:
      T - 构造函数对应的类型
      参数:
      constructor - 要获取调用器的构造函数
      返回:
      该构造函数的调用器
    • log

      public final void log(int priority, @Nullable String tag, @NonNull String msg)
      从接口复制的说明: XposedInterface
      向 Xposed 日志中写入一条消息。
      指定者:
      log 在接口中 XposedInterface
      参数:
      priority - 日志优先级,请参见 Log
      tag - 日志标签
      msg - 日志消息内容
    • log

      public final void log(int priority, @Nullable String tag, @NonNull String msg, @Nullable Throwable tr)
      从接口复制的说明: XposedInterface
      向 Xposed 日志中写入一条消息。
      指定者:
      log 在接口中 XposedInterface
      参数:
      priority - 日志优先级,请参见 Log
      tag - 日志标签
      msg - 日志消息内容
      tr - 要记录的异常
    • getRemotePreferences

      @NonNull public final SharedPreferences getRemotePreferences(@NonNull String name)
      从接口复制的说明: XposedInterface
      获取存储在 Xposed 框架中的远程偏好设置。请注意,这些设置在已 Hook 的应用中是只读的。
      指定者:
      getRemotePreferences 在接口中 XposedInterface
      参数:
      name - 组名
      返回:
      偏好设置
    • getModuleApplicationInfo

      @NonNull public final ApplicationInfo getModuleApplicationInfo()
      从接口复制的说明: XposedInterface
      获取该模块的应用信息。
      指定者:
      getModuleApplicationInfo 在接口中 XposedInterface
    • listRemoteFiles

      @NonNull public final String[] listRemoteFiles()
      从接口复制的说明: XposedInterface
      列出模块共享数据目录中的所有文件。
      指定者:
      listRemoteFiles 在接口中 XposedInterface
      返回:
      文件列表
    • openRemoteFile

      @NonNull public final ParcelFileDescriptor openRemoteFile(@NonNull String name) throws FileNotFoundException
      从接口复制的说明: XposedInterface
      打开模块共享数据目录中的文件。该文件以只读模式打开。
      指定者:
      openRemoteFile 在接口中 XposedInterface
      参数:
      name - 文件名,不能包含路径分隔符以及 . 或 ..
      返回:
      文件描述符
      抛出:
      FileNotFoundException - 如果文件不存在或路径被禁止