## YukiMemberHookCreater [class] ```kotlin class YukiMemberHookCreater(internal val packageParam: PackageParam, internal val hookClass: HookClass) ``` **变更记录** `v1.0` `添加` `v1.0.80` `修改` 对 `hookClass` 进行 inline 处理 **功能描述** > `YukiHookAPI` 的 `Member` 核心 Hook 实现类。 ### PRIORITY_DEFAULT [field] ```kotlin val PRIORITY_DEFAULT: Int ``` **变更记录** `v1.0.80` `新增` **功能描述** > 默认 Hook 回调优先级。 ### PRIORITY_LOWEST [field] ```kotlin val PRIORITY_LOWEST: Int ``` **变更记录** `v1.0.80` `新增` **功能描述** > 延迟回调 Hook 方法结果。 ### PRIORITY_HIGHEST [field] ```kotlin val PRIORITY_HIGHEST: Int ``` **变更记录** `v1.0.80` `新增` **功能描述** > 更快回调 Hook 方法结果。 ### instanceClass [field] ```kotlin val instanceClass: Class<*> ``` **变更记录** `v1.0` `添加` `v1.0.2` `修改` ~~`thisClass`~~ 更名为 `instanceClass` **功能描述** > 得到当前被 Hook 的 `Class`。 !> 不推荐直接使用,万一得不到 `Class` 对象则会无法处理异常导致崩溃。 ### injectMember [method] ```kotlin inline fun injectMember(priority: Int, tag: String, initiate: MemberHookCreater.() -> Unit): MemberHookCreater.Result ``` **变更记录** `v1.0` `添加` `v1.0.80` `修改` 将方法体进行 inline 增加 `priority` Hook 优先级 **功能描述** > 注入要 Hook 的方法、构造类。 **功能示例** 你可以注入任意方法与构造类,使用 `injectMember` 即可创建一个 `Hook` 对象。 > 示例如下 ```kotlin injectMember { // Your code here. } ``` 你还可以自定义 `tag`,方便你在调试的时候能够区分你的 `Hook` 对象。 > 示例如下 ```kotlin injectMember(tag = "KuriharaYuki") { // Your code here. } ``` 你还可以自定义 `priority`,以控制当前 Hook 对象并列执行的优先级速度。 > 示例如下 ```kotlin injectMember(priority = PRIORITY_HIGHEST) { // Your code here. } ``` ### MemberHookCreater [class] ```kotlin inner class MemberHookCreater(private val priority: Int, internal val tag: String, internal val packageName: String) ``` **变更记录** `v1.0` `添加` `v1.0.80` `修改` 增加 `priority` Hook 优先级 `v1.0.81` `修改` 增加 `packageName` 当前 Hook 的 APP 包名 **功能描述** > Hook 核心功能实现类,查找和处理需要 Hook 的方法、构造类。 #### member [field] ```kotlin var member: Member? ``` **变更记录** `v1.0` `添加` **功能描述** > 手动指定要 Hook 的方法、构造类。 !> 不建议使用此方法设置目标需要 Hook 的 `Member` 对象,你可以使用 `method` 或 `constructor` 方法。 **功能示例** 你可以调用 `instanceClass` 来手动查询要 Hook 的方法。 > 示例如下 ```kotlin injectMember { member = instanceClass.getMethod("test", StringType) beforeHook {} afterHook {} } ``` #### allMethods [method] ```kotlin fun allMethods(name: String) ``` **变更记录** `v1.0` `添加` **功能描述** > 查找并 Hook 当前 `Class` 中指定 `name` 的全部方法。 **功能示例** 使用此方法可将当前类的全部同名方法进行批量 Hook。 !> 无法准确处理每个方法的 `param`,建议使用 `method` 对每个方法单独 Hook。 > 示例如下 ```kotlin injectMember { allMethods(name = "test") beforeHook {} afterHook {} } ``` #### allConstructors [method] ```kotlin fun allConstructors() ``` **变更记录** `v1.0` `添加` **功能描述** > 查找并 Hook 当前 `Class` 中的全部构造方法。 **功能示例** 使用此方法可将当前类的全部构造方法进行批量 Hook。 !> 无法准确处理每个构造方法的 `param`,建议使用 `constructor` 对每个构造方法单独 Hook。 > 示例如下 ```kotlin injectMember { allConstructors() beforeHook {} afterHook {} } ``` #### method [method] ```kotlin inline fun method(initiate: MethodFinder.() -> Unit): MethodFinder.Result ``` **变更记录** `v1.0` `添加` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 查找当前 `Class` 需要 Hook 的方法。 **功能示例** 你可参考 [MethodFinder](#methodfinder-class) 查看详细用法。 > 示例如下 ```kotlin injectMember { method { name = "test" param(StringType) returnType = UnitType } beforeHook {} afterHook {} } ``` #### constructor [method] ```kotlin inline fun constructor(initiate: ConstructorFinder.() -> Unit): ConstructorFinder.Result ``` **变更记录** `v1.0` `添加` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 查找当前 `Class` 需要 Hook 的构造方法。 **功能示例** 你可参考 [ConstructorFinder](#constructorfinder-class) 查看详细用法。 > 示例如下 ```kotlin injectMember { constructor { param(StringType) } beforeHook {} afterHook {} } ``` #### field [method] ```kotlin inline fun HookParam.field(initiate: FieldFinder.() -> Unit): FieldFinder.Result ``` **变更记录** `v1.0` `添加` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 使用当前 `hookClass` 查找并得到 `Field`。 **功能示例** 你可参考 [FieldFinder](#fieldfinder-class) 查看详细用法。 > 示例如下 ```kotlin injectMember { method { name = "test" param(StringType) returnType = UnitType } afterHook { field { name = "isSweet" type = BooleanType }.get(instance).setTrue() } } ``` #### method [method] ```kotlin inline fun HookParam.method(initiate: MethodFinder.() -> Unit): MethodFinder.Result ``` **变更记录** `v1.0.2` `添加` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 使用当前 `hookClass` 查找并得到方法。 #### constructor [method] ```kotlin inline fun HookParam.constructor(initiate: ConstructorFinder.() -> Unit): ConstructorFinder.Result ``` **变更记录** `v1.0.2` `添加` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 使用当前 `hookClass` 查找并得到构造方法。 #### injectMember [method] ```kotlin inline fun HookParam.injectMember(priority: Int, tag: String, initiate: MemberHookCreater.() -> Unit): MemberHookCreater.Result ``` **变更记录** `v1.0.88` `新增` **功能描述** > 注入要 Hook 的方法、构造类 (嵌套 Hook)。 #### beforeHook [method] ```kotlin fun beforeHook(initiate: HookParam.() -> Unit) ``` **变更记录** `v1.0` `添加` **功能描述** > 在方法执行完成前 Hook。 #### afterHook [method] ```kotlin fun afterHook(initiate: HookParam.() -> Unit) ``` **变更记录** `v1.0` `添加` **功能描述** > 在方法执行完成后 Hook。 #### replaceAny [method] ```kotlin fun replaceAny(initiate: HookParam.() -> Any?) ``` **变更记录** `v1.0` `添加` **功能描述** > 拦截并替换此方法内容,给出返回值。 #### replaceUnit [method] ```kotlin fun replaceUnit(initiate: HookParam.() -> Unit) ``` **变更记录** `v1.0` `添加` **功能描述** > 拦截并替换此方法内容,没有返回值,可以称为 `Void`。 #### replaceTo [method] ```kotlin fun replaceTo(any: Any?) ``` **变更记录** `v1.0` `添加` **功能描述** > 拦截并替换方法返回值。 #### replaceToTrue [method] ```kotlin fun replaceToTrue() ``` **变更记录** `v1.0` `添加` **功能描述** > 拦截并替换方法返回值为 `true`。 !> 确保替换方法的返回对象为 `Boolean`。 #### replaceToFalse [method] ```kotlin fun replaceToFalse() ``` **变更记录** `v1.0` `添加` **功能描述** > 拦截并替换方法返回值为 `false`。 !> 确保替换方法的返回对象为 `Boolean`。 #### intercept [method] ```kotlin fun intercept() ``` **变更记录** `v1.0` `添加` **功能描述** > 拦截此方法。 !> 这将会禁止此方法执行并返回 `null`。 #### Result [class] ```kotlin inner class Result ``` **变更记录** `v1.0` `添加` **功能描述** > 监听 Hook 结果实现类。 ##### result [method] ```kotlin inline fun result(initiate: Result.() -> Unit): Result ``` **变更记录** `v1.0` `添加` `v1.0.5` `修改` ~~`failures`~~ 修改为 `result` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 创建监听失败事件方法体。 **功能示例** 你可以使用此方法为 `Result` 类创建 `lambda` 方法体。 > 示例如下 ```kotlin injectMember { // Your code here. }.result { onHooked {} ignoredConductFailure() onHookingFailure {} // ... } ``` ##### by [method] ```kotlin inline fun by(initiate: () -> Boolean): Result ``` **变更记录** `v1.0.5` `新增` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。 ##### onHooked [method] ```kotlin fun onHooked(initiate: (Member) -> Unit): Result ``` **变更记录** `v1.0.70` `新增` **功能描述** > 监听 `member` Hook 成功的回调方法。 在首次 Hook 成功后回调。 ##### onNoSuchMemberFailure [method] ```kotlin fun onNoSuchMemberFailure(initiate: (Throwable) -> Unit): Result ``` **变更记录** `v1.0.5` `新增` **功能描述** > 监听 `member` 不存在发生错误的回调方法。 ##### onConductFailure [method] ```kotlin fun onConductFailure(initiate: (HookParam, Throwable) -> Unit): Result ``` **变更记录** `v1.0` `添加` **功能描述** > 监听 Hook 进行过程中发生错误的回调方法。 ##### onHookingFailure [method] ```kotlin fun onHookingFailure(initiate: (Throwable) -> Unit): Result ``` **变更记录** `v1.0` `添加` **功能描述** > 监听 Hook 开始时发生的错误的回调方法。 ##### onAllFailure [method] ```kotlin fun onAllFailure(initiate: (Throwable) -> Unit): Result ``` **变更记录** `v1.0` `添加` **功能描述** > 监听全部 Hook 过程发生错误的回调方法。 ##### ignoredNoSuchMemberFailure [method] ```kotlin fun ignoredNoSuchMemberFailure(): Result ``` **变更记录** `v1.0.5` `新增` **功能描述** > 忽略 `member` 不存在发生的错误。 ##### ignoredConductFailure [method] ```kotlin fun ignoredConductFailure(): Result ``` **变更记录** `v1.0` `添加` **功能描述** > 忽略 Hook 进行过程中发生的错误。 ##### ignoredHookingFailure [method] ```kotlin fun ignoredHookingFailure(): Result ``` **变更记录** `v1.0` `添加` **功能描述** > 忽略 Hook 开始时发生的错误。 ##### ignoredAllFailure [method] ```kotlin fun ignoredAllFailure(): Result ``` **变更记录** `v1.0` `添加` **功能描述** > 忽略全部 Hook 过程发生的错误。 ### Result [class] ```kotlin inner class Result ``` **变更记录** `v1.0.3` `新增` **功能描述** > 监听全部 Hook 结果实现类。 #### result [method] ```kotlin inline fun result(initiate: Result.() -> Unit): Result ``` **变更记录** `v1.0.3` `新增` `v1.0.5` `修改` ~~`failures`~~ 修改为 `result` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 创建监听事件方法体。 #### by [method] ```kotlin inline fun by(initiate: () -> Boolean): Result ``` **变更记录** `v1.0.5` `新增` `v1.0.80` `修改` 将方法体进行 inline **功能描述** > 添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。 #### onPrepareHook [method] ```kotlin fun onPrepareHook(initiate: () -> Unit): Result ``` **变更记录** `v1.0.70` `新增` **功能描述** > 监听 `hookClass` 存在时准备开始 Hook 的操作。 #### onHookClassNotFoundFailure [method] ```kotlin fun onHookClassNotFoundFailure(initiate: (Throwable) -> Unit): Result ``` **变更记录** `v1.0.3` `新增` **功能描述** > 监听 `hookClass` 找不到时发生错误的回调方法。 #### ignoredHookClassNotFoundFailure [method] ```kotlin fun ignoredHookClassNotFoundFailure(): Result ``` **变更记录** `v1.0.3` `新增` **功能描述** > 忽略 `hookClass` 找不到时出现的错误。