Package-level declarations

Types

Link copied to clipboard
typealias ChainInterceptor = XposedInterface.Chain.() -> Any?

intercept 阶段使用的 libxposed chain 回调。

Link copied to clipboard
typealias HookBlock = HookParam.() -> Unit

before / after 阶段使用的 Kotlin 回调。

Link copied to clipboard
typealias HookCallback = (HookParam) -> Unit

Hook 回调签名。

Link copied to clipboard

libxposed 102 hook DSL 构造器。

Link copied to clipboard
typealias ReplaceHookBlock = HookParam.() -> Any?

replace 阶段使用的 Kotlin 回调。

Properties

Link copied to clipboard
val XposedInterface.HookHandle.id: String?

当前 hook 的底层 hook ID。

Functions

Link copied to clipboard

读取附加到实例上的字段。

Link copied to clipboard

读取附加到实例上的字段并转为指定类型。

Link copied to clipboard

读取附加到类上的静态字段。

fun String.additionalStaticField(key: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): Any?

按类名读取附加静态字段。

Link copied to clipboard

读取附加到类上的静态字段并转为指定类型。

fun <T> String.additionalStaticFieldAs(key: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): T?

按类名读取附加静态字段并转为指定类型。

Link copied to clipboard
fun afterHook(block: HookBlock): HookFactory.() -> Unit

创建 after 阶段声明块。

Link copied to clipboard
fun Class<*>.afterHookConstructor(vararg argTypes: Class<*>, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为指定类的全部构造器批量创建 after hook。

fun String.afterHookConstructor(vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

按类名为全部构造器批量创建 after hook。

Link copied to clipboard
fun Class<*>.afterHookMethod(methodName: String, vararg argTypes: Class<*>, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为指定类中同名的全部方法批量创建 after hook。

fun String.afterHookMethod(methodName: String, vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

按类名为同名的全部方法批量创建 after hook。

Link copied to clipboard

创建 before 阶段声明块。

Link copied to clipboard
fun Class<*>.beforeHookConstructor(vararg argTypes: Class<*>, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为指定类的全部构造器批量创建 before hook。

fun String.beforeHookConstructor(vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

按类名为全部构造器批量创建 before hook。

Link copied to clipboard
fun Class<*>.beforeHookMethod(methodName: String, vararg argTypes: Class<*>, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为指定类中同名的全部方法批量创建 before hook。

fun String.beforeHookMethod(methodName: String, vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

按类名为同名的全部方法批量创建 before hook。

Link copied to clipboard
fun Constructor<*>.createAfterHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Constructor 创建 after hook。

fun Method.createAfterHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Method 创建 after hook。

fun Constructor<*>.createAfterHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Constructor 创建带稳定 reloadKey 的 after hook。

fun Method.createAfterHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Method 创建带稳定 reloadKey 的 after hook。

Link copied to clipboard
@JvmName(name = "createConstructorAfterHooksByIterable")
fun Iterable<Constructor<*>>.createAfterHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为构造器列表批量创建 after hook。

@JvmName(name = "createMethodAfterHooksByIterable")
fun Iterable<Method>.createAfterHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为方法列表批量创建 after hook。

Link copied to clipboard
fun Constructor<*>.createBeforeHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Constructor 创建 before hook。

fun Method.createBeforeHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Method 创建 before hook。

fun Constructor<*>.createBeforeHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Constructor 创建带稳定 reloadKey 的 before hook。

fun Method.createBeforeHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): XposedInterface.HookHandle

Method 创建带稳定 reloadKey 的 before hook。

Link copied to clipboard
@JvmName(name = "createConstructorBeforeHooksByIterable")
fun Iterable<Constructor<*>>.createBeforeHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为构造器列表批量创建 before hook。

@JvmName(name = "createMethodBeforeHooksByIterable")
fun Iterable<Method>.createBeforeHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Unit): List<XposedInterface.HookHandle>

为方法列表批量创建 before hook。

Link copied to clipboard
fun Constructor<*>.createHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): XposedInterface.HookHandle

Constructor 创建 hook。

fun Method.createHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): XposedInterface.HookHandle

Method 创建 hook。

Link copied to clipboard
@JvmName(name = "createConstructorHooksByIterable")
fun Iterable<Constructor<*>>.createHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): List<XposedInterface.HookHandle>

为构造器列表批量创建 hook。

@JvmName(name = "createMethodHooksByIterable")
fun Iterable<Method>.createHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): List<XposedInterface.HookHandle>

为方法列表批量创建 hook。

Link copied to clipboard
fun Constructor<*>.createInterceptHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): XposedInterface.HookHandle

Constructor 创建 intercept hook。

fun Method.createInterceptHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): XposedInterface.HookHandle

Method 创建 intercept hook。

fun Constructor<*>.createInterceptHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): XposedInterface.HookHandle

Constructor 创建带稳定 reloadKey 的 intercept hook。

fun Method.createInterceptHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): XposedInterface.HookHandle

Method 创建带稳定 reloadKey 的 intercept hook。

Link copied to clipboard
@JvmName(name = "createConstructorInterceptHooksByIterable")
fun Iterable<Constructor<*>>.createInterceptHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): List<XposedInterface.HookHandle>

为构造器列表批量创建 intercept hook。

@JvmName(name = "createMethodInterceptHooksByIterable")
fun Iterable<Method>.createInterceptHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): List<XposedInterface.HookHandle>

为方法列表批量创建 intercept hook。

Link copied to clipboard
fun Constructor<*>.createReplaceHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): XposedInterface.HookHandle

Constructor 创建 replace hook。

fun Method.createReplaceHook(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): XposedInterface.HookHandle

Method 创建 replace hook。

fun Constructor<*>.createReplaceHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): XposedInterface.HookHandle

Constructor 创建带稳定 reloadKey 的 replace hook。

fun Method.createReplaceHook(key: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): XposedInterface.HookHandle

Method 创建带稳定 reloadKey 的 replace hook。

Link copied to clipboard
@JvmName(name = "createConstructorReplaceHooksByIterable")
fun Iterable<Constructor<*>>.createReplaceHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): List<XposedInterface.HookHandle>

为构造器列表批量创建 replace hook。

@JvmName(name = "createMethodReplaceHooksByIterable")
fun Iterable<Method>.createReplaceHooks(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): List<XposedInterface.HookHandle>

为方法列表批量创建 replace hook。

Link copied to clipboard
fun Method.createReturnConstantHook(value: Any?, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT): XposedInterface.HookHandle

Method 直接返回固定值。

fun Method.createReturnConstantHook(key: String, value: Any?, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT): XposedInterface.HookHandle

Method 创建带稳定 reloadKey 的固定返回值 hook。

Link copied to clipboard
fun Any.fieldRef(fieldName: String, type: Class<*>? = null): Field

获取实例字段引用。

Link copied to clipboard
fun Any.fieldRefOrNull(fieldName: String, type: Class<*>? = null): Field?

获取实例字段引用,找不到时返回 null

Link copied to clipboard
fun Any.fieldValue(fieldName: String, type: Class<*>? = null): Any?

读取实例字段值。

Link copied to clipboard
fun <T> Any.fieldValueAs(fieldName: String, type: Class<*>? = null): T?

读取实例字段值并转为指定类型。

Link copied to clipboard
fun Any.fieldValueByType(type: Class<*>, isStatic: Boolean = false): Any?

按字段类型读取字段值。

Link copied to clipboard
fun <T> Any.fieldValueByTypeAs(type: Class<*>, isStatic: Boolean = false): T?

按字段类型读取字段值并转为指定类型。

Link copied to clipboard
fun Any.fieldValueByTypeOrNull(type: Class<*>, isStatic: Boolean = false): Any?

按字段类型读取字段值,失败时返回 null

Link copied to clipboard
fun <T> Any.fieldValueByTypeOrNullAs(type: Class<*>, isStatic: Boolean = false): T?

按字段类型读取字段值并转为指定类型,失败时返回 null

Link copied to clipboard
fun Any.fieldValueOrNull(fieldName: String, type: Class<*>? = null): Any?

读取实例字段值,失败时返回 null

Link copied to clipboard
fun <T> Any.fieldValueOrNullAs(fieldName: String, type: Class<*>? = null): T?

读取实例字段值并转为指定类型,失败时返回 null

Link copied to clipboard
fun String.findAllFields(classLoader: ClassLoader = HookClassLoader.currentOrDefault(), findSuper: Boolean? = null): List<Field>

按类名列出字段。

fun String.findAllFields(classLoader: ClassLoader = HookClassLoader.currentOrDefault(), findSuper: Boolean? = null, query: FieldQuery.() -> Unit): List<Field>

按类名查找全部匹配字段。

Link copied to clipboard
fun Class<*>.findField(name: String, type: Class<*>? = null): Field

按名称查找实例字段。

fun String.findField(classLoader: ClassLoader = HookClassLoader.currentOrDefault(), findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field

按类名查找字段。

fun String.findField(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null): Field

按类名和字段名查找实例字段。

Link copied to clipboard
fun Class<*>.findFieldByExactType(type: Class<*>, findSuper: Boolean? = null): Field

按精确字段类型查找字段。

Link copied to clipboard
fun Class<*>.findFieldByType(type: Class<*>, findSuper: Boolean? = null): Field

按字段类型查找字段。

Link copied to clipboard
fun Class<*>.findFieldByTypeOrNull(type: Class<*>, findSuper: Boolean? = null): Field?

按字段类型查找字段,找不到时返回 null

Link copied to clipboard
fun Class<*>.findFieldOrNull(name: String, type: Class<*>? = null): Field?

按名称查找实例字段,找不到时返回 null

fun String.findFieldOrNull(classLoader: ClassLoader = HookClassLoader.currentOrDefault(), findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field?

按类名查找字段,找不到时返回 null

fun String.findFieldOrNull(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null): Field?

按类名和字段名查找实例字段,找不到时返回 null

Link copied to clipboard
fun Class<*>.findFirstFieldByExactType(type: Class<*>, findSuper: Boolean? = null): Field

按精确字段类型查找第一个字段。

Link copied to clipboard
fun Class<*>.findFirstFieldByExactTypeOrNull(type: Class<*>, findSuper: Boolean? = null): Field?

按精确字段类型查找第一个字段,找不到时返回 null

Link copied to clipboard
fun Class<*>.findStaticField(name: String, type: Class<*>? = null): Field

按名称查找静态字段。

fun String.findStaticField(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null): Field

按类名和字段名查找静态字段。

Link copied to clipboard
fun Class<*>.findStaticFieldOrNull(name: String, type: Class<*>? = null): Field?

按名称查找静态字段,找不到时返回 null

fun String.findStaticFieldOrNull(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null): Field?

按类名和字段名查找静态字段,找不到时返回 null

Link copied to clipboard

读取附加到实例上的字段。

Link copied to clipboard

读取附加到实例上的字段并转为指定类型。

Link copied to clipboard

读取附加到类上的静态字段。

fun String.getAdditionalStaticField(field: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): Any?

按类名读取附加静态字段。

Link copied to clipboard

读取附加到类上的静态字段并转为指定类型。

fun <T> String.getAdditionalStaticFieldAs(field: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): T?

按类名读取附加静态字段并转为指定类型。

Link copied to clipboard

读取实例 Boolean 字段。

Link copied to clipboard

读取实例 Boolean 字段,失败时返回 null

Link copied to clipboard
fun Any.getByteField(fieldName: String): Byte

读取实例 Byte 字段。

Link copied to clipboard
fun Any.getByteFieldOrNull(fieldName: String): Byte?

读取实例 Byte 字段,失败时返回 null

Link copied to clipboard
fun Any.getCharField(fieldName: String): Char

读取实例 Char 字段。

Link copied to clipboard
fun Any.getCharFieldOrNull(fieldName: String): Char?

读取实例 Char 字段,失败时返回 null

Link copied to clipboard
fun Any.getDoubleField(fieldName: String): Double

读取实例 Double 字段。

Link copied to clipboard

读取实例 Double 字段,失败时返回 null

Link copied to clipboard

读取第一个指定精确类型的实例字段值。

Link copied to clipboard

读取第一个指定精确类型的实例字段值并转为指定类型。

Link copied to clipboard
fun Any.getFloatField(fieldName: String): Float

读取实例 Float 字段。

Link copied to clipboard

读取实例 Float 字段,失败时返回 null

Link copied to clipboard
fun Any.getIntField(fieldName: String): Int

读取实例 Int 字段。

Link copied to clipboard
fun Any.getIntFieldOrNull(fieldName: String): Int?

读取实例 Int 字段,失败时返回 null

Link copied to clipboard
fun Any.getLongField(fieldName: String): Long

读取实例 Long 字段。

Link copied to clipboard
fun Any.getLongFieldOrNull(fieldName: String): Long?

读取实例 Long 字段,失败时返回 null

Link copied to clipboard
fun Any.getObjectField(fieldName: String): Any?

读取对象字段。按类层级读取最近的同名字段,以兼容旧版静态字段访问。

Link copied to clipboard
fun <T> Any.getObjectFieldAs(fieldName: String): T

读取对象字段并转为指定类型。

Link copied to clipboard

读取对象字段,找不到时返回 null;实例字段值为 null 时不回退。

Link copied to clipboard
fun <T> Any.getObjectFieldOrNullAs(fieldName: String): T?

读取对象字段并转为指定类型,失败时返回 null

Link copied to clipboard
fun Any.getShortField(fieldName: String): Short

读取实例 Short 字段。

Link copied to clipboard

读取实例 Short 字段,失败时返回 null

Link copied to clipboard

读取静态 Boolean 字段。

Link copied to clipboard

读取静态 Boolean 字段,失败时返回 null

Link copied to clipboard
fun Class<*>.getStaticByteField(fieldName: String): Byte

读取静态 Byte 字段。

Link copied to clipboard

读取静态 Byte 字段,失败时返回 null

Link copied to clipboard
fun Class<*>.getStaticCharField(fieldName: String): Char

读取静态 Char 字段。

Link copied to clipboard

读取静态 Char 字段,失败时返回 null

Link copied to clipboard

读取静态 Double 字段。

Link copied to clipboard

读取静态 Double 字段,失败时返回 null

Link copied to clipboard

读取静态 Float 字段。

Link copied to clipboard

读取静态 Float 字段,失败时返回 null

Link copied to clipboard
fun Class<*>.getStaticIntField(fieldName: String): Int

读取静态 Int 字段。

Link copied to clipboard

读取静态 Int 字段,失败时返回 null

Link copied to clipboard
fun Class<*>.getStaticLongField(fieldName: String): Long

读取静态 Long 字段。

Link copied to clipboard

读取静态 Long 字段,失败时返回 null

Link copied to clipboard
fun Class<*>.getStaticObjectField(fieldName: String): Any?

读取静态字段。

fun String.getStaticObjectField(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): Any?

按类名读取静态字段。

Link copied to clipboard
fun <T> Class<*>.getStaticObjectFieldAs(fieldName: String): T

读取静态字段并转为指定类型。

fun <T> String.getStaticObjectFieldAs(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): T

按类名读取静态字段并转为指定类型。

Link copied to clipboard

读取静态字段并转为指定类型,失败时返回 null

fun <T> String.getStaticObjectFieldAsOrNull(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): T?

按类名读取静态字段并转为指定类型,失败时返回 null

Link copied to clipboard

读取静态字段,失败时返回 null

fun String.getStaticObjectFieldOrNull(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): Any?

按类名读取静态字段,失败时返回 null

Link copied to clipboard

读取静态 Short 字段。

Link copied to clipboard

读取静态 Short 字段,失败时返回 null

Link copied to clipboard
fun getValueByField(target: Any, fieldName: String, clazz: Class<*>? = null): Any?

递归读取实例字段。

Link copied to clipboard
fun List<XposedInterface.HookHandle>.groupById(): Map<String?, List<XposedInterface.HookHandle>>

把旧 hook handle 按底层 hook ID 分桶。

Link copied to clipboard
fun Class<*>.hookAllConstructors(priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): List<XposedInterface.HookHandle>

为指定类的全部构造器批量创建 hook。

fun String.hookAllConstructors(classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): List<XposedInterface.HookHandle>

按类名为全部构造器批量创建 hook。

Link copied to clipboard
fun Class<*>.hookAllMethods(methodName: String, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): List<XposedInterface.HookHandle>

为指定类中同名的全部方法批量创建 hook。

fun String.hookAllMethods(methodName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, block: HookFactory.() -> Unit): List<XposedInterface.HookHandle>

按类名为同名的全部方法批量创建 hook。

Link copied to clipboard
fun Class<*>.interceptHookConstructor(vararg argTypes: Class<*>, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): List<XposedInterface.HookHandle>

为指定类的全部构造器批量创建 intercept hook。

fun String.interceptHookConstructor(vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): List<XposedInterface.HookHandle>

按类名为全部构造器批量创建 intercept hook。

Link copied to clipboard
fun Class<*>.interceptHookMethod(methodName: String, vararg argTypes: Class<*>, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): List<XposedInterface.HookHandle>

为指定类中同名的全部方法批量创建 intercept hook。

fun String.interceptHookMethod(methodName: String, vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (XposedInterface.Chain) -> Any?): List<XposedInterface.HookHandle>

按类名为同名的全部方法批量创建 intercept hook。

Link copied to clipboard

移除附加到实例上的字段。

Link copied to clipboard

移除附加到实例上的字段。

Link copied to clipboard

移除附加到类上的静态字段。

fun String.removeAdditionalStaticField(field: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): Any?

按类名移除附加静态字段。

Link copied to clipboard
@RequiresXposedApi(value = 102)
fun List<XposedInterface.HookHandle>.replaceAll(hooker: XposedInterface.Hooker): List<XposedInterface.HookHandle>

用同一个 XposedInterface.Hooker 逐个原子替换旧 handle,返回新 handle 列表。

Link copied to clipboard

创建 replace 阶段声明块。

Link copied to clipboard
fun Class<*>.replaceHookConstructor(vararg argTypes: Class<*>, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): List<XposedInterface.HookHandle>

为指定类的全部构造器批量创建 replace hook。

fun String.replaceHookConstructor(vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): List<XposedInterface.HookHandle>

按类名为全部构造器批量创建 replace hook。

Link copied to clipboard
fun Class<*>.replaceHookMethod(methodName: String, vararg argTypes: Class<*>, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): List<XposedInterface.HookHandle>

为指定类中同名的全部方法批量创建 replace hook。

fun String.replaceHookMethod(methodName: String, vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT, callback: (HookParam) -> Any?): List<XposedInterface.HookHandle>

按类名为同名的全部方法批量创建 replace hook。

Link copied to clipboard
@RequiresXposedApi(value = 102)
fun XposedInterface.HookHandle.replaceIntercept(callback: (XposedInterface.Chain) -> Any?): XposedInterface.HookHandle

用一个 intercept 风格的 lambda 原子替换当前 hook,返回新 handle。

Link copied to clipboard
@RequiresXposedApi(value = 102)
fun XposedInterface.HookHandle.replaceWith(callback: (HookParam) -> Any?): XposedInterface.HookHandle

用一个 replace 风格的 lambda 原子替换当前 hook,返回新 handle。

Link copied to clipboard
fun Class<*>.returnConstantHookMethod(methodName: String, value: Any?, vararg argTypes: Class<*>, priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT): List<XposedInterface.HookHandle>

让指定类中同名的全部方法直接返回固定值。

fun String.returnConstantHookMethod(methodName: String, value: Any?, vararg argTypes: Class<*>, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), priority: Int = XposedInterface.PRIORITY_DEFAULT, exceptionMode: XposedInterface.ExceptionMode = XposedInterface.ExceptionMode.DEFAULT): List<XposedInterface.HookHandle>

让指定类名中同名的全部方法直接返回固定值。

Link copied to clipboard
fun Any.setAdditionalField(key: String, value: Any?): Any?

写入附加到实例上的字段。

Link copied to clipboard

写入附加到实例上的字段。

Link copied to clipboard
fun Class<*>.setAdditionalStaticField(field: String, value: Any?): Any?

写入附加到类上的静态字段。

fun String.setAdditionalStaticField(field: String, value: Any?, classLoader: ClassLoader = HookClassLoader.currentOrDefault()): Any?

按类名写入附加静态字段。

Link copied to clipboard
fun Any.setBooleanField(fieldName: String, value: Boolean)

写入实例 Boolean 字段。

Link copied to clipboard
fun Any.setByteField(fieldName: String, value: Byte)

写入实例 Byte 字段。

Link copied to clipboard
fun Any.setCharField(fieldName: String, value: Char)

写入实例 Char 字段。

Link copied to clipboard
fun Any.setDoubleField(fieldName: String, value: Double)

写入实例 Double 字段。

Link copied to clipboard
fun Any.setFieldValue(field: Field, value: Any?)

通过字段引用写入实例字段值。

fun Any.setFieldValue(fieldName: String, value: Any?, type: Class<*>? = null)

写入实例字段值。

Link copied to clipboard
fun Any.setFloatField(fieldName: String, value: Float)

写入实例 Float 字段。

Link copied to clipboard
fun Any.setIntField(fieldName: String, value: Int)

写入实例 Int 字段。

Link copied to clipboard
fun Any.setLongField(fieldName: String, value: Long)

写入实例 Long 字段。

Link copied to clipboard
fun Any.setObjectField(fieldName: String, value: Any?)

写入对象字段。按类层级写入最近的同名字段,以兼容旧版静态字段访问。

Link copied to clipboard
fun Any.setShortField(fieldName: String, value: Short)

写入实例 Short 字段。

Link copied to clipboard
fun Class<*>.setStaticBooleanField(fieldName: String, value: Boolean)

写入静态 Boolean 字段。

Link copied to clipboard
fun Class<*>.setStaticByteField(fieldName: String, value: Byte)

写入静态 Byte 字段。

Link copied to clipboard
fun Class<*>.setStaticCharField(fieldName: String, value: Char)

写入静态 Char 字段。

Link copied to clipboard
fun Class<*>.setStaticDoubleField(fieldName: String, value: Double)

写入静态 Double 字段。

Link copied to clipboard
fun Class<*>.setStaticFieldValue(field: Field, value: Any?)

通过字段引用写入静态字段值。

fun Class<*>.setStaticFieldValue(fieldName: String, value: Any?, type: Class<*>? = null)

写入静态字段值。

fun String.setStaticFieldValue(fieldName: String, value: Any?, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null)

按类名写入静态字段值。

Link copied to clipboard
fun Class<*>.setStaticFloatField(fieldName: String, value: Float)

写入静态 Float 字段。

Link copied to clipboard
fun Class<*>.setStaticIntField(fieldName: String, value: Int)

写入静态 Int 字段。

Link copied to clipboard
fun Class<*>.setStaticLongField(fieldName: String, value: Long)

写入静态 Long 字段。

Link copied to clipboard
fun Class<*>.setStaticObjectField(fieldName: String, value: Any?)

写入静态字段。

fun String.setStaticObjectField(fieldName: String, value: Any?, classLoader: ClassLoader = HookClassLoader.currentOrDefault())

按类名写入静态字段。

Link copied to clipboard
fun Class<*>.setStaticShortField(fieldName: String, value: Short)

写入静态 Short 字段。

Link copied to clipboard
fun Class<*>.staticFieldRef(fieldName: String, type: Class<*>? = null): Field

获取静态字段引用。

Link copied to clipboard
fun Class<*>.staticFieldRefOrNull(fieldName: String, type: Class<*>? = null): Field?

获取静态字段引用,找不到时返回 null

Link copied to clipboard
fun Class<*>.staticFieldValue(fieldName: String, type: Class<*>? = null): Any?

读取静态字段值。

fun String.staticFieldValue(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null): Any?

按类名读取静态字段值。

Link copied to clipboard
fun <T> Class<*>.staticFieldValueAs(fieldName: String, type: Class<*>? = null): T?

读取静态字段值并转为指定类型。

fun <T> String.staticFieldValueAs(fieldName: String, classLoader: ClassLoader = HookClassLoader.currentOrDefault(), type: Class<*>? = null): T?

按类名读取静态字段值并转为指定类型。

Link copied to clipboard
fun Class<*>.staticFieldValueOrNull(fieldName: String, type: Class<*>? = null): Any?

读取静态字段值,失败时返回 null

Link copied to clipboard
fun <T> Class<*>.staticFieldValueOrNullAs(fieldName: String, type: Class<*>? = null): T?

读取静态字段值并转为指定类型,失败时返回 null

Link copied to clipboard
fun List<XposedInterface.HookHandle>.unhookAll()

尝试 unhook 全部 handle;单项失败不会阻止后续清理,结束后统一抛出并附带全部失败原因。