From 1df3d88c13b67dae40b75d4b28f19ffd5d002ed5 Mon Sep 17 00:00:00 2001 From: solohsu Date: Wed, 26 Jun 2019 11:36:36 +0800 Subject: [PATCH] Instant modules: update module list in zygote before child process forked --- appveyor.yml | 2 +- .../src/main/java/com/elderdrivers/riru/edxp/core/Main.java | 3 +++ .../java/com/elderdrivers/riru/edxp/proxy/BaseProxy.java | 6 ++++++ .../elderdrivers/riru/edxp/proxy/BlackWhiteListProxy.java | 4 ---- edxp-core/build.gradle | 2 +- edxp-core/src/main/cpp/main/src/edxp_context.cpp | 2 +- .../src/main/java/de/robv/android/xposed/XposedInit.java | 3 +-- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 5d7cc457..d2e288cf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: '0.4.5.1_beta({build})' +version: '0.4.5.2_beta({build})' environment: ANDROID_HOME: C:\android-sdk-windows diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Main.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Main.java index 36ced206..634dde34 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Main.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Main.java @@ -16,6 +16,8 @@ import java.util.Iterator; import java.util.ServiceLoader; import java.util.concurrent.atomic.AtomicReference; +import static com.elderdrivers.riru.edxp.proxy.BaseProxy.onBlackListed; + @SuppressLint("DefaultLocale") public class Main implements KeepAll { @@ -66,6 +68,7 @@ public class Main implements KeepAll { public static void forkAndSpecializePost(int pid, String appDataDir, String niceName) { if (isBlackListedProcess(Process.myUid())) { + onBlackListed(); return; } final EdxpImpl edxp = getEdxpImpl(); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BaseProxy.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BaseProxy.java index fbdd851a..c42897ab 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BaseProxy.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BaseProxy.java @@ -2,6 +2,8 @@ package com.elderdrivers.riru.edxp.proxy; import com.elderdrivers.riru.edxp.core.Proxy; +import de.robv.android.xposed.XposedBridge; + public abstract class BaseProxy implements Proxy { protected Router mRouter; @@ -14,4 +16,8 @@ public abstract class BaseProxy implements Proxy { public boolean init() { return true; } + + public static void onBlackListed() { + XposedBridge.clearAllCallbacks(); + } } diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BlackWhiteListProxy.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BlackWhiteListProxy.java index bca49ce9..abac4db2 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BlackWhiteListProxy.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/proxy/BlackWhiteListProxy.java @@ -131,8 +131,4 @@ public class BlackWhiteListProxy extends BaseProxy { } return needHook; } - - private static void onBlackListed() { - XposedBridge.clearAllCallbacks(); - } } diff --git a/edxp-core/build.gradle b/edxp-core/build.gradle index 32497876..b5a428b5 100644 --- a/edxp-core/build.gradle +++ b/edxp-core/build.gradle @@ -4,7 +4,7 @@ import org.gradle.internal.os.OperatingSystem apply plugin: 'com.android.library' // Values set here will be overriden by AppVeyor, feel free to modify during development. -def buildVersionName = 'v0.4.5.1_beta' +def buildVersionName = 'v0.4.5.2_beta' def buildVersionCode = 10000 if (System.env.APPVEYOR_BUILD_VERSION != null) { diff --git a/edxp-core/src/main/cpp/main/src/edxp_context.cpp b/edxp-core/src/main/cpp/main/src/edxp_context.cpp index d62a7643..37dc6198 100644 --- a/edxp-core/src/main/cpp/main/src/edxp_context.cpp +++ b/edxp-core/src/main/cpp/main/src/edxp_context.cpp @@ -133,7 +133,7 @@ namespace edxp { variant_ = static_cast(variant); } } - LOGI("EdxpVariant: %d", variant_); +// LOGI("EdxpVariant: %d", variant_); initialized_ = true; diff --git a/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java index 068dc86b..e9a99295 100644 --- a/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java @@ -309,8 +309,7 @@ public final class XposedInit { public static boolean loadModules(boolean isInZygote, boolean callInitZygote) throws IOException { boolean hasLoaded = !modulesLoaded.compareAndSet(false, true); - // dynamic module list mode doesn't apply to loading in zygote - if (hasLoaded && (isInZygote || !EdXpConfigGlobal.getConfig().isDynamicModulesMode())) { + if (hasLoaded && !EdXpConfigGlobal.getConfig().isDynamicModulesMode()) { return false; } synchronized (moduleLoadLock) {