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 { field {
name = "secondText" name = "secondText"
type = StringType type = StringType
}.set(instance, "I am hook result") }.get(instance).set("I am hook result")
} }
} }
// 注入要 Hook 的方法 // 注入要 Hook 的方法

View File

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

View File

@@ -96,7 +96,7 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
fun failure(throwable: Throwable?) = Result(isNoSuch = true, throwable) fun failure(throwable: Throwable?) = Result(isNoSuch = true, throwable)
/** /**
* Field 查找结果实现类 * [Field] 查找结果实现类
* *
* 可在这里处理找到的 [fieldInstance] * 可在这里处理找到的 [fieldInstance]
* @param isNoSuch 是否没有找到变量 - 默认否 * @param isNoSuch 是否没有找到变量 - 默认否
@@ -112,18 +112,18 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
fun result(initiate: Result.() -> Unit) = apply(initiate) fun result(initiate: Result.() -> Unit) = apply(initiate)
/** /**
* 设置变量实例 * 得到变量实例处理类
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null * @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 * @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
* @return [T] or 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()) if (isNoSuch) initiate(e ?: Throwable())
return this 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)
}
} }
} }