mirror of
https://github.com/LSPosed/DisableFlagSecure.git
synced 2025-05-05 02:09:43 +08:00
Disable screenshot detection on Android 14
This commit is contained in:
parent
7ace25f613
commit
add84ff217
@ -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));
|
||||
|
3
app/src/main/res/values-v34/strings.xml
Normal file
3
app/src/main/res/values-v34/strings.xml
Normal file
@ -0,0 +1,3 @@
|
||||
<resources>
|
||||
<string name="xposed_description">Disable FLAG_SECURE on all windows, enabling screenshots in apps that normally wouldn\'t allow it and disabling screenshot detection.</string>
|
||||
</resources>
|
4
app/src/main/res/values-zh-rCN-v34/strings.xml
Normal file
4
app/src/main/res/values-zh-rCN-v34/strings.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="xposed_description">对所有 Window 禁用 FLAG_SECURE,在通常不允许截图的应用中启用屏幕截图并禁用截图检测。</string>
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user