From 53970fe277bbea99d8022c9e6f62b897459d1aef Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Wed, 17 Sep 2025 00:33:54 +0700 Subject: [PATCH] fix(modules/PayloadGlobalModule): also hook `loadScriptFromFile` --- .../xposed/modules/PayloadGlobalModule.kt | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/io/github/revenge/xposed/modules/PayloadGlobalModule.kt b/app/src/main/kotlin/io/github/revenge/xposed/modules/PayloadGlobalModule.kt index dd7c83a..946ef7a 100644 --- a/app/src/main/kotlin/io/github/revenge/xposed/modules/PayloadGlobalModule.kt +++ b/app/src/main/kotlin/io/github/revenge/xposed/modules/PayloadGlobalModule.kt @@ -23,8 +23,7 @@ class PayloadGlobalModule(private val modules: List) : Module() { buildJsonObject { put("loaderName", Constants.LOADER_NAME) put("loaderVersion", BuildConfig.VERSION_NAME) - @Suppress("DEPRECATION") - for (module in modules) module.buildPayload(this) + @Suppress("DEPRECATION") for (module in modules) module.buildPayload(this) }) override fun onLoad(packageParam: XC_LoadPackage.LoadPackageParam) = with(packageParam) { @@ -57,16 +56,24 @@ class PayloadGlobalModule(private val modules: List) : Module() { } } - val hook = { instance: Class<*> -> - instance.hookMethod( - "loadScriptFromAssets", AssetManager::class.java, String::class.java, Boolean::class.javaPrimitiveType - ) { - before { - setGlobalVariable(param, GLOBAL_NAME, getPayloadString()) - } + val hook = MethodHookBuilder().run { + before { + setGlobalVariable(param, GLOBAL_NAME, getPayloadString()) } + + build() } - listOf(catalystInstance, reactInstance).forEach { if (it != null) hook(it) } + listOf(catalystInstance, reactInstance).forEach { if (it != null) hook(it, hook) } + } + + private fun hook(instance: Class<*>, hook: XC_MethodHook) { + instance.method( + "loadScriptFromAssets", AssetManager::class.java, String::class.java, Boolean::class.javaPrimitiveType, + ).hook(hook) + + instance.method( + "loadScriptFromFile", String::class.java, String::class.java, Boolean::class.javaPrimitiveType + ).hook(hook) } } \ No newline at end of file