From add84ff217e81fb694cc493367cb283b89a3a194 Mon Sep 17 00:00:00 2001 From: tehcneko Date: Wed, 6 Dec 2023 09:59:15 +0800 Subject: [PATCH] Disable screenshot detection on Android 14 --- .../disableflagsecure/DisableFlagSecure.java | 36 +++++++++++++------ app/src/main/res/values-v34/strings.xml | 3 ++ .../main/res/values-zh-rCN-v34/strings.xml | 4 +++ 3 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 app/src/main/res/values-v34/strings.xml create mode 100644 app/src/main/res/values-zh-rCN-v34/strings.xml diff --git a/app/src/main/java/io/github/lsposed/disableflagsecure/DisableFlagSecure.java b/app/src/main/java/io/github/lsposed/disableflagsecure/DisableFlagSecure.java index 0555c8e..220e45c 100644 --- a/app/src/main/java/io/github/lsposed/disableflagsecure/DisableFlagSecure.java +++ b/app/src/main/java/io/github/lsposed/disableflagsecure/DisableFlagSecure.java @@ -21,6 +21,7 @@ public class DisableFlagSecure implements IXposedHookLoadPackage { static { Method m = null; try { + //noinspection JavaReflectionMemberAccess m = XposedBridge.class.getDeclaredMethod("deoptimizeMethod", Member.class); } catch (Throwable t) { XposedBridge.log(t); @@ -40,17 +41,6 @@ public class DisableFlagSecure implements IXposedHookLoadPackage { @Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) { if (loadPackageParam.packageName.equals("android")) { - try { - Class windowsManagerServiceImpl = XposedHelpers.findClass("com.android.server.wm.WindowManagerServiceImpl", loadPackageParam.classLoader); - if (windowsManagerServiceImpl != null) { - XposedBridge.hookAllMethods( - windowsManagerServiceImpl, - "notAllowCaptureDisplay", - XC_MethodReplacement.returnConstant(false)); - } - } catch (Throwable t) { - XposedBridge.log(t); - } try { Class windowsState = XposedHelpers.findClass("com.android.server.wm.WindowState", loadPackageParam.classLoader); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { @@ -69,6 +59,19 @@ public class DisableFlagSecure implements IXposedHookLoadPackage { } catch (Throwable t) { XposedBridge.log(t); } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + try { + XposedHelpers.findAndHookMethod( + "com.android.server.wm.WindowManagerService", + loadPackageParam.classLoader, + "registerScreenCaptureObserver", + "android.os.IBinder", + "android.app.IScreenCaptureObserver", + XC_MethodReplacement.DO_NOTHING); + } catch (Throwable t) { + XposedBridge.log(t); + } + } try { deoptimizeMethod(XposedHelpers.findClass("com.android.server.wm.WindowStateAnimator", loadPackageParam.classLoader), "createSurfaceLocked"); var c = XposedHelpers.findClass("com.android.server.display.DisplayManagerService", loadPackageParam.classLoader); @@ -98,6 +101,17 @@ public class DisableFlagSecure implements IXposedHookLoadPackage { } catch (Throwable t) { XposedBridge.log(t); } + try { + Class windowsManagerServiceImpl = XposedHelpers.findClass("com.android.server.wm.WindowManagerServiceImpl", loadPackageParam.classLoader); + if (windowsManagerServiceImpl != null) { + XposedBridge.hookAllMethods( + windowsManagerServiceImpl, + "notAllowCaptureDisplay", + XC_MethodReplacement.returnConstant(false)); + } + } catch (Throwable t) { + XposedBridge.log(t); + } } else if (loadPackageParam.packageName.equals("com.flyme.systemuiex")) { try { XposedHelpers.findAndHookMethod("android.view.SurfaceControl$ScreenshotHardwareBuffer", loadPackageParam.classLoader, "containsSecureLayers", XC_MethodReplacement.returnConstant(false)); diff --git a/app/src/main/res/values-v34/strings.xml b/app/src/main/res/values-v34/strings.xml new file mode 100644 index 0000000..be1bbe0 --- /dev/null +++ b/app/src/main/res/values-v34/strings.xml @@ -0,0 +1,3 @@ + + Disable FLAG_SECURE on all windows, enabling screenshots in apps that normally wouldn\'t allow it and disabling screenshot detection. + diff --git a/app/src/main/res/values-zh-rCN-v34/strings.xml b/app/src/main/res/values-zh-rCN-v34/strings.xml new file mode 100644 index 0000000..f460324 --- /dev/null +++ b/app/src/main/res/values-zh-rCN-v34/strings.xml @@ -0,0 +1,4 @@ + + + 对所有 Window 禁用 FLAG_SECURE,在通常不允许截图的应用中启用屏幕截图并禁用截图检测。 +