This commit is contained in:
2022-02-12 02:22:44 +08:00
parent 676490eaca
commit b6f02080fe
3 changed files with 44 additions and 14 deletions

View File

@@ -74,7 +74,7 @@ class MainHook : YukiHookXposedInitProxy {
field {
name = "secondText"
type = StringType
}.set(instance, "I am hook result")
}.get(instance).set("I am hook result")
}
}
// 注入要 Hook 的方法

View File

@@ -229,7 +229,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
}
/**
* 替换此方法内容 - 给出返回值
* 拦截并替换此方法内容 - 给出返回值
*
* 不可与 [beforeHook]、[afterHook] 同时使用
* @param initiate [HookParam] 方法体
@@ -240,7 +240,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
}
/**
* 替换此方法内容 - 没有返回值 ([Unit])
* 拦截并替换此方法内容 - 没有返回值 ([Unit])
*
* 不可与 [beforeHook]、[afterHook] 同时使用
* @param initiate [HookParam] 方法体
@@ -251,7 +251,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
}
/**
* 替换方法返回值
* 拦截并替换方法返回值
*
* 不可与 [beforeHook]、[afterHook] 同时使用
* @param any 要替换为的返回值对象
@@ -262,9 +262,9 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
}
/**
* 替换方法返回值为 true
* 拦截并替换方法返回值为 true
*
* 确保替换方法的返回对象为 [Boolean]
* 确保替换方法的返回对象为 [Boolean]
*
* 不可与 [beforeHook]、[afterHook] 同时使用
*/
@@ -274,9 +274,9 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
}
/**
* 替换方法返回值为 false
* 拦截并替换方法返回值为 false
*
* 确保替换方法的返回对象为 [Boolean]
* 确保替换方法的返回对象为 [Boolean]
*
* 不可与 [beforeHook]、[afterHook] 同时使用
*/
@@ -288,7 +288,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
/**
* 拦截此方法
*
* 这将会禁止此方法执行并返回 null
* 这将会禁止此方法执行并返回 null
*
* 不可与 [beforeHook]、[afterHook] 同时使用
*/

View File

@@ -96,7 +96,7 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
fun failure(throwable: Throwable?) = Result(isNoSuch = true, throwable)
/**
* Field 查找结果实现类
* [Field] 查找结果实现类
*
* 可在这里处理找到的 [fieldInstance]
* @param isNoSuch 是否没有找到变量 - 默认否
@@ -112,18 +112,18 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
fun result(initiate: Result.() -> Unit) = apply(initiate)
/**
* 设置变量实例
* 得到变量实例处理类
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
* @param any 设置的实例内容
* @return [Instance]
*/
fun set(instance: Any? = null, any: Any?) = give()?.set(instance, any)
fun get(instance: Any? = null) = Instance(give()?.get(instance))
/**
* 得到变量实例
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
* @return [T] or null
*/
fun <T> get(instance: Any? = null) = give()?.get(instance) as? T?
fun <T> of(instance: Any? = null) = get(instance) as? T?
/**
* 得到变量本身
@@ -140,5 +140,35 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
if (isNoSuch) initiate(e ?: Throwable())
return this
}
/**
* [Field] 实例变量处理类
* @param instance 当前 [Field] 的实例对象
*/
inner class Instance(val instance: Any?) {
/**
* 设置变量实例
* @param any 设置的实例内容
*/
fun set(any: Any?) = give()?.set(instance, any)
/**
* 设置变量实例为 true
*
* ❗请确保示例对象类型为 [Boolean]
*/
fun setTrue() = set(true)
/**
* 设置变量实例为 true
*
* ❗请确保示例对象类型为 [Boolean]
*/
fun setFalse() = set(false)
/** 设置变量实例为 null */
fun setNull() = set(null)
}
}
}