fix: get correct class for bridgeless

This commit is contained in:
PalmDevs 2025-08-02 18:02:50 +07:00
parent fe80ca398b
commit 2ef6807ac0
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA

View file

@ -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()