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();
|
||||
}
|
||||
|
||||
public static void setBinder(IBinder binder) {
|
||||
public static boolean setBinder(IBinder 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);
|
||||
}
|
||||
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) {
|
||||
InstallerVerifier.hookXposedInstaller(classLoader);
|
||||
InstallerVerifier.hookBadManager(classLoader);
|
||||
} else {
|
||||
XC_LoadPackage.callAll(lpparam);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ package org.lsposed.lspd.util;
|
|||
import static org.lsposed.lspd.util.SignInfo.CERTIFICATE;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
|
|
@ -31,8 +30,6 @@ import android.widget.Toast;
|
|||
|
||||
import com.android.apksig.ApkVerifier;
|
||||
|
||||
import org.lsposed.lspd.service.ServiceManager;
|
||||
|
||||
import java.io.File;
|
||||
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 {
|
||||
Class<?> ConstantsClass = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader);
|
||||
XposedHelpers.findAndHookMethod(android.app.Activity.class, "onCreate", Bundle.class, new XC_MethodHook() {
|
||||
|
|
@ -72,18 +69,21 @@ public class InstallerVerifier {
|
|||
}
|
||||
});
|
||||
} catch (Throwable t) {
|
||||
Utils.logW("hookXposedInstaller: ", t);
|
||||
Utils.logW("hookBadManager: ", t);
|
||||
}
|
||||
}
|
||||
|
||||
public static void hookXposedInstaller(final ClassLoader classLoader, IBinder binder) {
|
||||
Utils.logI("Found LSPosed Manager, hooking it");
|
||||
public static boolean sendBinderToManager(final ClassLoader classLoader, IBinder binder) {
|
||||
Utils.logI("Found LSPosed Manager");
|
||||
try {
|
||||
var clazz = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader);
|
||||
XposedHelpers.callStaticMethod(clazz, "setBinder", new Class[]{IBinder.class}, binder);
|
||||
Utils.logI("Hooked LSPosed Manager");
|
||||
var ret = (boolean) XposedHelpers.callStaticMethod(clazz, "setBinder",
|
||||
new Class[]{IBinder.class}, binder);
|
||||
Utils.logI("Send binder to LSPosed Manager: " + ret);
|
||||
return ret;
|
||||
} 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