diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt index c05fdad7..0751329f 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt @@ -563,7 +563,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara } } } - return YukiHookHelper.hookMethod(hookMethod = this, if (isReplaceHookMode) replaceMent else beforeAfterHook) + return YukiHookHelper.hookMember(member = this, if (isReplaceHookMode) replaceMent else beforeAfterHook) } /** diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/YukiHookBridge.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/YukiHookBridge.kt index c170165e..31d09da3 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/YukiHookBridge.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/YukiHookBridge.kt @@ -275,7 +275,7 @@ object YukiHookBridge { /** Hook [Application] 装载方法 */ runCatching { if (AppLifecycleCallback.isCallbackSetUp) { - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(ApplicationClass, name = "attach", ContextClass), object : YukiMemberHook() { + YukiHookHelper.hookMember(YukiHookHelper.findMethod(ApplicationClass, name = "attach", ContextClass), object : YukiMemberHook() { override fun beforeHookedMember(wrapper: HookParamWrapper) { (wrapper.args?.get(0) as? Context?)?.also { AppLifecycleCallback.attachBaseContextCallback?.invoke(it, false) } } @@ -284,17 +284,17 @@ object YukiHookBridge { (wrapper.args?.get(0) as? Context?)?.also { AppLifecycleCallback.attachBaseContextCallback?.invoke(it, true) } } }) - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(ApplicationClass, name = "onTerminate"), object : YukiMemberHook() { + YukiHookHelper.hookMember(YukiHookHelper.findMethod(ApplicationClass, name = "onTerminate"), object : YukiMemberHook() { override fun afterHookedMember(wrapper: HookParamWrapper) { (wrapper.instance as? Application?)?.also { AppLifecycleCallback.onTerminateCallback?.invoke(it) } } }) - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(ApplicationClass, name = "onLowMemory"), object : YukiMemberHook() { + YukiHookHelper.hookMember(YukiHookHelper.findMethod(ApplicationClass, name = "onLowMemory"), object : YukiMemberHook() { override fun afterHookedMember(wrapper: HookParamWrapper) { (wrapper.instance as? Application?)?.also { AppLifecycleCallback.onLowMemoryCallback?.invoke(it) } } }) - YukiHookHelper.hookMethod( + YukiHookHelper.hookMember( YukiHookHelper.findMethod(ApplicationClass, name = "onTrimMemory", IntType), object : YukiMemberHook() { override fun afterHookedMember(wrapper: HookParamWrapper) { @@ -303,7 +303,7 @@ object YukiHookBridge { AppLifecycleCallback.onTrimMemoryCallback?.invoke(self, type) } }) - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(ApplicationClass, name = "onConfigurationChanged", ConfigurationClass), + YukiHookHelper.hookMember(YukiHookHelper.findMethod(ApplicationClass, name = "onConfigurationChanged", ConfigurationClass), object : YukiMemberHook() { override fun afterHookedMember(wrapper: HookParamWrapper) { val self = wrapper.instance as? Application? ?: return @@ -313,7 +313,7 @@ object YukiHookBridge { }) } if (YukiHookAPI.Configs.isEnableDataChannel || AppLifecycleCallback.isCallbackSetUp) - YukiHookHelper.hookMethod( + YukiHookHelper.hookMember( YukiHookHelper.findMethod(InstrumentationClass, name = "callApplicationOnCreate", ApplicationClass), object : YukiMemberHook() { override fun afterHookedMember(wrapper: HookParamWrapper) { @@ -364,7 +364,7 @@ object YukiHookBridge { */ internal fun hookClassLoader(loader: ClassLoader?, result: (clazz: Class<*>, resolve: Boolean) -> Unit) { runCatching { - YukiHookHelper.hookMethod( + YukiHookHelper.hookMember( YukiHookHelper.findMethod(JavaClassLoader, name = "loadClass", StringType, BooleanType), object : YukiMemberHook() { override fun afterHookedMember(wrapper: HookParamWrapper) { @@ -387,20 +387,20 @@ object YukiHookBridge { if (YukiHookAPI.Configs.isEnableHookModuleStatus) YukiHookHelper.findClass(loader, YukiHookModuleStatus::class.java).also { statusClass -> if (isHookResourcesStatus.not()) { - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.IS_ACTIVE_METHOD_NAME), + YukiHookHelper.hookMember(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.IS_ACTIVE_METHOD_NAME), object : YukiMemberReplacement() { override fun replaceHookedMember(wrapper: HookParamWrapper) = true }) - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.GET_XPOSED_TAG_METHOD_NAME), + YukiHookHelper.hookMember(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.GET_XPOSED_TAG_METHOD_NAME), object : YukiMemberReplacement() { override fun replaceHookedMember(wrapper: HookParamWrapper) = executorName }) - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.GET_XPOSED_VERSION_METHOD_NAME), + YukiHookHelper.hookMember(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.GET_XPOSED_VERSION_METHOD_NAME), object : YukiMemberReplacement() { override fun replaceHookedMember(wrapper: HookParamWrapper) = executorVersion }) } else - YukiHookHelper.hookMethod(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.HAS_RESOURCES_HOOK_METHOD_NAME), + YukiHookHelper.hookMember(YukiHookHelper.findMethod(statusClass, YukiHookModuleStatus.HAS_RESOURCES_HOOK_METHOD_NAME), object : YukiMemberReplacement() { override fun replaceHookedMember(wrapper: HookParamWrapper) = true }) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/factory/YukiBridgeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/factory/YukiBridgeFactory.kt index f07c5c54..0c877435 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/factory/YukiBridgeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/bridge/factory/YukiBridgeFactory.kt @@ -76,7 +76,7 @@ internal object YukiHookHelper { internal fun findClass(loader: ClassLoader?, baseClass: Class<*>) = loader?.loadClass(baseClass.name) ?: error("ClassLoader is null") /** - * 查找变量 + * 查找 [Field] * @param baseClass 所在类 * @param name 变量名称 * @return [Field] @@ -85,7 +85,7 @@ internal object YukiHookHelper { internal fun findField(baseClass: Class<*>, name: String) = baseClass.getDeclaredField(name).apply { isAccessible = true } /** - * 查找方法 + * 查找 [Method] * @param baseClass 所在类 * @param name 方法名称 * @param paramTypes 方法参数 @@ -96,21 +96,21 @@ internal object YukiHookHelper { baseClass.getDeclaredMethod(name, *paramTypes).apply { isAccessible = true } /** - * Hook 方法 + * Hook [Member] * * 对接 [XposedBridge.hookMethod] - * @param hookMethod 需要 Hook 的方法、构造方法 + * @param member 需要 Hook 的方法、构造方法 * @param callback 回调 * @return [Pair] - ([YukiMemberHook.Unhook] or null,[Boolean] 是否已经 Hook) */ - internal fun hookMethod(hookMethod: Member?, callback: YukiHookCallback): Pair { + internal fun hookMember(member: Member, callback: YukiHookCallback): Pair { runCatching { YukiHookedMembers.hookedMembers.takeIf { it.isNotEmpty() }?.forEach { - if (it.member.toString() == hookMethod.toString()) return@runCatching it + if (it.member.toString() == member.toString()) return@runCatching it } } return if (YukiHookBridge.hasXposedBridge) - YukiMemberHook.Unhook.wrapper(XposedBridge.hookMethod(hookMethod, callback.compat())).let { + YukiMemberHook.Unhook.wrapper(XposedBridge.hookMethod(member, callback.compat())).let { YukiHookedMembers.hookedMembers.add(it) Pair(it, false) }