import{_ as s,o as a,c as o,a as e}from"./app-CLu4Xwf8.js";const n={},l=e(`
注意
由于维护成本,YukiHookAPI 从 1.3.0 版本开始将不再会对此文档进行更新且在 2.0.0 版本切换为 Dokka 插件自动生成的 API 文档。
class HookParam private constructor(
private val creatorInstance: YukiMemberHookCreator,
private var paramId: String,
private var param: YukiHookCallback.Param?
)
变更记录
v1.0 添加
v1.1.0 修改
移动 HookParamWrapper 到 YukiHookCallback.Param
修正拼写错误的 creater 命名到 creator
v1.1.5 修改
新增 paramId 参数
v1.2.0 修改
不再开放构造方法
功能描述
Hook 方法、构造方法的目标对象实现类。
val args: Array<Any?>
变更记录
在 v1.0 添加
功能描述
获取当前 Hook 对象
member或constructor的参数对象数组。
这里的数组每项类型默认为 Any,你可以使用 args 方法来实现 ArgsModifyer.cast 功能。
变更记录
v1.0 添加
v1.0.75 移除
请使用 args(index = 0) 或 args().first()
变更记录
v1.0 添加
v1.0.75 移除
请使用 args().last()
val instance: Any
变更记录
v1.0 添加
功能描述
获取当前 Hook 实例的对象。
特别注意
如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。
如果你不确定当前实例的对象是否为 null,你可以使用 instanceOrNull。
val instanceOrNull: Any?
变更记录
v1.1.8 新增
功能描述
获取当前 Hook 实例的对象。
特别注意
如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。
val instanceClass: Class<*>?
变更记录
v1.0 添加
v1.2.0 修改
加入可空类型 (空安全)
功能描述
获取当前 Hook 实例的类对象。
特别注意
如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。
val member: Member
变更记录
v1.1.0 新增
功能描述
获取当前 Hook 对象的
Member。
在不确定 Member 类型为 Method 或 Constructor 时可以使用此方法。
val method: Method
变更记录
v1.0 添加
功能描述
获取当前 Hook 对象的方法。
val constructor: Constructor
变更记录
v1.0 添加
功能描述
获取当前 Hook 对象的构造方法。
var result: Any?
变更记录
v1.0 添加
功能描述
获取、设置当前 Hook 对象的
method或constructor的返回值。
val dataExtra: Bundle
变更记录
v1.1.5 新增
功能描述
获取当前回调方法体范围内的数据存储实例。
val hasThrowable: Boolean
变更记录
v1.1.0 新增
功能描述
判断是否存在设置过的方法调用抛出异常。
val throwable: Throwable?
变更记录
v1.1.0 新增
功能描述
获取设置的方法调用抛出异常。
fun Throwable.throwToApp()
变更记录
v1.1.0 新增
功能描述
向 Hook APP 抛出异常。
使用 hasThrowable 判断当前是否存在被抛出的异常。
使用 throwable 获取当前设置的方法调用抛出异常。
仅会在回调方法的 MemberHookCreator.before 或 MemberHookCreator.after 中生效。
特别注意
设置后会同时执行 resultNull 方法并将异常抛出给当前 Hook APP。
功能示例
Hook 过程中的异常仅会作用于 (Xposed) 宿主环境,目标 Hook APP 不会受到影响。
若想将异常抛给 Hook APP,可以直接使用如下方法。
示例如下
hook {
before {
RuntimeException("Test Exception").throwToApp()
}
}
特别注意
向 Hook APP 抛出异常会对其暴露被 Hook 的事实,是不安全的,容易被检测,请按实际场景合理使用。
inline fun <reified T> result(): T?
变更记录
v1.0.75 新增
功能描述
获取当前 Hook 对象的
method或constructor的返回值T。
变更记录
v1.0.66 新增
v1.0.75 移除
变更记录
v1.0.66 新增
v1.0.75 移除
inline fun <reified T> instance(): T
变更记录
v1.0 添加
功能描述
获取当前 Hook 实例的对象
T。
功能示例
你可以通过 instance 方法轻松使用泛型 cast 为目标对象的类型。
示例如下
instance<Activity>().finish()
inline fun <reified T> instanceOrNull(): T?
变更记录
v1.1.8 新增
功能描述
获取当前 Hook 实例的对象
T。
功能示例
用法请参考 instance 方法。
fun args(): ArgsIndexCondition
变更记录
v1.0.75 新增
功能描述
获取当前 Hook 对象的
method或constructor的参数数组下标实例化类。
fun args(index: Int): ArgsModifyer
变更记录
v1.0 添加
v1.0.75 修改
默认值 index = 0 移动到新的使用方法 args().first()
功能描述
获取当前 Hook 对象的
method或constructor的参数实例化对象类。
功能示例
你可以通过 args 方法修改当前 Hook 实例的方法、构造方法的参数内容。
你可以直接使用 set 方法设置 param 为你的目标实例,接受 Any 类型。
特别注意
请确保 param 类型为你的目标实例类型。
示例如下
args(index = 0).set("modify the value")
你可以这样直接设置第一位 param 的值。
示例如下
args().first().set("modify the value")
你还可以直接设置最后一位 param 的值。
示例如下
args().last().set("modify the value")
你还可以使用 setNull 方法设置 param 为空。
示例如下
args(index = 1).setNull()
你还可以使用 setTrue 方法设置 param 为 true。
特别注意
请确保 param 类型为 Boolean。
示例如下
args(index = 1).setTrue()
你还可以使用 setFalse 方法设置 param 为 false。
特别注意
请确保 param 类型为 Boolean。
示例如下
args(index = 1).setFalse()
fun callOriginal(): Any?
fun <T> callOriginal(): T?
变更记录
v1.1.0 新增
功能描述
执行原始
Member。
调用自身未进行 Hook 的原始 Member 并调用原始参数执行。
功能实例
此方法可以 invoke 原始未经 Hook 的 Member 对象,取决于原始 Member 的参数。
调用自身原始的方法不会再经过当前 before、after 以及 replaceUnit、replaceAny。
比如我们 Hook 的这个方法被这样调用 test("test value"),使用此方法会调用其中的 "test value" 作为参数。
示例如下
method {
name = "test"
param(StringClass)
returnType = StringClass
}.hook {
after {
// <方案1> 不使用泛型,不获取方法执行结果,调用将使用原方法传入的 args 自动传参
callOriginal()
// <方案2> 使用泛型,已知方法执行结果参数类型进行 cast
// 假设返回值为 String,失败会返回 null,调用将使用原方法传入的 args 自动传参
val value = callOriginal<String>()
}
}
fun invokeOriginal(vararg args: Any?): Any?
fun <T> invokeOriginal(vararg args: Any?): T?
变更记录
v1.0 添加
v1.1.0 修改
不再需要使用 member.invokeOriginal 进行调用
功能描述
执行原始
Member。
调用自身未进行 Hook 的原始 Member 并自定义 args 执行。
功能实例
此方法可以 invoke 原始未经 Hook 的 Member 对象,可自定义需要调用的参数内容。
调用自身原始的方法不会再经过当前 before、after 以及 replaceUnit、replaceAny。
比如我们 Hook 的这个方法被这样调用 test("test value"),使用此方法可自定义其中的 args 作为参数。
示例如下
method {
name = "test"
param(StringClass)
returnType = StringClass
}.hook {
after {
// <方案1> 不使用泛型,不获取方法执行结果
invokeOriginal("test value")
// <方案2> 使用泛型,已知方法执行结果参数类型进行 cast,假设返回值为 String,失败会返回 null
val value = invokeOriginal<String>("test value")
}
}
fun resultTrue()
变更记录
v1.0 添加
功能描述
设置当前 Hook 对象方法的
result返回值为true。
特别注意
请确保 result 类型为 Boolean。
fun resultFalse()
变更记录
v1.0 添加
功能描述
设置当前 Hook 对象方法的
result返回值为false。
特别注意
请确保 result 类型为 Boolean。
fun resultNull()
变更记录
v1.0 添加
功能描述
注意
此方法将强制设置 Hook 对象方法的 result 为 null。
inner class ArgsIndexCondition internal constructor()
变更记录
v1.0.75 新增
功能描述
对方法参数的数组下标进行实例化类。
fun first(): ArgsModifyer
变更记录
v1.0.75 新增
功能描述
获取当前 Hook 对象的
method或constructor的参数数组第一位。
fun last(): ArgsModifyer
变更记录
v1.0.75 新增
功能描述
获取当前 Hook 对象的
method或constructor的参数数组最后一位。
inner class ArgsModifyer internal constructor(private val index: Int)
变更记录
v1.0 添加
功能描述
对方法参数的修改进行实例化类。
fun <T> cast(): T?
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofcast
功能描述
得到方法参数的实例对象
T。
fun byte(): Byte?
变更记录
v1.0.68 新增
功能描述
得到方法参数的实例对象 Byte。
fun int(): Int
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofIntint
功能描述
得到方法参数的实例对象 Int。
fun long(): Long
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofLonglong
功能描述
得到方法参数的实例对象 Long。
fun short(): Short
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofShortshort
功能描述
得到方法参数的实例对象 Short。
fun double(): Double
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofDoubledouble
功能描述
得到方法参数的实例对象 Double。
fun float(): Float
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofFloatfloat
功能描述
得到方法参数的实例对象 Float。
fun string(): String
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofStringstring
功能描述
得到方法参数的实例对象 String。
fun char(): Char
变更记录
v1.0.68 新增
功能描述
得到方法参数的实例对象 Char。
fun boolean(): Boolean
变更记录
v1.0.66 新增
v1.0.68 修改
修改 为 ofBooleanboolean
功能描述
得到方法参数的实例对象 Boolean。
fun any(): Any?
变更记录
v1.0.77 新增
功能描述
得到方法参数的实例对象 Any。
inline fun <reified T> array(): Array<T>
变更记录
v1.0.68 新增
功能描述
得到方法参数的实例对象 Array。
inline fun <reified T> list(): List<T>
变更记录
v1.0.68 新增
功能描述
得到方法参数的实例对象 List。
fun <T> set(any: T?)
变更记录
v1.0 添加
功能描述
设置方法参数的实例对象。
fun setNull()
变更记录
v1.0 添加
功能描述
设置方法参数的实例对象为
null。
fun setTrue()
变更记录
v1.0 添加
功能描述
设置方法参数的实例对象为
true。
特别注意
请确保目标对象的类型是 Boolean。
fun setFalse()
变更记录
v1.0 添加
功能描述
设置方法参数的实例对象为
false。
特别注意
请确保目标对象的类型是 Boolean。