Check old version Manager (#886)
This commit is contained in:
parent
3cc368754b
commit
ba701b0435
|
|
@ -31,7 +31,8 @@ public class Constants {
|
||||||
Toast.makeText(App.getInstance(), R.string.app_destroyed, Toast.LENGTH_LONG).show();
|
Toast.makeText(App.getInstance(), R.string.app_destroyed, Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setBinder(IBinder binder) {
|
public static boolean setBinder(IBinder binder) {
|
||||||
LSPManagerServiceHolder.init(binder);
|
LSPManagerServiceHolder.init(binder);
|
||||||
|
return LSPManagerServiceHolder.getService().asBinder().isBinderAlive();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -100,9 +100,10 @@ public class LoadedApkGetCLHooker extends XC_MethodHook {
|
||||||
blocked = serviceClient.requestManagerBinder(packageName, path, binder);
|
blocked = serviceClient.requestManagerBinder(packageName, path, binder);
|
||||||
}
|
}
|
||||||
if (binder.size() != 0 && binder.get(0) != null) {
|
if (binder.size() != 0 && binder.get(0) != null) {
|
||||||
InstallerVerifier.hookXposedInstaller(lpparam.classLoader, binder.get(0));
|
var ret = InstallerVerifier.sendBinderToManager(lpparam.classLoader, binder.get(0));
|
||||||
|
if (!ret) InstallerVerifier.hookBadManager(classLoader);
|
||||||
} else if (blocked) {
|
} else if (blocked) {
|
||||||
InstallerVerifier.hookXposedInstaller(classLoader);
|
InstallerVerifier.hookBadManager(classLoader);
|
||||||
} else {
|
} else {
|
||||||
XC_LoadPackage.callAll(lpparam);
|
XC_LoadPackage.callAll(lpparam);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ package org.lsposed.lspd.util;
|
||||||
import static org.lsposed.lspd.util.SignInfo.CERTIFICATE;
|
import static org.lsposed.lspd.util.SignInfo.CERTIFICATE;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
|
@ -31,8 +30,6 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import com.android.apksig.ApkVerifier;
|
import com.android.apksig.ApkVerifier;
|
||||||
|
|
||||||
import org.lsposed.lspd.service.ServiceManager;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
|
@ -56,7 +53,7 @@ public class InstallerVerifier {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void hookXposedInstaller(final ClassLoader classLoader) {
|
public static void hookBadManager(final ClassLoader classLoader) {
|
||||||
try {
|
try {
|
||||||
Class<?> ConstantsClass = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader);
|
Class<?> ConstantsClass = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader);
|
||||||
XposedHelpers.findAndHookMethod(android.app.Activity.class, "onCreate", Bundle.class, new XC_MethodHook() {
|
XposedHelpers.findAndHookMethod(android.app.Activity.class, "onCreate", Bundle.class, new XC_MethodHook() {
|
||||||
|
|
@ -72,18 +69,21 @@ public class InstallerVerifier {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
Utils.logW("hookXposedInstaller: ", t);
|
Utils.logW("hookBadManager: ", t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void hookXposedInstaller(final ClassLoader classLoader, IBinder binder) {
|
public static boolean sendBinderToManager(final ClassLoader classLoader, IBinder binder) {
|
||||||
Utils.logI("Found LSPosed Manager, hooking it");
|
Utils.logI("Found LSPosed Manager");
|
||||||
try {
|
try {
|
||||||
var clazz = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader);
|
var clazz = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader);
|
||||||
XposedHelpers.callStaticMethod(clazz, "setBinder", new Class[]{IBinder.class}, binder);
|
var ret = (boolean) XposedHelpers.callStaticMethod(clazz, "setBinder",
|
||||||
Utils.logI("Hooked LSPosed Manager");
|
new Class[]{IBinder.class}, binder);
|
||||||
|
Utils.logI("Send binder to LSPosed Manager: " + ret);
|
||||||
|
return ret;
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
Utils.logW("Could not hook LSPosed Manager", t);
|
Utils.logW("Could not send binder to LSPosed Manager", t);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue