Use setStaticField instead
This commit is contained in:
parent
83d5dbdc27
commit
a652a81201
|
|
@ -23,36 +23,29 @@ package io.github.lsposed.manager;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
public class Constants {
|
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() {
|
public static int getXposedApiVersion() {
|
||||||
try {
|
return xposedApiVersion;
|
||||||
return -1;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getXposedVersion() {
|
public static String getXposedVersion() {
|
||||||
try {
|
return xposedVersion;
|
||||||
return null;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getXposedVersionCode() {
|
public static int getXposedVersionCode() {
|
||||||
try {
|
return xposedVersionCode;
|
||||||
return -1;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getXposedVariant() {
|
public static String getXposedVariant() {
|
||||||
try {
|
return xposedVariant;
|
||||||
return null;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getEnabledModulesListFile() {
|
public static String getEnabledModulesListFile() {
|
||||||
|
|
@ -68,35 +61,19 @@ public class Constants {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getBaseDir() {
|
public static String getBaseDir() {
|
||||||
try {
|
return baseDir;
|
||||||
return null;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getLogDir() {
|
public static String getLogDir() {
|
||||||
try {
|
return logDir;
|
||||||
return null;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getMiscDir() {
|
public static String getMiscDir() {
|
||||||
try {
|
return miscDir;
|
||||||
return null;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPermissive() {
|
public static boolean isPermissive() {
|
||||||
try {
|
return permissive;
|
||||||
return true;
|
|
||||||
} catch (Throwable ignored) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showErrorToast(int type) {
|
public static void showErrorToast(int type) {
|
||||||
|
|
|
||||||
|
|
@ -32,26 +32,41 @@ import io.github.lsposed.lspd.util.Utils;
|
||||||
public class XposedInstallerHooker {
|
public class XposedInstallerHooker {
|
||||||
|
|
||||||
public static void hookXposedInstaller(final ClassLoader classLoader) {
|
public static void hookXposedInstaller(final ClassLoader classLoader) {
|
||||||
String variant_;
|
final String variant;
|
||||||
switch (Main.getEdxpVariant()) {
|
switch (Main.getEdxpVariant()) {
|
||||||
case EdxpImpl.YAHFA:
|
case EdxpImpl.YAHFA:
|
||||||
variant_ = "YAHFA";
|
variant = "YAHFA";
|
||||||
break;
|
break;
|
||||||
case EdxpImpl.SANDHOOK:
|
case EdxpImpl.SANDHOOK:
|
||||||
variant_ = "SandHook";
|
variant = "SandHook";
|
||||||
break;
|
break;
|
||||||
case EdxpImpl.NONE:
|
case EdxpImpl.NONE:
|
||||||
default:
|
default:
|
||||||
variant_ = "Unknown";
|
variant = "Unknown";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
final String variant = variant_;
|
|
||||||
|
|
||||||
Utils.logI("Found LSPosed Manager, hooking it");
|
Utils.logI("Found LSPosed Manager, hooking it");
|
||||||
|
|
||||||
// LSPosed Manager R
|
// LSPosed Manager R
|
||||||
try {
|
try {
|
||||||
Class<?> ConstantsClass = XposedHelpers.findClass("io.github.lsposed.manager.Constants", classLoader);
|
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() {
|
XposedHelpers.findAndHookMethod(ConstantsClass, "getXposedApiVersion", new XC_MethodReplacement() {
|
||||||
@Override
|
@Override
|
||||||
protected Object replaceHookedMethod(MethodHookParam param) {
|
protected Object replaceHookedMethod(MethodHookParam param) {
|
||||||
|
|
@ -70,12 +85,6 @@ public class XposedInstallerHooker {
|
||||||
return BuildConfig.VERSION_CODE;
|
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() {
|
XposedHelpers.findAndHookMethod(ConstantsClass, "getXposedVariant", new XC_MethodReplacement() {
|
||||||
@Override
|
@Override
|
||||||
protected Object replaceHookedMethod(MethodHookParam param) {
|
protected Object replaceHookedMethod(MethodHookParam param) {
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,7 @@ androidBuildToolsVersion=30.0.3
|
||||||
apiCode=93
|
apiCode=93
|
||||||
androidCompileSdkVersion=30
|
androidCompileSdkVersion=30
|
||||||
androidMinSdkVersion=26
|
androidMinSdkVersion=26
|
||||||
org.gradle.jvmargs=-Xmx2048M
|
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
android.prefabVersion=1.1.2
|
android.prefabVersion=1.1.2
|
||||||
versionName=v0.5.4.0
|
versionName=v0.5.4.1
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue