mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Changed HookParam.kt
This commit is contained in:
@@ -26,33 +26,25 @@ val args: Array<Any?>
|
||||
|
||||
> 获取当前 Hook 对象 `member` 或 `constructor` 的参数对象数组。
|
||||
|
||||
### firstArgs [field]
|
||||
|
||||
```kotlin
|
||||
val firstArgs: Any?
|
||||
```
|
||||
### ~~firstArgs [field]~~
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0` `添加`
|
||||
|
||||
<b>功能描述</b>
|
||||
`v1.0.75` `移除`
|
||||
|
||||
> 获取当前 Hook 对象 `member` 或 `constructor` 的参数对象数组第一位。
|
||||
请使用 `args(index = 0)` 或 `args().first()`
|
||||
|
||||
### lastArgs [field]
|
||||
|
||||
```kotlin
|
||||
val lastArgs: Any?
|
||||
```
|
||||
### ~~lastArgs [field]~~
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0` `添加`
|
||||
|
||||
<b>功能描述</b>
|
||||
`v1.0.75` `移除`
|
||||
|
||||
> 获取当前 Hook 对象 `member` 或 `constructor` 的参数对象数组最后一位。
|
||||
请使用 `args().last()`
|
||||
|
||||
### instance [field]
|
||||
|
||||
@@ -126,33 +118,35 @@ var result: Any?
|
||||
|
||||
> 获取、设置当前 Hook 对象的 `method` 或 `constructor` 的返回值。
|
||||
|
||||
### firstArgs [method]
|
||||
### result [method]
|
||||
|
||||
```kotlin
|
||||
inline fun <reified T> firstArgs(): T?
|
||||
inline fun <reified T> result(): T?
|
||||
```
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.75` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 获取当前 Hook 对象的 `method` 或 `constructor` 的返回值 `T`。
|
||||
|
||||
### ~~firstArgs [method]~~
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.66` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
`v1.0.75` `移除`
|
||||
|
||||
> 获取当前 Hook 对象 [method] or [constructor] 的参数对象数组第一位 `T`。
|
||||
|
||||
### lastArgs [method]
|
||||
|
||||
```kotlin
|
||||
inline fun <reified T> lastArgs(): T?
|
||||
```
|
||||
### ~~lastArgs [method]~~
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.66` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 获取当前 Hook 对象 [method] or [constructor] 的参数对象数组最后一位 `T`。
|
||||
`v1.0.75` `移除`
|
||||
|
||||
### instance [method]
|
||||
|
||||
@@ -180,6 +174,20 @@ instance<Activity>().finish()
|
||||
|
||||
### args [method]
|
||||
|
||||
```kotlin
|
||||
fun args(): ArgsIndexCondition
|
||||
```
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.75` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 获取当前 Hook 对象的 `method` or `constructor` 的参数数组下标实例化类。
|
||||
|
||||
### args [method]
|
||||
|
||||
```kotlin
|
||||
fun args(index: Int): ArgsModifyer
|
||||
```
|
||||
@@ -188,6 +196,10 @@ fun args(index: Int): ArgsModifyer
|
||||
|
||||
`v1.0` `添加`
|
||||
|
||||
`v1.0.75` `修改`
|
||||
|
||||
默认值 `index = 0` 移动到新的使用方法 `args().first()`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 获取当前 Hook 对象的 `method` 或 `constructor` 的参数实例化对象类。
|
||||
@@ -196,8 +208,6 @@ fun args(index: Int): ArgsModifyer
|
||||
|
||||
你可以通过 `args` 方法修改当前 Hook 实例的方法、构造方法的参数内容。
|
||||
|
||||
`index` 的默认值为 `0`,如果只有一位 `param` 参数,你可以不写。
|
||||
|
||||
你可以直接使用 `set` 方法设置 `param` 为你的目标实例,接受 `Any` 类型。
|
||||
|
||||
!> 请确保 `param` 类型为你的目标实例类型。
|
||||
@@ -205,7 +215,23 @@ fun args(index: Int): ArgsModifyer
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
args().set("modify the value")
|
||||
args(index = 0).set("modify the value")
|
||||
```
|
||||
|
||||
你可以这样直接设置第一位 `param` 的值。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
args().first().set("modify the value")
|
||||
```
|
||||
|
||||
你还可以直接设置最后一位 `param` 的值。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
args().last().set("modify the value")
|
||||
```
|
||||
|
||||
你还可以使用 `setNull` 方法设置 `param` 为空。
|
||||
@@ -223,7 +249,7 @@ args(index = 1).setNull()
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
args(index = 2).setTrue()
|
||||
args(index = 1).setTrue()
|
||||
```
|
||||
|
||||
你还可以使用 `setFalse` 方法设置 `param` 为 `false`。
|
||||
@@ -233,7 +259,7 @@ args(index = 2).setTrue()
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
args(index = 3).setFalse()
|
||||
args(index = 1).setFalse()
|
||||
```
|
||||
|
||||
### invokeOriginal [method]
|
||||
@@ -306,6 +332,48 @@ fun resultNull()
|
||||
|
||||
!> 此方法将强制设置 Hook 对象方法的 `result` 为 `null`。
|
||||
|
||||
### ArgsIndexCondition [class]
|
||||
|
||||
```kotlin
|
||||
inner class ArgsIndexCondition
|
||||
```
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.75` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 对方法参数的数组下标进行实例化类。
|
||||
|
||||
#### first [method]
|
||||
|
||||
```kotlin
|
||||
fun first(): ArgsModifyer
|
||||
```
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.75` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 获取当前 Hook 对象的 `method` or `constructor` 的参数数组第一位。
|
||||
|
||||
#### last [method]
|
||||
|
||||
```kotlin
|
||||
fun last(): ArgsModifyer
|
||||
```
|
||||
|
||||
<b>变更记录</b>
|
||||
|
||||
`v1.0.75` `新增`
|
||||
|
||||
<b>功能描述</b>
|
||||
|
||||
> 获取当前 Hook 对象的 `method` or `constructor` 的参数数组最后一位。
|
||||
|
||||
### ArgsModifyer [class]
|
||||
|
||||
```kotlin
|
||||
|
@@ -438,11 +438,11 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
`YukiHookModulePrefs` 支持的类型只有 `String`、`Int`、`Float`、`Long`、`Boolean`,请传入支持的类型。
|
||||
|
||||
!> `IllegalStateException` HookParam args is empty
|
||||
!> `IllegalStateException` HookParam Method args index must be >= 0
|
||||
|
||||
<b>异常原因</b>
|
||||
|
||||
在 `HookParam` 中调用 `firstArgs` 或 `lastArgs` 但原始 `param` 数组为空。
|
||||
在 `HookParam` 中调用 `args().last()` 但是目标 `param` 为空或 `args` 中的 `index` 设置了小于 0 的数值。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -450,17 +450,17 @@ class MainActivity : AppCompatActivity() {
|
||||
injectMember {
|
||||
// ...
|
||||
afterHook {
|
||||
// 调用了此变量
|
||||
firstArgs...
|
||||
// 调用了此变量
|
||||
lastArgs...
|
||||
// 假设 param 是空的
|
||||
args().last()...
|
||||
// 设置了小于 0 的 index
|
||||
args(index = -5)...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<b>解决方案</b>
|
||||
|
||||
请确认你 Hook 的目标方法、构造方法的方法参数数量是否不为空,否则你无法使用此功能。
|
||||
请确认你 Hook 的目标方法、构造方法的方法参数数量是否不为空,且不能对 `args` 的下标设置小于 0 的数值。
|
||||
|
||||
!> `IllegalStateException` HookParam instance got null! Is this a static member?
|
||||
|
||||
|
Reference in New Issue
Block a user