Changed Finder function

This commit is contained in:
2022-04-13 03:53:25 +08:00
parent ab1a02477d
commit 522db02f34
9 changed files with 133 additions and 45 deletions

View File

@@ -73,6 +73,7 @@ class HookEntry : YukiHookXposedInitProxy {
injectMember { injectMember {
method { method {
name = "getFirstText" name = "getFirstText"
emptyParam()
returnType = StringType returnType = StringType
} }
// 执行替换 Hook // 执行替换 Hook
@@ -122,6 +123,7 @@ class HookEntry : YukiHookXposedInitProxy {
injectMember { injectMember {
method { method {
name = "toast" name = "toast"
emptyParam()
returnType = UnitType returnType = UnitType
} }
// 拦截整个方法 // 拦截整个方法
@@ -137,6 +139,7 @@ class HookEntry : YukiHookXposedInitProxy {
injectMember { injectMember {
method { method {
name = "getDataText" name = "getDataText"
emptyParam()
returnType = StringType returnType = StringType
} }
// 执行替换 Hook // 执行替换 Hook

View File

@@ -28,7 +28,7 @@ var paramCount: Int
<b>功能描述</b> <b>功能描述</b>
> `Constructor` 参数个数。 > 设置 `Constructor` 参数个数。
你可以不使用 `param` 指定参数类型而是仅使用此变量指定参数个数。 你可以不使用 `param` 指定参数类型而是仅使用此变量指定参数个数。
@@ -46,12 +46,26 @@ fun modifiers(initiate: ModifierRules.() -> Unit): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Constructor` 筛选条件。 > 设置 `Constructor` 标识符筛选条件。
可不设置筛选条件,默认模糊查找并取第一个匹配的 `Constructor` 可不设置筛选条件,默认模糊查找并取第一个匹配的 `Constructor`
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。 !> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
### emptyParam [method]
```kotlin
fun emptyParam(): IndexTypeCondition
```
<b>变更记录</b>
`v1.0.75` `新增`
<b>功能描述</b>
> 设置 `Constructor` 空参数、无参数。
### param [method] ### param [method]
```kotlin ```kotlin
@@ -64,16 +78,36 @@ fun param(vararg paramType: Any): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Constructor` 参数。 > 设置 `Constructor` 参数。
如果同时使用了 `paramCount``paramTypes` 的数量必须与 `paramCount` 完全匹配。 如果同时使用了 `paramCount``paramTypes` 的数量必须与 `paramCount` 完全匹配。
!> 无参 `Constructor` 不要使用此方法 !> 无参 `Constructor` 请使用 `emptyParam` 设置查询条件
!> 有参 `Constructor` 必须使用此方法设定参数或使用 `paramCount` 指定个数。 !> 有参 `Constructor` 必须使用此方法设定参数或使用 `paramCount` 指定个数。
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。 !> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
### paramCount [method]
```kotlin
fun paramCount(num: Int): IndexTypeCondition
```
<b>变更记录</b>
`v1.0.70` `新增`
<b>功能描述</b>
> 设置 `Constructor` 参数个数。
你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数。
若参数个数小于零则忽略并使用 `param`
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
### RemedyPlan [class] ### RemedyPlan [class]
```kotlin ```kotlin

View File

@@ -40,7 +40,7 @@ var name: String
<b>功能描述</b> <b>功能描述</b>
> `Field` 名称。 > 设置 `Field` 名称。
!> 若不填写名称则必须存在一个其它条件。 !> 若不填写名称则必须存在一个其它条件。
@@ -56,7 +56,7 @@ var type: Any?
<b>功能描述</b> <b>功能描述</b>
> `Field` 类型。 > 设置 `Field` 类型。
可不填写类型,默认模糊查找并取第一个匹配的 `Field` 可不填写类型,默认模糊查找并取第一个匹配的 `Field`
@@ -72,7 +72,7 @@ fun modifiers(initiate: ModifierRules.() -> Unit): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Field` 筛选条件。 > 设置 `Field` 标识符筛选条件。
可不设置筛选条件,默认模糊查找并取第一个匹配的 `Field` 可不设置筛选条件,默认模糊查找并取第一个匹配的 `Field`
@@ -104,7 +104,7 @@ fun name(value: String): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Field` 名称。 > 设置 `Field` 名称。
!> 若不填写名称则必须存在一个其它条件,默认模糊查找并取第一个匹配的 `Field` !> 若不填写名称则必须存在一个其它条件,默认模糊查找并取第一个匹配的 `Field`
@@ -122,7 +122,7 @@ fun type(value: Any): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Field` 类型。 > 设置 `Field` 类型。
!> 可不填写类型,默认模糊查找并取第一个匹配的 `Field` !> 可不填写类型,默认模糊查找并取第一个匹配的 `Field`

View File

@@ -26,7 +26,7 @@ val args: Array<Any?>
> 获取当前 Hook 对象 `member` 或 `constructor` 的参数对象数组。 > 获取当前 Hook 对象 `member` 或 `constructor` 的参数对象数组。
### ~~firstArgs [field]~~ ### ~~firstArgs [field]~~ <!-- {docsify-ignore} -->
<b>变更记录</b> <b>变更记录</b>
@@ -36,7 +36,7 @@ val args: Array<Any?>
请使用 `args(index = 0)``args().first()` 请使用 `args(index = 0)``args().first()`
### ~~lastArgs [field]~~ ### ~~lastArgs [field]~~ <!-- {docsify-ignore} -->
<b>变更记录</b> <b>变更记录</b>
@@ -132,7 +132,7 @@ inline fun <reified T> result(): T?
> 获取当前 Hook 对象的 `method` 或 `constructor` 的返回值 `T`。 > 获取当前 Hook 对象的 `method` 或 `constructor` 的返回值 `T`。
### ~~firstArgs [method]~~ ### ~~firstArgs [method]~~ <!-- {docsify-ignore} -->
<b>变更记录</b> <b>变更记录</b>
@@ -140,7 +140,7 @@ inline fun <reified T> result(): T?
`v1.0.75` `移除` `v1.0.75` `移除`
### ~~lastArgs [method]~~ ### ~~lastArgs [method]~~ <!-- {docsify-ignore} -->
<b>变更记录</b> <b>变更记录</b>

View File

@@ -32,7 +32,7 @@ var name: String
<b>功能描述</b> <b>功能描述</b>
> `Method` 名称。 > 设置 `Method` 名称。
!> 若不填写名称则必须存在一个其它条件。 !> 若不填写名称则必须存在一个其它条件。
@@ -48,7 +48,7 @@ var paramCount: Int
<b>功能描述</b> <b>功能描述</b>
> `Method` 参数个数。 > 设置 `Method` 参数个数。
你可以不使用 `param` 指定参数类型而是仅使用此变量指定参数个数。 你可以不使用 `param` 指定参数类型而是仅使用此变量指定参数个数。
@@ -66,7 +66,7 @@ var returnType: Any?
<b>功能描述</b> <b>功能描述</b>
> `Method` 返回值,可不填写返回值,默认模糊查找并取第一个匹配的 `Method`。 > 设置 `Method` 返回值,可不填写返回值,默认模糊查找并取第一个匹配的 `Method`。
### modifiers [method] ### modifiers [method]
@@ -80,12 +80,26 @@ fun modifiers(initiate: ModifierRules.() -> Unit): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Method` 筛选条件。 > 设置 `Method` 标识符筛选条件。
可不设置筛选条件,默认模糊查找并取第一个匹配的 `Method` 可不设置筛选条件,默认模糊查找并取第一个匹配的 `Method`
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。 !> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
### emptyParam [method]
```kotlin
fun emptyParam(): IndexTypeCondition
```
<b>变更记录</b>
`v1.0.75` `新增`
<b>功能描述</b>
> 设置 `Method` 空参数、无参数。
### param [method] ### param [method]
```kotlin ```kotlin
@@ -98,11 +112,11 @@ fun param(vararg paramType: Any): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Method` 参数。 > 设置 `Method` 参数。
如果同时使用了 `paramCount``paramTypes` 的数量必须与 `paramCount` 完全匹配。 如果同时使用了 `paramCount``paramTypes` 的数量必须与 `paramCount` 完全匹配。
!> 无参 `Method` 不要使用此方法 !> 无参 `Method` 请使用 `emptyParam` 设置查询条件
!> 有参 `Method` 必须使用此方法设定参数或使用 `paramCount` 指定个数。 !> 有参 `Method` 必须使用此方法设定参数或使用 `paramCount` 指定个数。
@@ -134,7 +148,7 @@ fun name(value: String): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Method` 名称。 > 设置 `Method` 名称。
!> 若不填写名称则必须存在一个其它条件,默认模糊查找并取第一个匹配的 `Method` !> 若不填写名称则必须存在一个其它条件,默认模糊查找并取第一个匹配的 `Method`
@@ -152,7 +166,7 @@ fun paramCount(num: Int): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Method` 参数个数。 > 设置 `Method` 参数个数。
你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数。 你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数。
@@ -172,7 +186,7 @@ fun returnType(value: Any): IndexTypeCondition
<b>功能描述</b> <b>功能描述</b>
> `Method` 返回值。 > 设置 `Method` 返回值。
可不填写返回值,默认模糊查找并取第一个匹配的 `Method` 可不填写返回值,默认模糊查找并取第一个匹配的 `Method`

View File

@@ -683,7 +683,7 @@ TargetClass.hook {
你必须在 `hook` 方法体内加入至少一个 `injectMember` 方法。 你必须在 `hook` 方法体内加入至少一个 `injectMember` 方法。
!> `IllegalStateException` paramTypes is empty, please delete param() method !> `IllegalStateException` paramTypes is empty, please use emptyParam() instead
<b>异常原因</b> <b>异常原因</b>
@@ -693,11 +693,34 @@ TargetClass.hook {
```kotlin ```kotlin
method { method {
// 没有填写任何参数 name = "test"
// 括号内没有填写任何参数
param() param()
} }
``` ```
<b>解决方案</b> <b>解决方案</b>
若要标识此方法、构造方法没有参数,你可以什么都不写或设置 `paramCount = 0` 即可 若要标识此方法、构造方法没有参数,你可以有如下设置方法
第一种,设置 `emptyParam` (推荐)
> 示例如下
```kotlin
method {
name = "test"
emptyParam()
}
```
第二种,设置 `paramCount = 0`
> 示例如下
```kotlin
method {
name = "test"
paramCount = 0
}
```

View File

@@ -65,7 +65,7 @@ class ConstructorFinder(
private var modifiers: ModifierRules? = null private var modifiers: ModifierRules? = null
/** /**
* [Constructor] 参数个数 * 设置 [Constructor] 参数个数
* *
* 你可以不使用 [param] 指定参数类型而是仅使用此变量指定参数个数 * 你可以不使用 [param] 指定参数类型而是仅使用此变量指定参数个数
* *
@@ -74,7 +74,7 @@ class ConstructorFinder(
var paramCount = -1 var paramCount = -1
/** /**
* [Constructor] 筛选条件 * 设置 [Constructor] 标识符筛选条件
* *
* - ❗存在多个 [BaseFinder.IndexTypeCondition] 时除了 [order] 只会生效最后一个 * - ❗存在多个 [BaseFinder.IndexTypeCondition] 时除了 [order] 只会生效最后一个
* @param initiate 方法体 * @param initiate 方法体
@@ -86,11 +86,18 @@ class ConstructorFinder(
} }
/** /**
* [Constructor] 参数 * 设置 [Constructor] 空参数、无参数
*
* @return [BaseFinder.IndexTypeCondition]
*/
fun emptyParam() = paramCount(num = 0)
/**
* 设置 [Constructor] 参数
* *
* 如果同时使用了 [paramCount] 则 [paramTypes] 的数量必须与 [paramCount] 完全匹配 * 如果同时使用了 [paramCount] 则 [paramTypes] 的数量必须与 [paramCount] 完全匹配
* *
* - ❗无参 [Constructor] 不要使用此方法 * - ❗无参 [Constructor] 请使用 [emptyParam] 设置查询条件
* *
* - ❗有参 [Constructor] 必须使用此方法设定参数或使用 [paramCount] 指定个数 * - ❗有参 [Constructor] 必须使用此方法设定参数或使用 [paramCount] 指定个数
* *
@@ -99,7 +106,7 @@ class ConstructorFinder(
* @return [BaseFinder.IndexTypeCondition] * @return [BaseFinder.IndexTypeCondition]
*/ */
fun param(vararg paramType: Any): IndexTypeCondition { fun param(vararg paramType: Any): IndexTypeCondition {
if (paramType.isEmpty()) error("paramTypes is empty, please delete param() method") if (paramType.isEmpty()) error("paramTypes is empty, please use emptyParam() instead")
paramTypes = ArrayList<Class<*>>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray() paramTypes = ArrayList<Class<*>>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray()
return IndexTypeCondition(IndexConfigType.MATCH) return IndexTypeCondition(IndexConfigType.MATCH)
} }
@@ -111,7 +118,7 @@ class ConstructorFinder(
fun order() = IndexTypeCondition(IndexConfigType.ORDER) fun order() = IndexTypeCondition(IndexConfigType.ORDER)
/** /**
* [Constructor] 参数个数 * 设置 [Constructor] 参数个数
* *
* 你可以不使用 [param] 指定参数类型而是仅使用此方法指定参数个数 * 你可以不使用 [param] 指定参数类型而是仅使用此方法指定参数个数
* *

View File

@@ -55,14 +55,14 @@ class FieldFinder(
private var modifiers: ModifierRules? = null private var modifiers: ModifierRules? = null
/** /**
* [Field] 名称 * 设置 [Field] 名称
* *
* - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Field] * - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Field]
*/ */
var name = "" var name = ""
/** /**
* [Field] 类型 * 设置 [Field] 类型
* *
* - ❗只能是 [Class]、[String]、[VariousClass] * - ❗只能是 [Class]、[String]、[VariousClass]
* *
@@ -71,7 +71,7 @@ class FieldFinder(
var type: Any? = null var type: Any? = null
/** /**
* [Field] 筛选条件 * 设置 [Field] 标识符筛选条件
* *
* 可不设置筛选条件 - 默认模糊查找并取第一个匹配的 [Field] * 可不设置筛选条件 - 默认模糊查找并取第一个匹配的 [Field]
* *
@@ -91,7 +91,7 @@ class FieldFinder(
fun order() = IndexTypeCondition(IndexConfigType.ORDER) fun order() = IndexTypeCondition(IndexConfigType.ORDER)
/** /**
* [Field] 名称 * 设置 [Field] 名称
* *
* - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Field] * - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Field]
* *
@@ -105,7 +105,7 @@ class FieldFinder(
} }
/** /**
* [Field] 类型 * 设置 [Field] 类型
* *
* - 可不填写类型 - 默认模糊查找并取第一个匹配的 [Field] * - 可不填写类型 - 默认模糊查找并取第一个匹配的 [Field]
* *

View File

@@ -65,14 +65,14 @@ class MethodFinder(
private var modifiers: ModifierRules? = null private var modifiers: ModifierRules? = null
/** /**
* [Method] 名称 * 设置 [Method] 名称
* *
* - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Method] * - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Method]
*/ */
var name = "" var name = ""
/** /**
* [Method] 参数个数 * 设置 [Method] 参数个数
* *
* 你可以不使用 [param] 指定参数类型而是仅使用此变量指定参数个数 * 你可以不使用 [param] 指定参数类型而是仅使用此变量指定参数个数
* *
@@ -90,7 +90,7 @@ class MethodFinder(
var returnType: Any? = null var returnType: Any? = null
/** /**
* [Method] 筛选条件 * 设置 [Method] 标识符筛选条件
* *
* 可不设置筛选条件 - 默认模糊查找并取第一个匹配的 [Method] * 可不设置筛选条件 - 默认模糊查找并取第一个匹配的 [Method]
* *
@@ -104,11 +104,18 @@ class MethodFinder(
} }
/** /**
* [Method] 参数 * 设置 [Method] 空参数、无参数
*
* @return [BaseFinder.IndexTypeCondition]
*/
fun emptyParam() = paramCount(num = 0)
/**
* 设置 [Method] 参数
* *
* 如果同时使用了 [paramCount] 则 [paramTypes] 的数量必须与 [paramCount] 完全匹配 * 如果同时使用了 [paramCount] 则 [paramTypes] 的数量必须与 [paramCount] 完全匹配
* *
* - ❗无参 [Method] 不要使用此方法 * - ❗无参 [Method] 请使用 [emptyParam] 设置查询条件
* *
* - ❗有参 [Method] 必须使用此方法设定参数或使用 [paramCount] 指定个数 * - ❗有参 [Method] 必须使用此方法设定参数或使用 [paramCount] 指定个数
* *
@@ -117,7 +124,7 @@ class MethodFinder(
* @return [BaseFinder.IndexTypeCondition] * @return [BaseFinder.IndexTypeCondition]
*/ */
fun param(vararg paramType: Any): IndexTypeCondition { fun param(vararg paramType: Any): IndexTypeCondition {
if (paramType.isEmpty()) error("paramTypes is empty, please delete param() method") if (paramType.isEmpty()) error("paramTypes is empty, please use emptyParam() instead")
paramTypes = ArrayList<Class<*>>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray() paramTypes = ArrayList<Class<*>>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray()
return IndexTypeCondition(IndexConfigType.MATCH) return IndexTypeCondition(IndexConfigType.MATCH)
} }
@@ -129,7 +136,7 @@ class MethodFinder(
fun order() = IndexTypeCondition(IndexConfigType.ORDER) fun order() = IndexTypeCondition(IndexConfigType.ORDER)
/** /**
* [Method] 名称 * 设置 [Method] 名称
* *
* - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Method] * - ❗若不填写名称则必须存在一个其它条件 - 默认模糊查找并取第一个匹配的 [Method]
* *
@@ -143,7 +150,7 @@ class MethodFinder(
} }
/** /**
* [Method] 参数个数 * 设置 [Method] 参数个数
* *
* 你可以不使用 [param] 指定参数类型而是仅使用此方法指定参数个数 * 你可以不使用 [param] 指定参数类型而是仅使用此方法指定参数个数
* *
@@ -159,7 +166,7 @@ class MethodFinder(
} }
/** /**
* [Method] 返回值 * 设置 [Method] 返回值
* *
* 可不填写返回值 - 默认模糊查找并取第一个匹配的 [Method] * 可不填写返回值 - 默认模糊查找并取第一个匹配的 [Method]
* *