From 622283dd142115e8b3b93a2c39450d0fdce0801a Mon Sep 17 00:00:00 2001 From: tehcneko Date: Tue, 28 May 2024 16:29:00 +0800 Subject: [PATCH] hook native methods instead --- .../lsposed/disableflagsecure/DisableFlagSecure.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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 7fc88c1..506cdcd 100644 --- a/app/src/main/java/io/github/lsposed/disableflagsecure/DisableFlagSecure.java +++ b/app/src/main/java/io/github/lsposed/disableflagsecure/DisableFlagSecure.java @@ -205,7 +205,6 @@ private void hookWindowState(ClassLoader classLoader) throws ClassNotFoundExcept hook(isSecureLockedMethod, SecureLockedHooker.class); } - private static Class captureArgsClazz; private static Field captureSecureLayersField; private static Field allowProtectedField; @@ -214,15 +213,15 @@ private void hookScreenCapture(ClassLoader classLoader) throws ClassNotFoundExce var screenCaptureClazz = Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ? classLoader.loadClass("android.window.ScreenCapture") : SurfaceControl.class; - captureArgsClazz = classLoader.loadClass(Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ? + var captureArgsClazz = classLoader.loadClass(Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ? "android.window.ScreenCapture$CaptureArgs" : "android.view.SurfaceControl$CaptureArgs"); captureSecureLayersField = captureArgsClazz.getDeclaredField("mCaptureSecureLayers"); captureSecureLayersField.setAccessible(true); allowProtectedField = captureArgsClazz.getDeclaredField("mAllowProtected"); allowProtectedField.setAccessible(true); - hookMethods(screenCaptureClazz, ScreenCaptureHooker.class, "captureDisplay"); - hookMethods(screenCaptureClazz, ScreenCaptureHooker.class, "captureLayers"); + hookMethods(screenCaptureClazz, ScreenCaptureHooker.class, "nativeCaptureDisplay"); + hookMethods(screenCaptureClazz, ScreenCaptureHooker.class, "nativeCaptureLayers"); } @TargetApi(Build.VERSION_CODES.S) @@ -327,9 +326,6 @@ private static class ScreenCaptureHooker implements Hooker { @BeforeInvocation public static void before(@NonNull BeforeHookCallback callback) { var captureArgs = callback.getArgs()[0]; - if (!captureArgsClazz.isInstance(captureArgs)) { - return; - } try { captureSecureLayersField.set(captureArgs, true); allowProtectedField.set(captureArgs, true);