类 XposedInterfaceWrapper
java.lang.Object
io.github.libxposed.api.XposedInterfaceWrapper
- 所有已实现的接口:
XposedInterface
- 直接已知子类:
XposedModule
对
XposedInterface 的封装,用于模块使用,以屏蔽框架实现的细节。-
嵌套类概要
从接口继承的嵌套类/接口 io.github.libxposed.api.XposedInterface
XposedInterface.Chain, XposedInterface.CtorInvoker<T>, XposedInterface.ExceptionMode, XposedInterface.HookBuilder, XposedInterface.Hooker, XposedInterface.HookHandle, XposedInterface.Invoker<T extends XposedInterface.Invoker<T,U>, U extends Executable> -
字段概要
从接口继承的字段 io.github.libxposed.api.XposedInterface
API_101, LIB_API, PRIORITY_DEFAULT, PRIORITY_HIGHEST, PRIORITY_LOWEST, PROP_CAP_REMOTE, PROP_CAP_SYSTEM, PROP_RT_API_PROTECTION -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明final void将框架接口绑定到模块。final booleandeoptimize(Executable executable) 对方法 / 构造函数进行去优化(deoptimize),用于解决由于内联优化导致 hook 失效的问题。final int获取运行时的 Xposed API 版本。final String获取当前实现的 Xposed 框架名称。final long获取 Xposed 框架的属性。final String获取当前实现的 Xposed 框架版本。final long获取当前实现的 Xposed 框架版本号(version code)。final <T> XposedInterface.CtorInvoker<T> getInvoker(Constructor<T> constructor) 获取指定构造函数的调用器(invoker)。final XposedInterface.Invoker<?, Method> getInvoker(Method method) 获取指定方法的调用器(invoker)。final ApplicationInfo获取该模块的应用信息。final SharedPreferencesgetRemotePreferences(String name) 获取存储在 Xposed 框架中的远程偏好设置。hook(Executable origin) Hook 一个方法 / 构造函数。hookClassInitializer(Class<?> origin) Hook 一个类的静态初始化方法(<clinit>)。final String[]列出模块共享数据目录中的所有文件。final void向 Xposed 日志中写入一条消息。final void向 Xposed 日志中写入一条消息。final ParcelFileDescriptoropenRemoteFile(String name) 打开模块共享数据目录中的文件。
-
构造器详细资料
-
XposedInterfaceWrapper
public XposedInterfaceWrapper()
-
-
方法详细资料
-
attachFramework
将框架接口绑定到模块。模块不应调用此方法。- 参数:
base- 框架接口
-
getApiVersion
public final int getApiVersion()从接口复制的说明:XposedInterface获取运行时的 Xposed API 版本。框架实现不得重写此方法。- 指定者:
getApiVersion在接口中XposedInterface
-
getFrameworkName
从接口复制的说明:XposedInterface获取当前实现的 Xposed 框架名称。- 指定者:
getFrameworkName在接口中XposedInterface
-
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
从接口复制的说明:XposedInterfaceHook 一个方法 / 构造函数。- 指定者:
hook在接口中XposedInterface- 参数:
origin- 要被 hook 的可执行对象- 返回:
- 用于构建 hook 的构建器
-
hookClassInitializer
从接口复制的说明:XposedInterfaceHook 一个类的静态初始化方法(<clinit>)。静态初始化方法会被当作一个普通的
static void()无参方法处理。 因此,在传递给 hooker 的XposedInterface.Chain中:XposedInterface.Chain.getExecutable()返回一个用于表示静态初始化方法的“合成”Method。XposedInterface.Chain.getThisObject()始终返回null。XposedInterface.Chain.getArgs()返回空列表。XposedInterface.Chain.proceed()返回null。
注意:如果该类已经完成初始化,则该 hook 永远不会被触发。
- 指定者:
hookClassInitializer在接口中XposedInterface- 参数:
origin- 要 hook 的目标类(其静态初始化方法)- 返回:
- 用于构建 hook 的构建器
-
deoptimize
从接口复制的说明:XposedInterface对方法 / 构造函数进行去优化(deoptimize),用于解决由于内联优化导致 hook 失效的问题。通过去优化该方法,运行时将回退到“不进行内联”的调用方式,从而确保所有被调用的方法都会以真实调用的形式执行。 例如,当方法 A 内联了一个较短的方法 B 时,即使你 hook 了 B,也可能不会触发回调。 这时可以对 A 进行去优化,使 A 必须通过真实调用方式调用 B,从而使 hook 生效。
通常情况下,你需要找到所有调用该方法(callee)的调用者,但这在实践中很难做到 (不过可以使用 DexKit 来搜索调用关系)。 建议仅在确定影响范围可控时使用该方法,否则更好的方案是调整 hook 点, 或者通过重新安装应用(不卸载直接覆盖安装)来整体触发去优化。
- 指定者:
deoptimize在接口中XposedInterface- 参数:
executable- 要进行去优化的方法 / 构造函数- 返回:
- 表示是否成功完成去优化操作
-
getInvoker
从接口复制的说明: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
从接口复制的说明:XposedInterface向 Xposed 日志中写入一条消息。- 指定者:
log在接口中XposedInterface- 参数:
priority- 日志优先级,请参见Logtag- 日志标签msg- 日志消息内容
-
log
public final void log(int priority, @Nullable String tag, @NonNull String msg, @Nullable Throwable tr) 从接口复制的说明:XposedInterface向 Xposed 日志中写入一条消息。- 指定者:
log在接口中XposedInterface- 参数:
priority- 日志优先级,请参见Logtag- 日志标签msg- 日志消息内容tr- 要记录的异常
-
getRemotePreferences
从接口复制的说明:XposedInterface获取存储在 Xposed 框架中的远程偏好设置。请注意,这些设置在已 Hook 的应用中是只读的。- 指定者:
getRemotePreferences在接口中XposedInterface- 参数:
name- 组名- 返回:
- 偏好设置
-
getModuleApplicationInfo
从接口复制的说明:XposedInterface获取该模块的应用信息。- 指定者:
getModuleApplicationInfo在接口中XposedInterface
-
listRemoteFiles
从接口复制的说明:XposedInterface列出模块共享数据目录中的所有文件。- 指定者:
listRemoteFiles在接口中XposedInterface- 返回:
- 文件列表
-
openRemoteFile
@NonNull public final ParcelFileDescriptor openRemoteFile(@NonNull String name) throws FileNotFoundException 从接口复制的说明:XposedInterface打开模块共享数据目录中的文件。该文件以只读模式打开。- 指定者:
openRemoteFile在接口中XposedInterface- 参数:
name- 文件名,不能包含路径分隔符以及 . 或 ..- 返回:
- 文件描述符
- 抛出:
FileNotFoundException- 如果文件不存在或路径被禁止
-