diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt index b649fd70..d5d04fbe 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt @@ -431,7 +431,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl * @param throwable 异常信息 */ private fun onHookFailureMsg(throwable: Throwable) = - loggerE(msg = "Try to hook $hookClass[$member] got an Exception [$tag]", e = throwable) + loggerE(msg = "Try to hook ${hookClass.instance ?: hookClass.name}[$member] got an Exception [$tag]", e = throwable) override fun toString() = "$member$tag#YukiHook" diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt index c60eecb6..84349902 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -25,7 +25,7 @@ * * This file is Created by fankes on 2022/2/2. */ -@file:Suppress("unused", "MemberVisibilityCanBePrivate") +@file:Suppress("unused", "MemberVisibilityCanBePrivate", "UNCHECKED_CAST") package com.highcapable.yukihookapi.hook.param @@ -114,6 +114,15 @@ class HookParam(private val wrapper: HookParamWrapper) { */ fun args(index: Int = 0) = ArgsModifyer(index) + /** + * 执行原始 [Member] + * + * 未进行 Hook 的 [Member] + * @param args 参数实例 + * @return [T] + */ + fun Member.invokeOriginal(vararg args: Array?) = wrapper.invokeOriginalMember(member = this, *args) as? T? + /** * 设置 [result] 返回值为 true * diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt index 8f3f19ee..41b51d1d 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt @@ -29,6 +29,7 @@ package com.highcapable.yukihookapi.hook.param.wrapper import com.highcapable.yukihookapi.hook.param.HookParam import de.robv.android.xposed.XC_MethodHook +import de.robv.android.xposed.XposedBridge import java.lang.reflect.Member /** @@ -73,4 +74,15 @@ class HookParamWrapper(private val baseParam: XC_MethodHook.MethodHookParam) { fun setArgs(index: Int, any: Any?) { baseParam.args[index] = any } + + /** + * 执行原始 [Member] + * + * 未进行 Hook 的 [Member] + * @param member 实例 + * @param args 参数实例 + * @return [Any] or null + */ + fun invokeOriginalMember(member: Member, vararg args: Array?): Any? = + XposedBridge.invokeOriginalMethod(member, instance, args) } \ No newline at end of file