From 132e726a59b0176144340b9207e20501c9c74ba1 Mon Sep 17 00:00:00 2001 From: Amsyar Rasyiq <82711525+amsyarasyiq@users.noreply.github.com> Date: Sat, 20 May 2023 17:10:24 +0000 Subject: [PATCH] Patch resources --- .../kotlin/dev/beefers/vendetta/xposed/Main.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt b/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt index 7c79065..2aa0711 100644 --- a/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt +++ b/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt @@ -5,6 +5,7 @@ import java.lang.Exception import kotlinx.coroutines.* import android.content.res.AssetManager import android.content.res.XModuleResources +import android.content.res.Resources import android.util.Log import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.IXposedHookZygoteInit @@ -75,10 +76,22 @@ class Main : IXposedHookZygoteInit, IXposedHookLoadPackage { val loadScriptFromAssets = catalystInstance.getDeclaredMethod("jniLoadScriptFromAssets", AssetManager::class.java, String::class.java, Boolean::class.javaPrimitiveType) val loadScriptFromFile = catalystInstance.getDeclaredMethod("jniLoadScriptFromFile", String::class.java, String::class.java, Boolean::class.javaPrimitiveType) + // Mirror resource resolver to "com.discord" if the package name is renamed + // I don't know if there's any side effect with this - amsyar@pylix + if (packageName != "com.discord") { + val getIdentifier = Resources::class.java.getDeclaredMethod("getIdentifier", String::class.java, String::class.java, String::class.java); + + XposedBridge.hookMethod(getIdentifier, object: XC_MethodHook() { + override fun beforeHookedMethod(param: MethodHookParam) { + if (param.args[2] == packageName) param.args[2] = "com.discord" + } + }) + } + // TODO: Loader config val hook = object: XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) = with(param) { - Log.i(LOG_TAG, "Hooking ${method.name} to load Pyoncord") + Log.d(LOG_TAG, "Hooking ${method.name} to load Pyoncord") // Load pre-patches and identity XposedBridge.invokeOriginalMethod(loadScriptFromAssets, thisObject, arrayOf(resources.assets, "assets://js/modules.js", true))