diff --git a/app/src/main/java/io/github/lsposed/manager/Constants.java b/app/src/main/java/io/github/lsposed/manager/Constants.java index d3b05cd3..0a981850 100644 --- a/app/src/main/java/io/github/lsposed/manager/Constants.java +++ b/app/src/main/java/io/github/lsposed/manager/Constants.java @@ -23,36 +23,29 @@ package io.github.lsposed.manager; import android.widget.Toast; public class Constants { + private static int xposedApiVersion = -1; + private static String xposedVersion = null; + private static int xposedVersionCode = -1; + private static String xposedVariant = null; + private static String baseDir = null; + private static String logDir = null; + private static String miscDir = null; + private static boolean permissive = true; + public static int getXposedApiVersion() { - try { - return -1; - } catch (Throwable ignored) { - return -1; - } + return xposedApiVersion; } public static String getXposedVersion() { - try { - return null; - } catch (Throwable ignored) { - return null; - } + return xposedVersion; } public static int getXposedVersionCode() { - try { - return -1; - } catch (Throwable ignored) { - return -1; - } + return xposedVersionCode; } public static String getXposedVariant() { - try { - return null; - } catch (Throwable ignored) { - return null; - } + return xposedVariant; } public static String getEnabledModulesListFile() { @@ -68,35 +61,19 @@ public class Constants { } public static String getBaseDir() { - try { - return null; - } catch (Throwable ignored) { - return null; - } + return baseDir; } public static String getLogDir() { - try { - return null; - } catch (Throwable ignored) { - return null; - } + return logDir; } public static String getMiscDir() { - try { - return null; - } catch (Throwable ignored) { - return null; - } + return miscDir; } public static boolean isPermissive() { - try { - return true; - } catch (Throwable ignored) { - return true; - } + return permissive; } public static void showErrorToast(int type) { diff --git a/core/src/main/java/io/github/lsposed/lspd/hooker/XposedInstallerHooker.java b/core/src/main/java/io/github/lsposed/lspd/hooker/XposedInstallerHooker.java index 58211600..fad4f758 100644 --- a/core/src/main/java/io/github/lsposed/lspd/hooker/XposedInstallerHooker.java +++ b/core/src/main/java/io/github/lsposed/lspd/hooker/XposedInstallerHooker.java @@ -32,26 +32,41 @@ import io.github.lsposed.lspd.util.Utils; public class XposedInstallerHooker { public static void hookXposedInstaller(final ClassLoader classLoader) { - String variant_; + final String variant; switch (Main.getEdxpVariant()) { case EdxpImpl.YAHFA: - variant_ = "YAHFA"; + variant = "YAHFA"; break; case EdxpImpl.SANDHOOK: - variant_ = "SandHook"; + variant = "SandHook"; break; case EdxpImpl.NONE: default: - variant_ = "Unknown"; + variant = "Unknown"; break; } - final String variant = variant_; Utils.logI("Found LSPosed Manager, hooking it"); // LSPosed Manager R try { Class ConstantsClass = XposedHelpers.findClass("io.github.lsposed.manager.Constants", classLoader); + try { + XposedHelpers.setStaticIntField(ConstantsClass, "xposedApiVersion", XposedBridge.getXposedVersion()); + XposedHelpers.setStaticObjectField(ConstantsClass, "xposedVersion", BuildConfig.VERSION_NAME); + XposedHelpers.setStaticIntField(ConstantsClass, "xposedVersionCode", BuildConfig.VERSION_CODE); + XposedHelpers.setStaticIntField(ConstantsClass, "xposedVersionCode", XposedBridge.getXposedVersion()); + XposedHelpers.setStaticObjectField(ConstantsClass, "xposedVariant", variant); + XposedHelpers.setStaticObjectField(ConstantsClass, "baseDir", ConfigManager.getBaseConfigPath() + "/"); + XposedHelpers.setStaticObjectField(ConstantsClass, "logDir", ConfigManager.getLogPath()); + XposedHelpers.setStaticObjectField(ConstantsClass, "miscDir", ConfigManager.getMiscPath()); + XposedHelpers.setStaticBooleanField(ConstantsClass, "permissive", ConfigManager.isPermissive()); + + Utils.logI("Hooked LSPosed Manager"); + return; + } catch (Throwable ignored) { + // fallback + } XposedHelpers.findAndHookMethod(ConstantsClass, "getXposedApiVersion", new XC_MethodReplacement() { @Override protected Object replaceHookedMethod(MethodHookParam param) { @@ -70,12 +85,6 @@ public class XposedInstallerHooker { return BuildConfig.VERSION_CODE; } }); - XposedHelpers.findAndHookMethod(ConstantsClass, "getXposedApiVersion", new XC_MethodReplacement() { - @Override - protected Object replaceHookedMethod(MethodHookParam param) { - return XposedBridge.getXposedVersion(); - } - }); XposedHelpers.findAndHookMethod(ConstantsClass, "getXposedVariant", new XC_MethodReplacement() { @Override protected Object replaceHookedMethod(MethodHookParam param) { diff --git a/gradle.properties b/gradle.properties index 18aa3138..4e9878ab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,7 @@ androidBuildToolsVersion=30.0.3 apiCode=93 androidCompileSdkVersion=30 androidMinSdkVersion=26 -org.gradle.jvmargs=-Xmx2048M android.useAndroidX=true android.enableJetifier=true android.prefabVersion=1.1.2 -versionName=v0.5.4.0 +versionName=v0.5.4.1