Package-level declarations

Types

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

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

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

Hook 回调签名,接收 HookParam

Link copied to clipboard

Xposed 82 hook DSL 构造器。

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

replace 阶段使用的 Kotlin 回调。

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

创建 before 阶段声明块。

Link copied to clipboard
fun Constructor<*>.createAfterHook(callback: (HookParam) -> Unit): XC_MethodHook.Unhook

Constructor 创建 after hook。

fun Method.createAfterHook(callback: (HookParam) -> Unit): XC_MethodHook.Unhook

Method 创建 after hook。

Link copied to clipboard
@JvmName(name = "createConstructorAfterHooksByIterable")
fun Iterable<Constructor<*>>.createAfterHooks(callback: (HookParam) -> Unit): List<XC_MethodHook.Unhook>

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

@JvmName(name = "createMethodAfterHooksByIterable")
fun Iterable<Method>.createAfterHooks(callback: (HookParam) -> Unit): List<XC_MethodHook.Unhook>

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

Link copied to clipboard
fun Constructor<*>.createBeforeHook(callback: (HookParam) -> Unit): XC_MethodHook.Unhook

Constructor 创建 before hook。

fun Method.createBeforeHook(callback: (HookParam) -> Unit): XC_MethodHook.Unhook

Method 创建 before hook。

Link copied to clipboard
@JvmName(name = "createConstructorBeforeHooksByIterable")
fun Iterable<Constructor<*>>.createBeforeHooks(callback: (HookParam) -> Unit): List<XC_MethodHook.Unhook>

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

@JvmName(name = "createMethodBeforeHooksByIterable")
fun Iterable<Method>.createBeforeHooks(callback: (HookParam) -> Unit): List<XC_MethodHook.Unhook>

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

Link copied to clipboard
fun Constructor<*>.createHook(block: HookFactory.() -> Unit): XC_MethodHook.Unhook

Constructor 创建 hook。

fun Method.createHook(block: HookFactory.() -> Unit): XC_MethodHook.Unhook

Method 创建 hook。

Link copied to clipboard
@JvmName(name = "createConstructorHooksByIterable")
fun Iterable<Constructor<*>>.createHooks(block: HookFactory.() -> Unit): List<XC_MethodHook.Unhook>

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

@JvmName(name = "createMethodHooksByIterable")
fun Iterable<Method>.createHooks(block: HookFactory.() -> Unit): List<XC_MethodHook.Unhook>

为方法列表批量创建 hook。

Link copied to clipboard
fun Constructor<*>.createReplaceHook(callback: (HookParam) -> Any?): XC_MethodHook.Unhook

Constructor 创建 replace hook。

fun Method.createReplaceHook(callback: (HookParam) -> Any?): XC_MethodHook.Unhook

Method 创建 replace hook。

Link copied to clipboard
@JvmName(name = "createConstructorReplaceHooksByIterable")
fun Iterable<Constructor<*>>.createReplaceHooks(callback: (HookParam) -> Any?): List<XC_MethodHook.Unhook>

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

@JvmName(name = "createMethodReplaceHooksByIterable")
fun Iterable<Method>.createReplaceHooks(callback: (HookParam) -> Any?): List<XC_MethodHook.Unhook>

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

Link copied to clipboard
fun Method.createReturnConstantHook(value: Any?): XC_MethodHook.Unhook

Method 直接返回固定值。

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

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

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

Link copied to clipboard

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

Link copied to clipboard

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

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

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

Link copied to clipboard

创建 replace 阶段声明块。

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