mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-22 10:23:55 +00:00
feat: Add Prevent screenshot detection patch (#6482)
Co-authored-by: Swakshan <56347042+Swakshan@users.noreply.github.com> Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
@@ -124,6 +124,10 @@ public final class app/revanced/patches/all/misc/screencapture/RemoveScreenCaptu
|
|||||||
public static final fun getRemoveScreenCaptureRestrictionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getRemoveScreenCaptureRestrictionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/all/misc/screenshot/PreventScreenshotDetectionPatchKt {
|
||||||
|
public static final fun getPreventScreenshotDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatchKt {
|
public final class app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatchKt {
|
||||||
public static final fun getRemoveScreenshotRestrictionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getRemoveScreenshotRestrictionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package app.revanced.patches.all.misc.screenshot
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference
|
||||||
|
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||||
|
|
||||||
|
private val registerScreenCaptureCallbackMethodReference = ImmutableMethodReference(
|
||||||
|
"Landroid/app/Activity;",
|
||||||
|
"registerScreenCaptureCallback",
|
||||||
|
listOf(
|
||||||
|
"Ljava/util/concurrent/Executor;",
|
||||||
|
"Landroid/app/Activity\$ScreenCaptureCallback;",
|
||||||
|
),
|
||||||
|
"V"
|
||||||
|
)
|
||||||
|
|
||||||
|
private val unregisterScreenCaptureCallbackMethodReference = ImmutableMethodReference(
|
||||||
|
"Landroid/app/Activity;",
|
||||||
|
"unregisterScreenCaptureCallback",
|
||||||
|
listOf(
|
||||||
|
"Landroid/app/Activity\$ScreenCaptureCallback;",
|
||||||
|
),
|
||||||
|
"V"
|
||||||
|
)
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val preventScreenshotDetectionPatch = bytecodePatch(
|
||||||
|
name = "Prevent screenshot detection",
|
||||||
|
description = "Removes the registration of all screen capture callbacks. This prevents the app from detecting screenshots.",
|
||||||
|
) {
|
||||||
|
dependsOn(transformInstructionsPatch(
|
||||||
|
filterMap = { _, _, instruction, instructionIndex ->
|
||||||
|
if (instruction.opcode != Opcode.INVOKE_VIRTUAL) return@transformInstructionsPatch null
|
||||||
|
|
||||||
|
val reference = instruction.getReference<MethodReference>() ?: return@transformInstructionsPatch null
|
||||||
|
|
||||||
|
instructionIndex.takeIf {
|
||||||
|
MethodUtil.methodSignaturesMatch(reference, registerScreenCaptureCallbackMethodReference) ||
|
||||||
|
MethodUtil.methodSignaturesMatch(reference, unregisterScreenCaptureCallbackMethodReference)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
transform = { mutableMethod, instructionIndex ->
|
||||||
|
mutableMethod.removeInstruction(instructionIndex)
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user