From 2ef6807ac0d4e81974ab8dd29b09a3ad74a7682e Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Sat, 2 Aug 2025 18:02:50 +0700 Subject: [PATCH] fix: get correct class for bridgeless --- .../kotlin/io/github/revenge/xposed/Main.kt | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/app/src/main/kotlin/io/github/revenge/xposed/Main.kt b/app/src/main/kotlin/io/github/revenge/xposed/Main.kt index 93a5788..597447b 100644 --- a/app/src/main/kotlin/io/github/revenge/xposed/Main.kt +++ b/app/src/main/kotlin/io/github/revenge/xposed/Main.kt @@ -81,29 +81,23 @@ class Main : IXposedHookLoadPackage { param: XC_LoadPackage.LoadPackageParam, onActivityCreate: ((activity: Activity) -> Unit) -> Unit ) = with (param) { - val catalystInstanceImpl = classLoader.loadClass("com.facebook.react.bridge.CatalystInstanceImpl") + val reactInstance = classLoader.loadClass("com.facebook.react.runtime.ReactInstance$1") for (module in modules) module.onInit(param) - val loadScriptFromAssets = catalystInstanceImpl.getDeclaredMethod( + val loadScriptFromAssets = reactInstance.getDeclaredMethod( "loadScriptFromAssets", AssetManager::class.java, String::class.java, Boolean::class.javaPrimitiveType - ).apply { isAccessible = true } + ) - val loadScriptFromFile = catalystInstanceImpl.getDeclaredMethod( + val loadScriptFromFile = reactInstance.getDeclaredMethod( "loadScriptFromFile", String::class.java, String::class.java, Boolean::class.javaPrimitiveType - ).apply { isAccessible = true } - - val setGlobalVariable = catalystInstanceImpl.getDeclaredMethod( - "setGlobalVariable", - String::class.java, - String::class.java - ).apply { isAccessible = true } + ) val cacheDir = File(appInfo.dataDir, "cache/pyoncord").apply { mkdirs() } val filesDir = File(appInfo.dataDir, "files/pyoncord").apply { mkdirs() } @@ -184,11 +178,15 @@ class Main : IXposedHookLoadPackage { override fun beforeHookedMethod(param: MethodHookParam) { runBlocking { httpJob.join() } - XposedBridge.invokeOriginalMethod( - setGlobalVariable, - param.thisObject, - arrayOf("__PYON_LOADER__", buildLoaderJsonString()) - ) + // TODO: Make this work again + // Solution: Inject a native module called RevengeGlobals that exposes a method that returns a Map + // Then in JS, we can call the method and set the globals accordingly + // Because setGlobalVariable no longer exists in bridgeless (unless we want to do CXX modules) + // XposedBridge.invokeOriginalMethod( + // setGlobalVariable, + // param.thisObject, + // arrayOf("__PYON_LOADER__", buildLoaderJsonString()) + // ) preloadsDir .walk()