Disable screen record detection on Android 15

This commit is contained in:
tehcneko 2024-08-18 10:02:26 +08:00
parent caa953cd11
commit 42ae2ab20d

View File

@ -46,6 +46,15 @@ public class DisableFlagSecure extends XposedModule {
log("deoptimize system server failed", t);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
// Screen record detection (V)
try {
hookWindowManagerService(classLoader);
} catch (Throwable t) {
log("hook WindowManagerService failed", t);
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
// Screenshot detection (U~V)
try {
@ -259,6 +268,14 @@ public class DisableFlagSecure extends XposedModule {
hook(method, ReturnNullHooker.class);
}
@TargetApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
private void hookWindowManagerService(ClassLoader classLoader) throws ClassNotFoundException, NoSuchMethodException {
var windowManagerServiceClazz = classLoader.loadClass("com.android.server.wm.WindowManagerService");
var iScreenRecordingCallbackClazz = classLoader.loadClass("android.window.IScreenRecordingCallback");
var method = windowManagerServiceClazz.getDeclaredMethod("registerScreenRecordingCallback", iScreenRecordingCallbackClazz);
hook(method, ReturnFalseHooker.class);
}
@TargetApi(Build.VERSION_CODES.S)
private void hookActivityManagerService(ClassLoader classLoader) throws ClassNotFoundException, NoSuchMethodException {
var activityTaskManagerServiceClazz = classLoader.loadClass("com.android.server.am.ActivityManagerService");