From 5446571664b73fd3b5ee2a123afd2d9de8dbaed2 Mon Sep 17 00:00:00 2001 From: Victor Tseng Date: Mon, 23 Mar 2020 22:36:33 +0800 Subject: [PATCH] drop support for really old Blacklist App remove the support of really old `com.flarejune.xposedblacklist`. use the module blacklist function within EdXposed Manager instead. --- .../riru/edxp/_hooker/impl/HandleBindApp.java | 8 -- .../riru/edxp/_hooker/impl/LoadedApkCstr.java | 9 -- .../edxp/_hooker/impl/LoadedApkGetCL.java | 10 --- .../riru/edxp/config/BaseEdxpConfig.java | 8 +- .../edxp/hooker/XposedBlackListHooker.java | 87 ------------------- .../riru/edxp/config/EdxpConfig.java | 2 - .../de/robv/android/xposed/XposedInit.java | 9 -- 7 files changed, 1 insertion(+), 132 deletions(-) delete mode 100644 edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedBlackListHooker.java diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java index bf27a3a9..80262e7b 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java @@ -8,7 +8,6 @@ import android.content.res.CompatibilityInfo; import android.content.res.XResources; import com.elderdrivers.riru.edxp.config.ConfigManager; -import com.elderdrivers.riru.edxp.hooker.XposedBlackListHooker; import com.elderdrivers.riru.edxp.util.Hookers; import com.elderdrivers.riru.edxp.util.Utils; @@ -22,9 +21,6 @@ public class HandleBindApp extends XC_MethodHook { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - if (XposedBlackListHooker.shouldDisableHooks("")) { - return; - } try { Hookers.logD("ActivityThread#handleBindApplication() starts"); ActivityThread activityThread = (ActivityThread) param.thisObject; @@ -36,10 +32,6 @@ public class HandleBindApp extends XC_MethodHook { Utils.logD("processName=" + ConfigManager.appProcessName + ", packageName=" + reportedPackageName + ", appDataDir=" + ConfigManager.appDataDir); - if (XposedBlackListHooker.shouldDisableHooks(reportedPackageName)) { - return; - } - ComponentName instrumentationName = (ComponentName) XposedHelpers.getObjectField(bindData, "instrumentationName"); if (instrumentationName != null) { Hookers.logD("Instrumentation detected, disabling framework for"); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkCstr.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkCstr.java index 3464f4c2..4ec4baf2 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkCstr.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkCstr.java @@ -5,7 +5,6 @@ import android.app.LoadedApk; import android.content.res.XResources; import android.util.Log; -import com.elderdrivers.riru.edxp.hooker.XposedBlackListHooker; import com.elderdrivers.riru.edxp.util.Hookers; import de.robv.android.xposed.XC_MethodHook; @@ -18,10 +17,6 @@ public class LoadedApkCstr extends XC_MethodHook { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { - if (XposedBlackListHooker.shouldDisableHooks("")) { - return; - } - Hookers.logD("LoadedApk# starts"); try { @@ -32,10 +27,6 @@ public class LoadedApkCstr extends XC_MethodHook { XResources.setPackageNameForResDir(packageName, loadedApk.getResDir()); - if (XposedBlackListHooker.shouldDisableHooks(packageName)) { - return; - } - if (packageName.equals("android")) { Hookers.logD("LoadedApk# is android, skip: " + mAppDir); return; diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkGetCL.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkGetCL.java index eb3bd523..870548ef 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkGetCL.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/LoadedApkGetCL.java @@ -3,7 +3,6 @@ package com.elderdrivers.riru.edxp._hooker.impl; import android.app.LoadedApk; import com.elderdrivers.riru.edxp.hooker.SliceProviderFix; -import com.elderdrivers.riru.edxp.hooker.XposedBlackListHooker; import com.elderdrivers.riru.edxp.hooker.XposedInstallerHooker; import com.elderdrivers.riru.edxp.util.Hookers; @@ -14,8 +13,6 @@ import de.robv.android.xposed.callbacks.XC_LoadPackage; import static com.elderdrivers.riru.edxp.config.InstallerChooser.INSTALLER_PACKAGE_NAME; import static com.elderdrivers.riru.edxp.hooker.SliceProviderFix.SYSTEMUI_PACKAGE_NAME; -import static com.elderdrivers.riru.edxp.hooker.XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME; - public class LoadedApkGetCL extends XC_MethodHook { @@ -38,10 +35,6 @@ public class LoadedApkGetCL extends XC_MethodHook { try { - if (XposedBlackListHooker.shouldDisableHooks("")) { - return; - } - Hookers.logD("LoadedApk#getClassLoader starts"); LoadedApk loadedApk = (LoadedApk) param.thisObject; @@ -70,9 +63,6 @@ public class LoadedApkGetCL extends XC_MethodHook { if (this.packageName.equals(INSTALLER_PACKAGE_NAME)) { XposedInstallerHooker.hookXposedInstaller(lpparam.classLoader); } - if (this.packageName.equals(BLACK_LIST_PACKAGE_NAME)) { - XposedBlackListHooker.hook(lpparam.classLoader); - } if (this.packageName.equals(SYSTEMUI_PACKAGE_NAME)) { SliceProviderFix.hook(); } diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java index 57001564..493b910e 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java @@ -1,7 +1,5 @@ package com.elderdrivers.riru.edxp.config; -import com.elderdrivers.riru.edxp.hooker.XposedBlackListHooker; - public class BaseEdxpConfig implements EdxpConfig { @Override @@ -9,11 +7,6 @@ public class BaseEdxpConfig implements EdxpConfig { return InstallerChooser.INSTALLER_DATA_BASE_DIR; } - @Override - public String getBlackListModulePackageName() { - return XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME; - } - @Override public boolean isDynamicModulesMode() { return ConfigManager.isDynamicModulesEnabled(); @@ -23,6 +16,7 @@ public class BaseEdxpConfig implements EdxpConfig { public boolean isResourcesHookEnabled() { return ConfigManager.isResourcesHookEnabled(); } + @Override public boolean isNoModuleLogEnabled() { return ConfigManager.isNoModuleLogEnabled(); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedBlackListHooker.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedBlackListHooker.java deleted file mode 100644 index c5e10ab6..00000000 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedBlackListHooker.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.elderdrivers.riru.edxp.hooker; - -import android.annotation.TargetApi; -import android.app.Activity; -import android.content.Context; -import android.content.ContextWrapper; -import android.os.Build; - -import com.elderdrivers.riru.edxp.util.Utils; - -import java.io.File; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XSharedPreferences; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; - -import static com.elderdrivers.riru.edxp.config.InstallerChooser.INSTALLER_PACKAGE_NAME; -import static com.elderdrivers.riru.edxp.util.FileUtils.IS_USING_PROTECTED_STORAGE; - -public class XposedBlackListHooker { - - public static final String BLACK_LIST_PACKAGE_NAME = "com.flarejune.xposedblacklist"; - private static final String BLACK_LIST_PREF_NAME = "list"; - private static final String PREF_KEY_BLACK_LIST = "blackList"; - public static final String PREF_FILE_PATH = (IS_USING_PROTECTED_STORAGE ? "/data/user_de/0/" : "/data/data") - + BLACK_LIST_PACKAGE_NAME + "/shared_prefs/" + BLACK_LIST_PREF_NAME + ".xml"; - private static final XSharedPreferences PREFERENCES = new XSharedPreferences(new File(PREF_FILE_PATH)); - // always white list. empty string is to make sure blackList does not contain empty packageName - private static final List WHITE_LIST = Arrays.asList(INSTALLER_PACKAGE_NAME, BLACK_LIST_PACKAGE_NAME, ""); - - static { - try { - PREFERENCES.makeWorldReadable(); - } catch (Throwable throwable) { - Utils.logE("error making pref worldReadable", throwable); - } - } - - public static boolean shouldDisableHooks(String packageName) { - return XposedBridge.disableHooks || getBlackList().contains(packageName); - } - - public static Set getBlackList() { - try { - PREFERENCES.reload(); - Set result = PREFERENCES.getStringSet(PREF_KEY_BLACK_LIST, new HashSet()); - if (result != null) result.removeAll(WHITE_LIST); - return result; - } catch (Throwable throwable) { - Utils.logE("error when reading black list", throwable); - return new HashSet<>(); - } - } - - public static void hook(ClassLoader classLoader) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { - return; - } - try { - XposedHelpers.findAndHookMethod(ContextWrapper.class, "getSharedPreferences", String.class, int.class, new XC_MethodHook() { - @TargetApi(Build.VERSION_CODES.N) - @Override - protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - try { - String prefName = (String) param.args[0]; - if (!prefName.equals(BLACK_LIST_PREF_NAME)) { - return; - } - Activity activity = (Activity) param.thisObject; - Context context = activity.createDeviceProtectedStorageContext(); - context.moveSharedPreferencesFrom(activity, prefName); - param.setResult(context.getSharedPreferences(prefName, (int) param.args[1])); - } catch (Throwable throwable) { - Utils.logE("error hooking Xposed BlackList", throwable); - } - } - }); - } catch (Throwable throwable) { - Utils.logE("error hooking Xposed BlackList", throwable); - } - } -} diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java index ab408cfe..15e82020 100644 --- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java @@ -4,8 +4,6 @@ public interface EdxpConfig { String getInstallerBaseDir(); - String getBlackListModulePackageName(); - boolean isDynamicModulesMode(); boolean isNoModuleLogEnabled(); 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 e9a99295..7ca6e40f 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 @@ -10,7 +10,6 @@ import android.content.res.XResources; import android.os.Build; import android.os.IBinder; import android.os.Process; -import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; @@ -399,14 +398,6 @@ public final class XposedInit { private static boolean loadModule(String apk, ClassLoader topClassLoader, boolean callInitZygote) { Log.i(TAG, "Loading modules from " + apk); - // todo remove this legacy logic - String blackListModulePackageName = EdXpConfigGlobal.getConfig().getBlackListModulePackageName(); - if (!TextUtils.isEmpty(apk) && !TextUtils.isEmpty(blackListModulePackageName) - && apk.contains(blackListModulePackageName)) { - Log.i(TAG, "We are going to take over black list's job..."); - return false; - } - if (!new File(apk).exists()) { Log.e(TAG, " File does not exist"); return false;