This commit is contained in:
2022-02-03 03:45:11 +08:00
parent c9cc80c351
commit fa5ef89e20
2 changed files with 16 additions and 2 deletions

View File

@@ -35,6 +35,7 @@ import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.demo.InjectTest
import com.highcapable.yukihookapi.demo.MainActivity
import com.highcapable.yukihookapi.hook.factory.encase
import com.highcapable.yukihookapi.hook.factory.findMethod
import com.highcapable.yukihookapi.hook.proxy.YukiHookInitializeProxy
import com.highcapable.yukihookapi.hook.type.ActivityClass
import com.highcapable.yukihookapi.hook.type.BundleClass
@@ -88,6 +89,12 @@ class HookMain : YukiHookInitializeProxy {
}.show()
}
}
injectMethod {
specify = hookClass.findMethod(name = "onStart")
afterHook {
Toast.makeText(instance(), "手动 Hook", Toast.LENGTH_SHORT).show()
}
}
}
}
}

View File

@@ -112,6 +112,13 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
/** 方法返回值 */
var returnType: Class<*>? = null
/**
* 手动指定方法
*
* 你可以调用 [hookClass] 来手动查询要 Hook 的方法
*/
var specify: Member? = null
/**
* 方法参数
* @param param 参数数组
@@ -217,7 +224,7 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
* @throws NoSuchMethodError 如果找不到方法
*/
private val hookMember: Member by lazy {
when {
specify ?: when {
name.isBlank() && !isConstructor -> error("Method name cannot be empty")
isConstructor ->
if (params != null)
@@ -295,7 +302,7 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
Log.e(YukiHookAPI.TAG, "Try to hook $hookClass[$hookMember] got an Exception", throwable)
}
override fun toString() = "$name$returnType$params$isConstructor$hookMember$hookClass#YukiHook"
override fun toString() = "$name$returnType$params$isConstructor$hookMember$hookClass$specify#YukiHook"
/**
* 监听 Hook 结果实现类