diff --git a/edxp-common/build.gradle b/edxp-common/build.gradle index 36d6440f..87a41555 100644 --- a/edxp-common/build.gradle +++ b/edxp-common/build.gradle @@ -45,4 +45,9 @@ afterEvaluate { tasks.withType(JavaCompile) { options.compilerArgs.add("-Xbootclasspath/p:${projectDir.absolutePath}/libs/framework-stub.jar") } + + task("copyCommonroperties", type: Copy) { + from file("${projectDir}/template_override/") + into file(templateRootPath) + } } \ No newline at end of file diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java new file mode 100644 index 00000000..28d4d5fa --- /dev/null +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java @@ -0,0 +1,30 @@ +package com.elderdrivers.riru.edxp.config; + +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.hook.HookProvider; + +import java.lang.reflect.Member; + +public abstract class BaseHookProvider implements HookProvider { + + public Member findMethodNative(Member hookMethod) { + return hookMethod; + } + + public long getMethodId(Member member) { + return 0; + } + + public Object findMethodNative(Class clazz, String methodName, String methodSig) { + return null; + } + + public void deoptMethods(String packageName, ClassLoader classLoader) { + PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader); + } + + @Override + public void deoptMethodNative(Object method) { + + } +} diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/InlinedMethodCallers.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java similarity index 97% rename from edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/InlinedMethodCallers.java rename to edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java index 15fffeb0..1f0862dd 100644 --- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/InlinedMethodCallers.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java @@ -1,4 +1,4 @@ -package com.elderdrivers.riru.edxp.yahfa.util; +package com.elderdrivers.riru.edxp.deopt; import java.util.HashMap; diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/PrebuiltMethodsDeopter.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java similarity index 69% rename from edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/PrebuiltMethodsDeopter.java rename to edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java index ecd8813d..a90b1908 100644 --- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/PrebuiltMethodsDeopter.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java @@ -1,14 +1,14 @@ -package com.elderdrivers.riru.edxp.yahfa.util; +package com.elderdrivers.riru.edxp.deopt; +import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal; import com.elderdrivers.riru.edxp.util.Utils; -import com.elderdrivers.riru.edxp.Main; import java.util.Arrays; import de.robv.android.xposed.XposedHelpers; -import static com.elderdrivers.riru.edxp.yahfa.util.InlinedMethodCallers.KEY_BOOT_IMAGE; -import static com.elderdrivers.riru.edxp.yahfa.util.InlinedMethodCallers.KEY_SYSTEM_SERVER; +import static com.elderdrivers.riru.edxp.deopt.InlinedMethodCallers.KEY_BOOT_IMAGE; +import static com.elderdrivers.riru.edxp.deopt.InlinedMethodCallers.KEY_SYSTEM_SERVER; public class PrebuiltMethodsDeopter { @@ -19,10 +19,10 @@ public class PrebuiltMethodsDeopter { } for (String[] caller : callers) { try { - Object method = Main.findMethodNative( + Object method = EdXpConfigGlobal.getHookProvider().findMethodNative( XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]); if (method != null) { - Main.deoptMethodNative(method); + EdXpConfigGlobal.getHookProvider().deoptMethodNative(method); } } catch (Throwable throwable) { Utils.logE("error when deopting method: " + Arrays.toString(caller), throwable); diff --git a/edxp-sandhook/template_override/system/lib/libwhale.edxp.so b/edxp-common/template_override/system/lib/libwhale.edxp.so similarity index 100% rename from edxp-sandhook/template_override/system/lib/libwhale.edxp.so rename to edxp-common/template_override/system/lib/libwhale.edxp.so diff --git a/edxp-sandhook/template_override/system/lib64/libwhale.edxp.so b/edxp-common/template_override/system/lib64/libwhale.edxp.so similarity index 100% rename from edxp-sandhook/template_override/system/lib64/libwhale.edxp.so rename to edxp-common/template_override/system/lib64/libwhale.edxp.so diff --git a/edxp-sandhook/template_override/system_x86/lib/libwhale.edxp.so b/edxp-common/template_override/system_x86/lib/libwhale.edxp.so similarity index 100% rename from edxp-sandhook/template_override/system_x86/lib/libwhale.edxp.so rename to edxp-common/template_override/system_x86/lib/libwhale.edxp.so diff --git a/edxp-sandhook/template_override/system_x86/lib64/libwhale.edxp.so b/edxp-common/template_override/system_x86/lib64/libwhale.edxp.so similarity index 100% rename from edxp-sandhook/template_override/system_x86/lib64/libwhale.edxp.so rename to edxp-common/template_override/system_x86/lib64/libwhale.edxp.so diff --git a/edxp-sandhook/build.gradle b/edxp-sandhook/build.gradle index 21b5e374..82f1a5b7 100644 --- a/edxp-sandhook/build.gradle +++ b/edxp-sandhook/build.gradle @@ -57,6 +57,7 @@ afterEvaluate { def myTemplatePath = "${projectDir}/template_override/" task("makeAndCopy${variantNameCapped}", type: Jar, dependsOn: "assemble${variantNameCapped}") { + dependsOn tasks.getByPath(":edxp-common:copyCommonroperties") from "${buildDir}/intermediates/dex/${variantNameLowered}/mergeDex${variantNameCapped}/out/" destinationDir file(myTemplatePath + "system/framework/") baseName "edxp" diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java index c5d6d1fd..b7bb5dba 100644 --- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java +++ b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java @@ -3,13 +3,12 @@ package com.elderdrivers.riru.edxp.sandhook.entry.hooker; import android.app.ActivityThread; import com.elderdrivers.riru.common.KeepMembers; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.sandhook.entry.Router; -import com.elderdrivers.riru.edxp.sandhook.util.PrebuiltMethodsDeopter; import com.swift.sandhook.SandHook; import com.swift.sandhook.annotation.HookClass; import com.swift.sandhook.annotation.HookMethod; import com.swift.sandhook.annotation.HookMethodBackup; -import com.swift.sandhook.annotation.HookMode; import java.lang.reflect.Method; diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java index fec53890..fd565e66 100644 --- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java +++ b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java @@ -3,11 +3,11 @@ package com.elderdrivers.riru.edxp.sandhook.proxy; import android.text.TextUtils; import com.elderdrivers.riru.edxp.config.ConfigManager; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.util.ProcessUtils; import com.elderdrivers.riru.edxp.util.Utils; import com.elderdrivers.riru.edxp.Main; import com.elderdrivers.riru.edxp.sandhook.entry.Router; -import com.elderdrivers.riru.edxp.sandhook.util.PrebuiltMethodsDeopter; import de.robv.android.xposed.XposedBridge; diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java index 10d97ec2..f63052d9 100644 --- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java +++ b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java @@ -2,8 +2,8 @@ package com.elderdrivers.riru.edxp.sandhook.proxy; import com.elderdrivers.riru.edxp.config.ConfigManager; import com.elderdrivers.riru.edxp.Main; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.sandhook.entry.Router; -import com.elderdrivers.riru.edxp.sandhook.util.PrebuiltMethodsDeopter; import static com.elderdrivers.riru.edxp.util.FileUtils.getDataPathPrefix; diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/InlinedMethodCallers.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/InlinedMethodCallers.java deleted file mode 100644 index 4ef716e1..00000000 --- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/InlinedMethodCallers.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.elderdrivers.riru.edxp.sandhook.util; - -import java.util.HashMap; - -/** - * Providing a whitelist of methods which are the callers of the target methods we want to hook. - * Because the target methods are inlined into the callers, we deoptimize the callers to - * run in intercept mode to make target methods hookable. - *

- * Only for methods which are included in pre-compiled framework codes. - * TODO recompile system apps and priv-apps since their original dex files are available - */ -public class InlinedMethodCallers { - - public static final String KEY_BOOT_IMAGE = "boot_image"; - public static final String KEY_SYSTEM_SERVER = "system_server"; - - /** - * Key should be {@link #KEY_BOOT_IMAGE}, {@link #KEY_SYSTEM_SERVER}, or a package name - * of system apps or priv-apps i.e. com.android.systemui - */ - private static final HashMap CALLERS = new HashMap<>(); - - /** - * format for each row: {className, methodName, methodSig} - */ - private static final String[][] BOOT_IMAGE = { - // callers of Application#attach(Context) - {"android.app.Instrumentation", "newApplication", "(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"} - }; - - private static final String[][] SYSTEM_SERVER = {}; - - private static final String[][] SYSTEM_UI = {}; - - static { - CALLERS.put(KEY_BOOT_IMAGE, BOOT_IMAGE); - CALLERS.put(KEY_SYSTEM_SERVER, SYSTEM_SERVER); - CALLERS.put("com.android.systemui", SYSTEM_UI); - } - - public static HashMap getAll() { - return CALLERS; - } - - public static String[][] get(String where) { - return CALLERS.get(where); - } -} diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/PrebuiltMethodsDeopter.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/PrebuiltMethodsDeopter.java deleted file mode 100644 index 01f871b2..00000000 --- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/PrebuiltMethodsDeopter.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.elderdrivers.riru.edxp.sandhook.util; - -import com.elderdrivers.riru.edxp.util.Utils; -import com.elderdrivers.riru.edxp.Main; - -import java.util.Arrays; - -import de.robv.android.xposed.XposedHelpers; - -import static com.elderdrivers.riru.edxp.sandhook.util.InlinedMethodCallers.KEY_BOOT_IMAGE; -import static com.elderdrivers.riru.edxp.sandhook.util.InlinedMethodCallers.KEY_SYSTEM_SERVER; - -public class PrebuiltMethodsDeopter { - - public static void deoptMethods(String where, ClassLoader cl) { - String[][] callers = InlinedMethodCallers.get(where); - if (callers == null) { - return; - } - for (String[] caller : callers) { - try { - Object method = Main.findMethodNative( - XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]); - if (method != null) { - Main.deoptMethodNative(method); - } - } catch (Throwable throwable) { - Utils.logE("error when deopting method: " + Arrays.toString(caller), throwable); - } - } - } - - public static void deoptBootMethods() { - // todo check if has been done before - deoptMethods(KEY_BOOT_IMAGE, null); - } - - public static void deoptSystemServerMethods(ClassLoader sysCL) { - deoptMethods(KEY_SYSTEM_SERVER, sysCL); - } -} diff --git a/edxp-whale/build.gradle b/edxp-whale/build.gradle index 8ca2d21f..5b4a57f5 100644 --- a/edxp-whale/build.gradle +++ b/edxp-whale/build.gradle @@ -55,6 +55,7 @@ afterEvaluate { def myTemplatePath = "${projectDir}/template_override/" task("makeAndCopy${variantNameCapped}", type: Jar, dependsOn: "assemble${variantNameCapped}") { + dependsOn tasks.getByPath(":edxp-common:copyCommonroperties") from "${buildDir}/intermediates/dex/${variantNameLowered}/mergeDex${variantNameCapped}/out/" destinationDir file(myTemplatePath + "system/framework/") baseName "edxp" diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java index cbd15cb0..57b6c6ce 100644 --- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java +++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java @@ -1,14 +1,13 @@ package com.elderdrivers.riru.edxp.whale.config; -import com.elderdrivers.riru.edxp.hook.HookProvider; -import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.config.BaseHookProvider; import com.lody.whale.WhaleRuntime; import java.lang.reflect.Member; import de.robv.android.xposed.XposedBridge; -public class WhaleHookProvider implements HookProvider { +public class WhaleHookProvider extends BaseHookProvider { @Override public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) { @@ -25,11 +24,6 @@ public class WhaleHookProvider implements HookProvider { return hookMethod; } - @Override - public void deoptMethods(String packageName, ClassLoader classLoader) { - PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader); - } - @Override public long getMethodId(Member member) { return WhaleRuntime.getMethodSlot(member); diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java index a9417db8..b2250399 100644 --- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java +++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java @@ -3,7 +3,7 @@ package com.elderdrivers.riru.edxp.whale.entry.hooker; import android.app.ActivityThread; import com.elderdrivers.riru.common.KeepMembers; -import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.whale.entry.Router; import de.robv.android.xposed.XposedBridge; diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java index bee43070..1e290d81 100644 --- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java +++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java @@ -4,10 +4,10 @@ import android.text.TextUtils; import com.elderdrivers.riru.edxp.Main; import com.elderdrivers.riru.edxp.config.ConfigManager; -import com.elderdrivers.riru.edxp.whale.entry.Router; -import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.util.ProcessUtils; import com.elderdrivers.riru.edxp.util.Utils; +import com.elderdrivers.riru.edxp.whale.entry.Router; import de.robv.android.xposed.XposedBridge; diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java index 1dddf90e..73756752 100644 --- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java +++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java @@ -2,7 +2,7 @@ package com.elderdrivers.riru.edxp.whale.proxy; import com.elderdrivers.riru.edxp.Main; import com.elderdrivers.riru.edxp.config.ConfigManager; -import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.whale.entry.Router; import static com.elderdrivers.riru.edxp.util.FileUtils.getDataPathPrefix; diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/InlinedMethodCallers.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/InlinedMethodCallers.java deleted file mode 100644 index 5e3597cc..00000000 --- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/InlinedMethodCallers.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.elderdrivers.riru.edxp.whale.util; - -import java.util.HashMap; - -/** - * Providing a whitelist of methods which are the callers of the target methods we want to hook. - * Because the target methods are inlined into the callers, we deoptimize the callers to - * run in intercept mode to make target methods hookable. - *

- * Only for methods which are included in pre-compiled framework codes. - * TODO recompile system apps and priv-apps since their original dex files are available - */ -public class InlinedMethodCallers { - - public static final String KEY_BOOT_IMAGE = "boot_image"; - public static final String KEY_SYSTEM_SERVER = "system_server"; - - /** - * Key should be {@link #KEY_BOOT_IMAGE}, {@link #KEY_SYSTEM_SERVER}, or a package name - * of system apps or priv-apps i.e. com.android.systemui - */ - private static final HashMap CALLERS = new HashMap<>(); - - /** - * format for each row: {className, methodName, methodSig} - */ - private static final String[][] BOOT_IMAGE = { - // callers of Application#attach(Context) - {"android.app.Instrumentation", "newApplication", "(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"} - }; - - private static final String[][] SYSTEM_SERVER = {}; - - private static final String[][] SYSTEM_UI = {}; - - static { - CALLERS.put(KEY_BOOT_IMAGE, BOOT_IMAGE); - CALLERS.put(KEY_SYSTEM_SERVER, SYSTEM_SERVER); - CALLERS.put("com.android.systemui", SYSTEM_UI); - } - - public static HashMap getAll() { - return CALLERS; - } - - public static String[][] get(String where) { - return CALLERS.get(where); - } -} diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/PrebuiltMethodsDeopter.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/PrebuiltMethodsDeopter.java deleted file mode 100644 index fba8dd7f..00000000 --- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/PrebuiltMethodsDeopter.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.elderdrivers.riru.edxp.whale.util; - -import com.elderdrivers.riru.edxp.util.Utils; -import com.elderdrivers.riru.edxp.Main; - -import java.util.Arrays; - -import de.robv.android.xposed.XposedHelpers; - -import static com.elderdrivers.riru.edxp.whale.util.InlinedMethodCallers.KEY_BOOT_IMAGE; -import static com.elderdrivers.riru.edxp.whale.util.InlinedMethodCallers.KEY_SYSTEM_SERVER; - -public class PrebuiltMethodsDeopter { - - public static void deoptMethods(String where, ClassLoader cl) { - String[][] callers = InlinedMethodCallers.get(where); - if (callers == null) { - return; - } - for (String[] caller : callers) { - try { - Object method = Main.findMethodNative( - XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]); - if (method != null) { - Main.deoptMethodNative(method); - } - } catch (Throwable throwable) { - Utils.logE("error when deopting method: " + Arrays.toString(caller), throwable); - } - } - } - - public static void deoptBootMethods() { - // todo check if has been done before - deoptMethods(KEY_BOOT_IMAGE, null); - } - - public static void deoptSystemServerMethods(ClassLoader sysCL) { - deoptMethods(KEY_SYSTEM_SERVER, sysCL); - } -} diff --git a/edxp-whale/template_override/system/lib/libwhale.edxp.so b/edxp-whale/template_override/system/lib/libwhale.edxp.so deleted file mode 100755 index 187d0495..00000000 Binary files a/edxp-whale/template_override/system/lib/libwhale.edxp.so and /dev/null differ diff --git a/edxp-whale/template_override/system/lib64/libwhale.edxp.so b/edxp-whale/template_override/system/lib64/libwhale.edxp.so deleted file mode 100755 index 3c2cd0d8..00000000 Binary files a/edxp-whale/template_override/system/lib64/libwhale.edxp.so and /dev/null differ diff --git a/edxp-whale/template_override/system_x86/lib/libwhale.edxp.so b/edxp-whale/template_override/system_x86/lib/libwhale.edxp.so deleted file mode 100755 index d1653bcc..00000000 Binary files a/edxp-whale/template_override/system_x86/lib/libwhale.edxp.so and /dev/null differ diff --git a/edxp-whale/template_override/system_x86/lib64/libwhale.edxp.so b/edxp-whale/template_override/system_x86/lib64/libwhale.edxp.so deleted file mode 100755 index f5bcdc5a..00000000 Binary files a/edxp-whale/template_override/system_x86/lib64/libwhale.edxp.so and /dev/null differ diff --git a/edxp-yahfa/build.gradle b/edxp-yahfa/build.gradle index b3dff3ed..1f035df9 100644 --- a/edxp-yahfa/build.gradle +++ b/edxp-yahfa/build.gradle @@ -56,6 +56,7 @@ afterEvaluate { def myTemplatePath = "${projectDir}/template_override/" task("makeAndCopy${variantNameCapped}", type: Jar, dependsOn: "assemble${variantNameCapped}") { + dependsOn tasks.getByPath(":edxp-common:copyCommonroperties") from "${buildDir}/intermediates/dex/${variantNameLowered}/mergeDex${variantNameCapped}/out/" destinationDir file(myTemplatePath + "system/framework/") baseName "edxp" diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java index cf51c5f5..39e8a516 100644 --- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java @@ -1,15 +1,15 @@ package com.elderdrivers.riru.edxp.yahfa.config; -import com.elderdrivers.riru.edxp.hook.HookProvider; +import com.elderdrivers.riru.edxp.config.BaseHookProvider; import com.elderdrivers.riru.edxp.yahfa.dexmaker.DexMakerUtils; import com.elderdrivers.riru.edxp.yahfa.dexmaker.DynamicBridge; -import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter; import java.lang.reflect.Member; import de.robv.android.xposed.XposedBridge; -public class YahfaHookProvider implements HookProvider { +public class YahfaHookProvider extends BaseHookProvider { + @Override public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) { DynamicBridge.hookMethod(method, additionalInfo); @@ -24,14 +24,4 @@ public class YahfaHookProvider implements HookProvider { public Member findMethodNative(Member hookMethod) { return DexMakerUtils.findMethodNative(hookMethod); } - - @Override - public void deoptMethods(String packageName, ClassLoader classLoader) { - PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader); - } - - @Override - public long getMethodId(Member member) { - return 0; - } } diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java index 2478f2e6..38d43612 100644 --- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java @@ -3,7 +3,7 @@ package com.elderdrivers.riru.edxp.yahfa.entry.hooker; import android.app.ActivityThread; import com.elderdrivers.riru.common.KeepMembers; -import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.yahfa.entry.Router; import de.robv.android.xposed.XposedBridge; diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java index ba9842d9..5beb56ab 100644 --- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java @@ -4,8 +4,8 @@ import android.text.TextUtils; import com.elderdrivers.riru.edxp.Main; import com.elderdrivers.riru.edxp.config.ConfigManager; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.yahfa.entry.Router; -import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.util.ProcessUtils; import com.elderdrivers.riru.edxp.util.Utils; diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java index 9c1d3dba..4fad6cdb 100644 --- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java @@ -2,7 +2,7 @@ package com.elderdrivers.riru.edxp.yahfa.proxy; import com.elderdrivers.riru.edxp.Main; import com.elderdrivers.riru.edxp.config.ConfigManager; -import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.yahfa.entry.Router; import static com.elderdrivers.riru.edxp.util.FileUtils.getDataPathPrefix; diff --git a/edxp-yahfa/template_override/system/lib/libwhale.edxp.so b/edxp-yahfa/template_override/system/lib/libwhale.edxp.so deleted file mode 100755 index 187d0495..00000000 Binary files a/edxp-yahfa/template_override/system/lib/libwhale.edxp.so and /dev/null differ diff --git a/edxp-yahfa/template_override/system/lib64/libwhale.edxp.so b/edxp-yahfa/template_override/system/lib64/libwhale.edxp.so deleted file mode 100755 index 3c2cd0d8..00000000 Binary files a/edxp-yahfa/template_override/system/lib64/libwhale.edxp.so and /dev/null differ diff --git a/edxp-yahfa/template_override/system_x86/lib/libwhale.edxp.so b/edxp-yahfa/template_override/system_x86/lib/libwhale.edxp.so deleted file mode 100755 index d1653bcc..00000000 Binary files a/edxp-yahfa/template_override/system_x86/lib/libwhale.edxp.so and /dev/null differ diff --git a/edxp-yahfa/template_override/system_x86/lib64/libwhale.edxp.so b/edxp-yahfa/template_override/system_x86/lib64/libwhale.edxp.so deleted file mode 100755 index f5bcdc5a..00000000 Binary files a/edxp-yahfa/template_override/system_x86/lib64/libwhale.edxp.so and /dev/null differ diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java index cc88f03f..dd06ef24 100644 --- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java @@ -73,5 +73,15 @@ public class EdXpConfigGlobal { public long getMethodId(Member member) { return 0; } + + @Override + public Object findMethodNative(Class clazz, String methodName, String methodSig) { + return null; + } + + @Override + public void deoptMethodNative(Object method) { + + } }; } diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java index 9e630e78..50901c0f 100644 --- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java @@ -15,4 +15,8 @@ public interface HookProvider { void deoptMethods(String packageName, ClassLoader classLoader); long getMethodId(Member member); + + Object findMethodNative(Class clazz, String methodName, String methodSig); + + void deoptMethodNative(Object method); }