Added more params function such as loadApp, loadZygote, loadSystem, withProcess in PackageParam

This commit is contained in:
2022-10-04 06:45:45 +08:00
parent 4670361507
commit fbb8cbdb8c
3 changed files with 186 additions and 0 deletions

View File

@@ -356,6 +356,14 @@ inline fun loadApp(name: String, initiate: PackageParam.() -> Unit)
fun loadApp(name: String, hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit)
```
```kotlin:no-line-numbers
fun loadApp(name: String, vararg hooker: YukiBaseHooker)
```
**Change Records**
`v1.0` `first`
@@ -364,6 +372,10 @@ fun loadApp(name: String, hooker: YukiBaseHooker)
将方法体进行 inline
`v1.1.4` `modified`
新增两个方法,可以同时装载多个 APP 与子 Hooker
**Function Illustrate**
> 装载并 Hook 指定包名的 APP。
@@ -404,6 +416,26 @@ loadApp {
loadApp(hooker = CustomHooker)
```
若想要同时装载多个需要 Hook 的 APP可以直接使用如下方式。
> The following example
```kotlin
// 同时装载多个需要 Hook 的 APP
loadApp("com.example.test", "com.example.next") {
// Your code here.
}
```
若想要同时装载多个子 Hooker可以直接使用如下方式但此时只能指定一个需要 Hook 的 APP。
> The following example
```kotlin
// 同时装载多个子 Hooker
loadApp("com.example.test", CustomHooker1, CustomHooker2)
```
## loadZygote <span class="symbol">- method</span>
```kotlin:no-line-numbers
@@ -414,10 +446,18 @@ inline fun loadZygote(initiate: PackageParam.() -> Unit)
fun loadZygote(hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun loadZygote(vararg hooker: YukiBaseHooker)
```
**Change Records**
`v1.0.80` `added`
`v1.1.4` `modified`
新增一个方法,可以同时装载多个子 Hooker
**Function Illustrate**
> 装载 APP Zygote 事件。
@@ -434,10 +474,18 @@ inline fun loadSystem(initiate: PackageParam.() -> Unit)
fun loadSystem(hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun loadSystem(vararg hooker: YukiBaseHooker)
```
**Change Records**
`v1.0.82` `added`
`v1.1.4` `modified`
新增一个方法,可以同时装载多个子 Hooker
**Function Illustrate**
> 装载并 Hook 系统框架。
@@ -454,10 +502,22 @@ inline fun withProcess(name: String, initiate: PackageParam.() -> Unit)
fun withProcess(name: String, hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun withProcess(vararg name: String, hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun withProcess(name: String, vararg hooker: YukiBaseHooker)
```
**Change Records**
`v1.0.70` `added`
`v1.1.4` `modified`
新增两个方法,可以同时装载多个进程与子 Hooker
**Function Illustrate**
> 装载并 Hook APP 的指定进程。

View File

@@ -348,6 +348,14 @@ inline fun loadApp(name: String, initiate: PackageParam.() -> Unit)
fun loadApp(name: String, hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit)
```
```kotlin:no-line-numbers
fun loadApp(name: String, vararg hooker: YukiBaseHooker)
```
**变更记录**
`v1.0` `添加`
@@ -356,6 +364,10 @@ fun loadApp(name: String, hooker: YukiBaseHooker)
将方法体进行 inline
`v1.1.4` `修改`
新增两个方法,可以同时装载多个 APP 与子 Hooker
**功能描述**
> 装载并 Hook 指定包名的 APP。
@@ -396,6 +408,26 @@ loadApp {
loadApp(hooker = CustomHooker)
```
若想要同时装载多个需要 Hook 的 APP可以直接使用如下方式。
> 示例如下
```kotlin
// 同时装载多个需要 Hook 的 APP
loadApp("com.example.test", "com.example.next") {
// Your code here.
}
```
若想要同时装载多个子 Hooker可以直接使用如下方式但此时只能指定一个需要 Hook 的 APP。
> 示例如下
```kotlin
// 同时装载多个子 Hooker
loadApp("com.example.test", CustomHooker1, CustomHooker2)
```
## loadZygote <span class="symbol">- method</span>
```kotlin:no-line-numbers
@@ -406,10 +438,18 @@ inline fun loadZygote(initiate: PackageParam.() -> Unit)
fun loadZygote(hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun loadZygote(vararg hooker: YukiBaseHooker)
```
**变更记录**
`v1.0.80` `新增`
`v1.1.4` `修改`
新增一个方法,可以同时装载多个子 Hooker
**功能描述**
> 装载 APP Zygote 事件。
@@ -426,10 +466,18 @@ inline fun loadSystem(initiate: PackageParam.() -> Unit)
fun loadSystem(hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun loadSystem(vararg hooker: YukiBaseHooker)
```
**变更记录**
`v1.0.82` `新增`
`v1.1.4` `修改`
新增一个方法,可以同时装载多个子 Hooker
**功能描述**
> 装载并 Hook 系统框架。
@@ -446,10 +494,22 @@ inline fun withProcess(name: String, initiate: PackageParam.() -> Unit)
fun withProcess(name: String, hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun withProcess(vararg name: String, hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun withProcess(name: String, vararg hooker: YukiBaseHooker)
```
**变更记录**
`v1.0.70` `新增`
`v1.1.4` `修改`
新增两个方法,可以同时装载多个进程与子 Hooker
**功能描述**
> 装载并 Hook APP 的指定进程。

View File

@@ -227,6 +227,20 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) initiate(this)
}
/**
* 装载并 Hook 指定、全部包名的 APP
*
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
*
* 若要 Hook 系统框架 - 请使用 [loadSystem]
* @param name 包名数组 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
* @param initiate 方法体
*/
inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit) {
if (name.isEmpty()) return loadApp(initiate = initiate)
if (wrapper?.type != HookEntryType.ZYGOTE && name.any { it == packageName }) initiate(this)
}
/**
* 装载并 Hook 指定、全部包名的 APP
*
@@ -240,6 +254,20 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) loadHooker(hooker)
}
/**
* 装载并 Hook 指定、全部包名的 APP
*
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
*
* 若要 Hook 系统框架 - 请使用 [loadSystem]
* @param name 包名 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
* @param hooker Hook 子类数组
*/
fun loadApp(name: String = "", vararg hooker: YukiBaseHooker) {
if (hooker.isEmpty()) error("loadApp method need a \"hooker\" param")
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) hooker.forEach { loadHooker(it) }
}
/**
* 装载并 Hook 系统框架
* @param initiate 方法体
@@ -252,6 +280,15 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
*/
fun loadSystem(hooker: YukiBaseHooker) = loadApp(YukiHookBridge.SYSTEM_FRAMEWORK_NAME, hooker)
/**
* 装载并 Hook 系统框架
* @param hooker Hook 子类数组
*/
fun loadSystem(vararg hooker: YukiBaseHooker) {
if (hooker.isEmpty()) error("loadSystem method need a \"hooker\" param")
loadApp(YukiHookBridge.SYSTEM_FRAMEWORK_NAME, *hooker)
}
/**
* 装载 APP Zygote 事件
* @param initiate 方法体
@@ -268,6 +305,15 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
if (wrapper?.type == HookEntryType.ZYGOTE) loadHooker(hooker)
}
/**
* 装载 APP Zygote 事件
* @param hooker Hook 子类数组
*/
fun loadZygote(vararg hooker: YukiBaseHooker) {
if (hooker.isEmpty()) error("loadZygote method need a \"hooker\" param")
if (wrapper?.type == HookEntryType.ZYGOTE) hooker.forEach { loadHooker(it) }
}
/**
* 装载并 Hook APP 的指定进程
* @param name 进程名 - 若要指定主进程可填写 [mainProcessName] - 效果与 [isFirstApplication] 一致
@@ -277,6 +323,16 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
if (processName == name) initiate(this)
}
/**
* 装载并 Hook APP 的指定进程
* @param name 进程名数组 - 若要指定主进程可填写 [mainProcessName] - 效果与 [isFirstApplication] 一致
* @param initiate 方法体
*/
inline fun withProcess(vararg name: String, initiate: PackageParam.() -> Unit) {
if (name.isEmpty()) error("withProcess method need a \"name\" param")
if (name.any { it == processName }) initiate(this)
}
/**
* 装载并 Hook APP 的指定进程
* @param name 进程名 - 若要指定主进程可填写 [mainProcessName] - 效果与 [isFirstApplication] 一致
@@ -286,6 +342,16 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
if (processName == name) loadHooker(hooker)
}
/**
* 装载并 Hook APP 的指定进程
* @param name 进程名 - 若要指定主进程可填写 [mainProcessName] - 效果与 [isFirstApplication] 一致
* @param hooker Hook 子类数组
*/
fun withProcess(name: String, vararg hooker: YukiBaseHooker) {
if (name.isEmpty()) error("withProcess method need a \"hooker\" param")
if (processName == name) hooker.forEach { loadHooker(it) }
}
/**
* 装载 Hook 子类
*