This commit is contained in:
2022-02-09 23:27:50 +08:00
parent c51dac9b7e
commit d4c02f04db
3 changed files with 23 additions and 2 deletions

View File

@@ -431,7 +431,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
* @param throwable 异常信息 * @param throwable 异常信息
*/ */
private fun onHookFailureMsg(throwable: 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" override fun toString() = "$member$tag#YukiHook"

View File

@@ -25,7 +25,7 @@
* *
* This file is Created by fankes on 2022/2/2. * 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 package com.highcapable.yukihookapi.hook.param
@@ -114,6 +114,15 @@ class HookParam(private val wrapper: HookParamWrapper) {
*/ */
fun args(index: Int = 0) = ArgsModifyer(index) fun args(index: Int = 0) = ArgsModifyer(index)
/**
* 执行原始 [Member]
*
* 未进行 Hook 的 [Member]
* @param args 参数实例
* @return [T]
*/
fun <T> Member.invokeOriginal(vararg args: Array<Any?>?) = wrapper.invokeOriginalMember(member = this, *args) as? T?
/** /**
* 设置 [result] 返回值为 true * 设置 [result] 返回值为 true
* *

View File

@@ -29,6 +29,7 @@ package com.highcapable.yukihookapi.hook.param.wrapper
import com.highcapable.yukihookapi.hook.param.HookParam import com.highcapable.yukihookapi.hook.param.HookParam
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import java.lang.reflect.Member import java.lang.reflect.Member
/** /**
@@ -73,4 +74,15 @@ class HookParamWrapper(private val baseParam: XC_MethodHook.MethodHookParam) {
fun setArgs(index: Int, any: Any?) { fun setArgs(index: Int, any: Any?) {
baseParam.args[index] = any baseParam.args[index] = any
} }
/**
* 执行原始 [Member]
*
* 未进行 Hook 的 [Member]
* @param member 实例
* @param args 参数实例
* @return [Any] or null
*/
fun invokeOriginalMember(member: Member, vararg args: Array<Any?>?): Any? =
XposedBridge.invokeOriginalMethod(member, instance, args)
} }