commit
8a37dae36a
|
|
@ -24,7 +24,7 @@ dependencies {
|
||||||
compileOnly files("libs/framework-stub.jar")
|
compileOnly files("libs/framework-stub.jar")
|
||||||
implementation project(':edxp-common')
|
implementation project(':edxp-common')
|
||||||
implementation project(':xposed-bridge')
|
implementation project(':xposed-bridge')
|
||||||
implementation 'com.swift.sandhook:hooklib:3.2.8'
|
implementation 'com.swift.sandhook:hooklib:3.3.3'
|
||||||
compileOnly project(':dexmaker')
|
compileOnly project(':dexmaker')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ public class Router {
|
||||||
|
|
||||||
private static volatile AtomicBoolean bootstrapHooked = new AtomicBoolean(false);
|
private static volatile AtomicBoolean bootstrapHooked = new AtomicBoolean(false);
|
||||||
|
|
||||||
|
static boolean useSandHook = false;
|
||||||
|
|
||||||
public static void prepare(boolean isSystem) {
|
public static void prepare(boolean isSystem) {
|
||||||
// this flag is needed when loadModules
|
// this flag is needed when loadModules
|
||||||
|
|
@ -61,7 +62,7 @@ public class Router {
|
||||||
}
|
}
|
||||||
Router.startBootstrapHook(isSystem);
|
Router.startBootstrapHook(isSystem);
|
||||||
XposedInit.initForZygote(isSystem);
|
XposedInit.initForZygote(isSystem);
|
||||||
SandHookConfig.compiler = !isSystem;
|
//SandHookConfig.compiler = !isSystem;
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
Utils.logE("error during Xposed initialization", t);
|
Utils.logE("error during Xposed initialization", t);
|
||||||
XposedBridge.disableHooks = true;
|
XposedBridge.disableHooks = true;
|
||||||
|
|
@ -81,18 +82,46 @@ public class Router {
|
||||||
Utils.logD("startBootstrapHook starts: isSystem = " + isSystem);
|
Utils.logD("startBootstrapHook starts: isSystem = " + isSystem);
|
||||||
ClassLoader classLoader = XposedBridge.BOOTCLASSLOADER;
|
ClassLoader classLoader = XposedBridge.BOOTCLASSLOADER;
|
||||||
if (isSystem) {
|
if (isSystem) {
|
||||||
XposedCompat.addHookers(classLoader, SysBootstrapHookInfo.hookItems);
|
if (useSandHook) {
|
||||||
|
XposedCompat.addHookers(classLoader, SysBootstrapHookInfo.hookItems);
|
||||||
|
} else {
|
||||||
|
HookMain.doHookDefault(
|
||||||
|
Router.class.getClassLoader(),
|
||||||
|
classLoader,
|
||||||
|
SysBootstrapHookInfo.class.getName());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
XposedCompat.addHookers(classLoader, AppBootstrapHookInfo.hookItems);
|
if (useSandHook) {
|
||||||
|
XposedCompat.addHookers(classLoader, AppBootstrapHookInfo.hookItems);
|
||||||
|
} else {
|
||||||
|
HookMain.doHookDefault(
|
||||||
|
Router.class.getClassLoader(),
|
||||||
|
classLoader,
|
||||||
|
AppBootstrapHookInfo.class.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void startSystemServerHook() {
|
public static void startSystemServerHook() {
|
||||||
XposedCompat.addHookers(SystemMainHooker.systemServerCL, SysInnerHookInfo.hookItems);
|
if (useSandHook) {
|
||||||
|
XposedCompat.addHookers(SystemMainHooker.systemServerCL, SysInnerHookInfo.hookItems);
|
||||||
|
} else {
|
||||||
|
HookMain.doHookDefault(
|
||||||
|
Router.class.getClassLoader(),
|
||||||
|
SystemMainHooker.systemServerCL,
|
||||||
|
SysInnerHookInfo.class.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void startWorkAroundHook() {
|
public static void startWorkAroundHook() {
|
||||||
XposedCompat.addHookers(XposedBridge.BOOTCLASSLOADER, WorkAroundHookInfo.hookItems);
|
if (useSandHook) {
|
||||||
|
XposedCompat.addHookers(XposedBridge.BOOTCLASSLOADER, WorkAroundHookInfo.hookItems);
|
||||||
|
} else {
|
||||||
|
HookMain.doHookDefault(
|
||||||
|
Router.class.getClassLoader(),
|
||||||
|
XposedBridge.BOOTCLASSLOADER,
|
||||||
|
WorkAroundHookInfo.class.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onEnterChildProcess() {
|
public static void onEnterChildProcess() {
|
||||||
|
|
|
||||||
|
|
@ -314,7 +314,6 @@ public class HookStubManager {
|
||||||
try {
|
try {
|
||||||
((XC_MethodHook) snapshot[afterIdx]).callAfterHookedMethod(param);
|
((XC_MethodHook) snapshot[afterIdx]).callAfterHookedMethod(param);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
XposedBridge.log(t);
|
|
||||||
if (lastThrowable == null)
|
if (lastThrowable == null)
|
||||||
param.setResult(lastResult);
|
param.setResult(lastResult);
|
||||||
else
|
else
|
||||||
|
|
@ -384,7 +383,6 @@ public class HookStubManager {
|
||||||
try {
|
try {
|
||||||
((XC_MethodHook) snapshot[afterIdx]).callAfterHookedMethod(param);
|
((XC_MethodHook) snapshot[afterIdx]).callAfterHookedMethod(param);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
XposedBridge.log(t);
|
|
||||||
if (lastThrowable == null)
|
if (lastThrowable == null)
|
||||||
param.setResult(lastResult);
|
param.setResult(lastResult);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue