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