use properties without space until android minsdk 29

This commit is contained in:
oSumAtrIX 2026-01-28 15:02:00 +01:00
parent 03c7e353a7
commit 545fc62b79
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4
234 changed files with 922 additions and 741 deletions

View file

@ -1,10 +1,10 @@
package app.revanced.patches.all.misc.activity.exportall package app.revanced.patches.all.misc.activity.exportall
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
@Suppress("unused")
@Suppress("unused", "ObjectPropertyName") val exportAllActivitiesPatch = resourcePatch(
val `Export all activities` by creatingResourcePatch( name = "Export all activities",
description = "Makes all app activities exportable.", description = "Makes all app activities exportable.",
use = false, use = false,
) { ) {

View file

@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.adb package app.revanced.patches.all.misc.adb
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import app.revanced.util.getReference import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
@ -16,29 +16,29 @@ private val SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE = ImmutableMethodR
"Landroid/provider/Settings\$Global;", "Landroid/provider/Settings\$Global;",
"getInt", "getInt",
listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;"), listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;"),
"I" "I",
) )
private val SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE = ImmutableMethodReference( private val SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE = ImmutableMethodReference(
"Landroid/provider/Settings\$Global;", "Landroid/provider/Settings\$Global;",
"getInt", "getInt",
listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;", "I"), listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;", "I"),
"I" "I",
) )
private val getIntMethodReferences = listOf( private val getIntMethodReferences = listOf(
SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE, SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE,
SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE,
) )
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ADB status` by creatingBytecodePatch( val hideADBStatusPatch = bytecodePatch(
name = "Hide ADB status",
description = "Hides enabled development settings and/or ADB.", description = "Hides enabled development settings and/or ADB.",
use = false, use = false,
) { ) {
extendWith("extensions/all/misc/adb/hide-adb.rve") extendWith("extensions/all/misc/adb/hide-adb.rve")
dependsOn( dependsOn(
transformInstructionsPatch( transformInstructionsPatch(
filterMap = filterMap@{ classDef, method, instruction, instructionIndex -> filterMap = filterMap@{ classDef, method, instruction, instructionIndex ->
@ -63,9 +63,9 @@ val `Hide ADB status` by creatingBytecodePatch(
method.replaceInstruction( method.replaceInstruction(
index, index,
"invoke-static { $registerString }, $EXTENSION_CLASS_DESCRIPTOR->getInt($parameterString)I" "invoke-static { $registerString }, $EXTENSION_CLASS_DESCRIPTOR->getInt($parameterString)I",
) )
} },
) ),
) )
} }

View file

@ -1,13 +1,14 @@
package app.revanced.patches.all.misc.appicon package app.revanced.patches.all.misc.appicon
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.asSequence import app.revanced.util.asSequence
import app.revanced.util.childElementsSequence import app.revanced.util.childElementsSequence
import org.w3c.dom.Element import org.w3c.dom.Element
import java.util.logging.Logger import java.util.logging.Logger
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide app icon` by creatingResourcePatch( val hideAppIconPatch = resourcePatch(
name = "Hide app icon",
description = "Hides the app icon from the Android launcher.", description = "Hides the app icon from the Android launcher.",
use = false, use = false,
) { ) {
@ -45,4 +46,3 @@ val `Hide app icon` by creatingResourcePatch(
} }
} }
} }

View file

@ -1,11 +1,12 @@
package app.revanced.patches.all.misc.build package app.revanced.patches.all.misc.build
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.longOption import app.revanced.patcher.patch.longOption
import app.revanced.patcher.patch.stringOption import app.revanced.patcher.patch.stringOption
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof build info` by creatingBytecodePatch( val spoofBuildInfoPatch = bytecodePatch(
name = "Spoof build info",
description = "Spoofs the information about the current build.", description = "Spoofs the information about the current build.",
use = false, use = false,
) { ) {

View file

@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.connectivity.location.hide package app.revanced.patches.all.misc.connectivity.location.hide
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.transformation.IMethodCall import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.fromMethodReference import app.revanced.patches.all.misc.transformation.fromMethodReference
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
@ -9,8 +9,9 @@ import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide mock location` by creatingBytecodePatch( val hideMockLocationPatch = bytecodePatch(
name = "Hide mock location",
description = "Prevents the app from knowing the device location is being mocked by a third party app.", description = "Prevents the app from knowing the device location is being mocked by a third party app.",
use = false, use = false,
) { ) {

View file

@ -2,8 +2,8 @@ package app.revanced.patches.all.misc.connectivity.telephony.sim.spoof
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Deprecated("Patch was renamed", ReplaceWith("`Spoof SIM provider`")) @Deprecated("Patch was renamed", ReplaceWith("SpoofSIMProviderPatch"))
@Suppress("unused") @Suppress("unused")
val spoofSimCountryPatch = bytecodePatch { val spoofSimCountryPatch = bytecodePatch {
dependsOn(`Spoof SIM provider`) dependsOn(spoofSIMProviderPatch)
} }

View file

@ -2,7 +2,7 @@ package app.revanced.patches.all.misc.connectivity.telephony.sim.spoof
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.intOption import app.revanced.patcher.patch.intOption
import app.revanced.patcher.patch.stringOption import app.revanced.patcher.patch.stringOption
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
@ -14,8 +14,9 @@ import com.android.tools.smali.dexlib2.mutable.MutableMethod
import com.android.tools.smali.dexlib2.util.MethodUtil import com.android.tools.smali.dexlib2.util.MethodUtil
import java.util.* import java.util.*
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof SIM provider` by creatingBytecodePatch( val spoofSIMProviderPatch = bytecodePatch(
name = "Spoof SIM provider",
description = "Spoofs information about the SIM card provider.", description = "Spoofs information about the SIM card provider.",
use = false, use = false,
) { ) {

View file

@ -1,6 +1,6 @@
package app.revanced.patches.all.misc.connectivity.wifi.spoof package app.revanced.patches.all.misc.connectivity.wifi.spoof
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.transformation.IMethodCall import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
@ -10,8 +10,9 @@ private const val EXTENSION_CLASS_DESCRIPTOR_PREFIX =
private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;" private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof Wi-Fi connection` by creatingBytecodePatch( val spoofWiFiConnectionPatch = bytecodePatch(
name = "Spoof Wi-Fi connection",
description = "Spoofs an existing Wi-Fi connection.", description = "Spoofs an existing Wi-Fi connection.",
use = false, use = false,
) { ) {

View file

@ -2,15 +2,16 @@ package app.revanced.patches.all.misc.customcertificates
import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.booleanOption import app.revanced.patcher.patch.booleanOption
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.patch.stringsOption import app.revanced.patcher.patch.stringsOption
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.Utils.trimIndentMultiline
import app.revanced.util.getNode import app.revanced.util.getNode
import org.w3c.dom.Element import org.w3c.dom.Element
import java.io.File import java.io.File
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Custom network security` by creatingResourcePatch( val customNetworkSecurityPatch = resourcePatch(
name = "Custom network security",
description = "Allows trusting custom certificate authorities for a specific domain.", description = "Allows trusting custom certificate authorities for a specific domain.",
use = false, use = false,
) { ) {

View file

@ -1,10 +1,11 @@
package app.revanced.patches.all.misc.debugging package app.revanced.patches.all.misc.debugging
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import org.w3c.dom.Element import org.w3c.dom.Element
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable Android debugging` by creatingResourcePatch( val enableAndroidDebuggingPatch = resourcePatch(
name = "Enable Android debugging",
description = "Enables Android debugging capabilities. This can slow down the app.", description = "Enables Android debugging capabilities. This can slow down the app.",
use = false, use = false,
) { ) {

View file

@ -1,12 +1,13 @@
package app.revanced.patches.all.misc.directory.documentsprovider package app.revanced.patches.all.misc.directory.documentsprovider
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.asSequence import app.revanced.util.asSequence
import app.revanced.util.getNode import app.revanced.util.getNode
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Export internal data documents provider` by creatingResourcePatch( val exportInternalDataDocumentsProviderPatch = resourcePatch(
name = "Export internal data documents provider",
description = "Exports a documents provider that grants access to the internal data directory of this app " + description = "Exports a documents provider that grants access to the internal data directory of this app " +
"to file managers and other apps that support the Storage Access Framework.", "to file managers and other apps that support the Storage Access Framework.",
use = false, use = false,

View file

@ -1,14 +1,14 @@
package app.revanced.patches.all.misc.hex package app.revanced.patches.all.misc.hex
import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.creatingRawResourcePatch import app.revanced.patcher.patch.rawResourcePatch
import app.revanced.patcher.patch.stringsOption import app.revanced.patcher.patch.stringsOption
import app.revanced.patches.shared.misc.hex.HexPatchBuilder import app.revanced.patches.shared.misc.hex.HexPatchBuilder
import app.revanced.patches.shared.misc.hex.hexPatch import app.revanced.patches.shared.misc.hex.hexPatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.Utils.trimIndentMultiline
@Suppress("unused") @Suppress("unused")
val Hex by creatingRawResourcePatch( val Hex = rawResourcePatch(
description = "Replaces a hexadecimal patterns of bytes of files in an APK.", description = "Replaces a hexadecimal patterns of bytes of files in an APK.",
use = false, use = false,
) { ) {

View file

@ -1,9 +1,10 @@
package app.revanced.patches.all.misc.interaction.gestures package app.revanced.patches.all.misc.interaction.gestures
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Predictive back gesture` by creatingResourcePatch( val predictiveBackGesturePatch = resourcePatch(
name = "Predictive back gesture",
description = "Enables the predictive back gesture introduced on Android 13.", description = "Enables the predictive back gesture introduced on Android 13.",
use = false, use = false,
) { ) {

View file

@ -1,17 +1,18 @@
package app.revanced.patches.all.misc.network package app.revanced.patches.all.misc.network
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.debugging.`Enable Android debugging` import app.revanced.patches.all.misc.debugging.enableAndroidDebuggingPatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.Utils.trimIndentMultiline
import org.w3c.dom.Element import org.w3c.dom.Element
import java.io.File import java.io.File
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Override certificate pinning` by creatingResourcePatch( val overrideCertificatePinningPatch = resourcePatch(
name = "Override certificate pinning",
description = "Overrides certificate pinning, allowing to inspect traffic via a proxy.", description = "Overrides certificate pinning, allowing to inspect traffic via a proxy.",
use = false, use = false,
) { ) {
dependsOn(`Enable Android debugging`) dependsOn(enableAndroidDebuggingPatch)
apply { apply {
val resXmlDirectory = get("res/xml") val resXmlDirectory = get("res/xml")

View file

@ -27,7 +27,8 @@ fun setOrGetFallbackPackageName(fallbackPackageName: String): String {
} }
@Suppress("ObjectPropertyName") @Suppress("ObjectPropertyName")
val `Change package name` by creatingResourcePatch( val changePackageNamePatch = resourcePatch(
name = "Change package name",
description = "Appends \".revanced\" to the package name by default. " + description = "Appends \".revanced\" to the package name by default. " +
"Changing the package name of the app can lead to unexpected issues.", "Changing the package name of the app can lead to unexpected issues.",
use = false, use = false,

View file

@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.playintegrity package app.revanced.patches.all.misc.playintegrity
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import app.revanced.util.getReference import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
@ -18,8 +18,9 @@ private val CONTEXT_BIND_SERVICE_METHOD_REFERENCE = ImmutableMethodReference(
"Z", "Z",
) )
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable Play Integrity` by creatingBytecodePatch( val disablePlayIntegrityPatch = bytecodePatch(
name = "Disable Play Integrity",
description = "Prevents apps from using Play Integrity by pretending it is not available.", description = "Prevents apps from using Play Integrity by pretending it is not available.",
use = false, use = false,
) { ) {

View file

@ -1,6 +1,6 @@
package app.revanced.patches.all.misc.screencapture package app.revanced.patches.all.misc.screencapture
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.transformation.IMethodCall import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
@ -28,8 +28,9 @@ private const val EXTENSION_CLASS_DESCRIPTOR_PREFIX =
"Lapp/revanced/extension/all/misc/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch" "Lapp/revanced/extension/all/misc/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch"
private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;" private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove screen capture restriction` by creatingBytecodePatch( val removeScreenCaptureRestrictionPatch = bytecodePatch(
name = "Remove screen capture restriction",
description = "Removes the restriction of capturing audio from apps that normally wouldn't allow it.", description = "Removes the restriction of capturing audio from apps that normally wouldn't allow it.",
use = false, use = false,
) { ) {

View file

@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.screenshot package app.revanced.patches.all.misc.screenshot
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.transformation.IMethodCall import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
@ -13,8 +13,9 @@ private const val EXTENSION_CLASS_DESCRIPTOR_PREFIX =
"Lapp/revanced/extension/all/misc/screenshot/removerestriction/RemoveScreenshotRestrictionPatch" "Lapp/revanced/extension/all/misc/screenshot/removerestriction/RemoveScreenshotRestrictionPatch"
private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;" private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove screenshot restriction` by creatingBytecodePatch( val removeScreenshotRestrictionPatch = bytecodePatch(
name = "Remove screenshot restriction",
description = "Removes the restriction of taking screenshots in apps that normally wouldn't allow it.", description = "Removes the restriction of taking screenshots in apps that normally wouldn't allow it.",
use = false, use = false,
) { ) {

View file

@ -1,14 +1,15 @@
package app.revanced.patches.all.misc.shortcut.sharetargets package app.revanced.patches.all.misc.shortcut.sharetargets
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.asSequence import app.revanced.util.asSequence
import app.revanced.util.getNode import app.revanced.util.getNode
import org.w3c.dom.Element import org.w3c.dom.Element
import java.io.FileNotFoundException import java.io.FileNotFoundException
import java.util.logging.Logger import java.util.logging.Logger
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove share targets` by creatingResourcePatch( val removeShareTargetsPatch = resourcePatch(
name = "Remove share targets",
description = "Removes share targets like directly sharing to a frequent contact.", description = "Removes share targets like directly sharing to a frequent contact.",
use = false, use = false,
) { ) {

View file

@ -1,6 +1,6 @@
package app.revanced.patches.all.misc.spoof package app.revanced.patches.all.misc.spoof
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.patch.stringOption import app.revanced.patcher.patch.stringOption
import app.revanced.util.getNode import app.revanced.util.getNode
import com.android.apksig.ApkVerifier import com.android.apksig.ApkVerifier
@ -13,8 +13,9 @@ import java.security.cert.CertificateException
import java.security.cert.CertificateFactory import java.security.cert.CertificateFactory
import java.util.* import java.util.*
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable ROM signature spoofing` by creatingResourcePatch( val enableROMSignatureSpoofingPatch = resourcePatch(
name = "Enable ROM signature spoofing",
description = "Spoofs the signature via the manifest meta-data \"fake-signature\". " + description = "Spoofs the signature via the manifest meta-data \"fake-signature\". " +
"This patch only works with ROMs that support signature spoofing.", "This patch only works with ROMs that support signature spoofing.",
use = false, use = false,

View file

@ -1,12 +1,13 @@
package app.revanced.patches.all.misc.targetSdk package app.revanced.patches.all.misc.targetSdk
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.getNode import app.revanced.util.getNode
import org.w3c.dom.Element import org.w3c.dom.Element
import java.util.logging.Logger import java.util.logging.Logger
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Set target SDK version 34` by creatingResourcePatch( val setTargetSDKVersion34Patch = resourcePatch(
name = "Set target SDK version 34",
description = "Changes the target SDK to version 34 (Android 14). " + description = "Changes the target SDK to version 34 (Android 14). " +
"For devices running Android 15+, this will disable edge-to-edge display.", "For devices running Android 15+, this will disable edge-to-edge display.",
use = false, use = false,

View file

@ -1,12 +1,13 @@
package app.revanced.patches.all.misc.versioncode package app.revanced.patches.all.misc.versioncode
import app.revanced.patcher.patch.creatingResourcePatch
import app.revanced.patcher.patch.intOption import app.revanced.patcher.patch.intOption
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.getNode import app.revanced.util.getNode
import org.w3c.dom.Element import org.w3c.dom.Element
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Change version code` by creatingResourcePatch( val changeVersionCodePatch = resourcePatch(
name = "Change version code",
description = "Changes the version code of the app. This will turn off app store updates " + description = "Changes the version code of the app. This will turn off app store updates " +
"and allows downgrading an existing app install to an older app version.", "and allows downgrading an existing app install to an older app version.",
use = false, use = false,

View file

@ -1,10 +1,11 @@
package app.revanced.patches.amazon package app.revanced.patches.amazon
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Always allow deep-linking` by creatingBytecodePatch( val alwaysAllowDeepLinkingPatch = bytecodePatch(
name = "Always allow deep-linking",
description = "Open Amazon links, even if the app is not set to handle Amazon links.", description = "Open Amazon links, even if the app is not set to handle Amazon links.",
) { ) {
compatibleWith("com.amazon.mShop.android.shopping") compatibleWith("com.amazon.mShop.android.shopping")

View file

@ -1,14 +1,14 @@
package app.revanced.patches.angulus.ads package app.revanced.patches.angulus.ads
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.pairip.license.`Disable Pairip license check` import app.revanced.patches.shared.misc.pairip.license.disablePairipLicenseCheckPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.drinkplusplus.angulus") compatibleWith("com.drinkplusplus.angulus")
dependsOn(`Disable Pairip license check`) dependsOn(disablePairipLicenseCheckPatch)
apply { apply {
// Always return 0 as the daily measurement count. // Always return 0 as the daily measurement count.

View file

@ -1,10 +1,11 @@
package app.revanced.patches.bandcamp.limitations package app.revanced.patches.bandcamp.limitations
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove play limits` by creatingBytecodePatch( val removePlayLimitsPatch = bytecodePatch(
name = "Remove play limits",
description = "Disables purchase nagging and playback limits of not purchased tracks.", description = "Disables purchase nagging and playback limits of not purchased tracks.",
) { ) {
compatibleWith("com.bandcamp.android") compatibleWith("com.bandcamp.android")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.cieid.restrictions.root package app.revanced.patches.cieid.restrictions.root
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Bypass root checks` by creatingBytecodePatch( val bypassRootChecksPatch = bytecodePatch(
name = "Bypass root checks",
description = "Removes the restriction to use the app with root permissions or on a custom ROM.", description = "Removes the restriction to use the app with root permissions or on a custom ROM.",
) { ) {
compatibleWith("it.ipzs.cieid") compatibleWith("it.ipzs.cieid")

View file

@ -1,17 +1,18 @@
package app.revanced.patches.com.sbs.ondemand.tv package app.revanced.patches.com.sbs.ondemand.tv
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.pairip.license.`Disable Pairip license check` import app.revanced.patches.shared.misc.pairip.license.disablePairipLicenseCheckPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove ads` by creatingBytecodePatch( val removeAdsPatch = bytecodePatch(
name = "Remove ads",
description = "Removes pre-roll, pause and on-demand advertisements from SBS On Demand TV.", description = "Removes pre-roll, pause and on-demand advertisements from SBS On Demand TV.",
) { ) {
compatibleWith("com.sbs.ondemand.tv") compatibleWith("com.sbs.ondemand.tv")
dependsOn(`Disable Pairip license check`) dependsOn(disablePairipLicenseCheckPatch)
apply { apply {
shouldShowAdvertisingTVMethod.returnEarly(true) shouldShowAdvertisingTVMethod.returnEarly(true)

View file

@ -2,7 +2,7 @@ package app.revanced.patches.cricbuzz.ads
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.cricbuzz.misc.extension.sharedExtensionPatch import app.revanced.patches.cricbuzz.misc.extension.sharedExtensionPatch
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
@ -14,8 +14,8 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
private const val EXTENSION_CLASS_DESCRIPTOR = private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/cricbuzz/ads/HideAdsPatch;" "Lapp/revanced/extension/cricbuzz/ads/HideAdsPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.cricbuzz.android"("6.24.01")) compatibleWith("com.cricbuzz.android"("6.24.01"))
dependsOn(sharedExtensionPatch) dependsOn(sharedExtensionPatch)

View file

@ -3,7 +3,7 @@ package app.revanced.patches.crunchyroll.ads
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.instructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction import app.revanced.util.indexOfFirstInstruction
import app.revanced.util.removeFlags import app.revanced.util.removeFlags
@ -12,8 +12,8 @@ import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference import com.android.tools.smali.dexlib2.iface.reference.FieldReference
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.crunchyroll.crunchyroid") compatibleWith("com.crunchyroll.crunchyroid")
apply { apply {

View file

@ -1,10 +1,11 @@
package app.revanced.patches.disneyplus package app.revanced.patches.disneyplus
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Skip ads` by creatingBytecodePatch( val skipAdsPatch = bytecodePatch(
name = "Skip ads",
description = "Automatically skips ads.", description = "Automatically skips ads.",
) { ) {
compatibleWith("com.disney.disneyplus") compatibleWith("com.disney.disneyplus")

View file

@ -3,11 +3,11 @@ package app.revanced.patches.duolingo.ad
import app.revanced.patcher.classDef import app.revanced.patcher.classDef
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable ads` by creatingBytecodePatch { val disableAdsPatch = bytecodePatch("Disable ads") {
// 6.55.3 and higher can show ads after each exercise. // 6.55.3 and higher can show ads after each exercise.
compatibleWith("com.duolingo"("6.54.5")) compatibleWith("com.duolingo"("6.54.5"))

View file

@ -3,12 +3,13 @@ package app.revanced.patches.duolingo.debug
import app.revanced.patcher.classDef import app.revanced.patcher.classDef
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable debug menu` by creatingBytecodePatch( val enableDebugMenuPatch = bytecodePatch(
name = "Enable debug menu",
use = false, use = false,
) { ) {
compatibleWith("com.duolingo") compatibleWith("com.duolingo")

View file

@ -2,11 +2,12 @@ package app.revanced.patches.duolingo.energy
import app.revanced.patcher.classDef import app.revanced.patcher.classDef
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.findFieldFromToString import app.revanced.util.findFieldFromToString
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Skip energy recharge ads` by creatingBytecodePatch( val skipEnergyRechargeAdsPatch = bytecodePatch(
name = "Skip energy recharge ads",
description = "Skips watching ads to recharge energy.", description = "Skips watching ads to recharge energy.",
) { ) {
compatibleWith("com.duolingo") compatibleWith("com.duolingo")

View file

@ -2,7 +2,7 @@ package app.revanced.patches.facebook.ads.mainfeed
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.addInstructionsWithLabels import app.revanced.patcher.extensions.addInstructionsWithLabels
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction31i import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction31i
@ -10,8 +10,8 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
import com.android.tools.smali.dexlib2.mutable.MutableMethod.Companion.toMutable import com.android.tools.smali.dexlib2.mutable.MutableMethod.Companion.toMutable
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide 'Sponsored Stories'` by creatingBytecodePatch { val hideSponsoredStoriesPatch = bytecodePatch("Hide 'Sponsored Stories'") {
compatibleWith("com.facebook.katana"("490.0.0.63.82")) compatibleWith("com.facebook.katana"("490.0.0.63.82"))
apply { apply {

View file

@ -1,11 +1,12 @@
package app.revanced.patches.facebook.ads.story package app.revanced.patches.facebook.ads.story
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.mutable.MutableMethod import com.android.tools.smali.dexlib2.mutable.MutableMethod
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide story ads` by creatingBytecodePatch( val hideStoryAdsPatch = bytecodePatch(
name = "Hide story ads",
description = "Hides the ads in the Facebook app stories.", description = "Hides the ads in the Facebook app stories.",
) { ) {
compatibleWith("com.facebook.katana") compatibleWith("com.facebook.katana")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.finanzonline.detection.bootloader package app.revanced.patches.finanzonline.detection.bootloader
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove bootloader detection` by creatingBytecodePatch( val removeBootloaderDetectionPatch = bytecodePatch(
name = "Remove bootloader detection",
description = "Removes the check for an unlocked bootloader.", description = "Removes the check for an unlocked bootloader.",
) { ) {
compatibleWith("at.gv.bmf.bmf2go") compatibleWith("at.gv.bmf.bmf2go")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.finanzonline.detection.root package app.revanced.patches.finanzonline.detection.root
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove root detection` by creatingBytecodePatch( val removeRootDetectionPatch = bytecodePatch(
name = "Remove root detection",
description = "Removes the check for root permissions and unlocked bootloader.", description = "Removes the check for root permissions and unlocked bootloader.",
) { ) {
compatibleWith("at.gv.bmf.bmf2go") compatibleWith("at.gv.bmf.bmf2go")

View file

@ -2,11 +2,12 @@ package app.revanced.patches.googlenews.customtabs
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable CustomTabs` by creatingBytecodePatch( val enableCustomTabsPatch = bytecodePatch(
name = "Enable CustomTabs",
description = "Enables CustomTabs to open articles in your default browser.", description = "Enables CustomTabs to open articles in your default browser.",
) { ) {
compatibleWith("com.google.android.apps.magazines") compatibleWith("com.google.android.apps.magazines")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.googlephotos.misc.backup package app.revanced.patches.googlephotos.misc.backup
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable DCIM folders backup control` by creatingBytecodePatch( val enableDCIMFoldersBackupControlPatch = bytecodePatch(
name = "Enable DCIM folders backup control",
description = "Disables always on backup for the Camera and other DCIM folders, allowing you to control backup " + description = "Disables always on backup for the Camera and other DCIM folders, allowing you to control backup " +
"for each folder individually. This will make the app default to having no folders backed up.", "for each folder individually. This will make the app default to having no folders backed up.",
use = false, use = false,

View file

@ -2,15 +2,16 @@ package app.revanced.patches.googlephotos.misc.features
import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.instructions
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.stringsOption import app.revanced.patcher.patch.stringsOption
import app.revanced.util.getReference import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.StringReference import com.android.tools.smali.dexlib2.iface.reference.StringReference
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof features` by creatingBytecodePatch( val spoofFeaturesPatch = bytecodePatch(
name = "Spoof features",
description = "Spoofs the device to enable Google Pixel exclusive features, including unlimited storage.", description = "Spoofs the device to enable Google Pixel exclusive features, including unlimited storage.",
) { ) {
compatibleWith("com.google.android.apps.photos") compatibleWith("com.google.android.apps.photos")

View file

@ -3,11 +3,12 @@ package app.revanced.patches.googlerecorder.restrictions
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.removeInstructions import app.revanced.patcher.extensions.removeInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove device restrictions` by creatingBytecodePatch( val removeDeviceRestrictionsPatch = bytecodePatch(
name = "Remove device restrictions",
description = "Removes restrictions from using the app on any device. Requires mounting patched app over original.", description = "Removes restrictions from using the app on any device. Requires mounting patched app over original.",
) { ) {
compatibleWith("com.google.android.apps.recorder") compatibleWith("com.google.android.apps.recorder")

View file

@ -1,10 +1,10 @@
package app.revanced.patches.hexeditor.ad package app.revanced.patches.hexeditor.ad
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable ads` by creatingBytecodePatch { val disableAdsPatch = bytecodePatch("Disable ads") {
compatibleWith("com.myprog.hexedit") compatibleWith("com.myprog.hexedit")
apply { apply {

View file

@ -1,10 +1,10 @@
package app.revanced.patches.iconpackstudio.misc.pro package app.revanced.patches.iconpackstudio.misc.pro
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Unlock pro` by creatingBytecodePatch { val unlockProPatch = bytecodePatch("Unlock pro") {
compatibleWith("ginlemon.iconpackstudio"("2.2 build 016")) compatibleWith("ginlemon.iconpackstudio"("2.2 build 016"))
apply { apply {

View file

@ -1,11 +1,12 @@
package app.revanced.patches.idaustria.detection.deviceintegrity package app.revanced.patches.idaustria.detection.deviceintegrity
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove device integrity checks` by creatingBytecodePatch( val removeDeviceIntegrityChecksPatch = bytecodePatch(
name = "Remove device integrity checks",
description = "Removes the check for root permissions and unlocked bootloader.", description = "Removes the check for root permissions and unlocked bootloader.",
) { ) {
compatibleWith("at.gv.oe.app") compatibleWith("at.gv.oe.app")

View file

@ -1,10 +1,10 @@
package app.revanced.patches.idaustria.detection.root package app.revanced.patches.idaustria.detection.root
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.idaustria.detection.deviceintegrity.`Remove device integrity checks` import app.revanced.patches.idaustria.detection.deviceintegrity.removeDeviceIntegrityChecksPatch
@Deprecated("Patch was superseded", ReplaceWith("`Remove device integrity checks`")) @Deprecated("Patch was superseded", ReplaceWith("removeDeviceIntegrityChecksPatch"))
@Suppress("unused") @Suppress("unused")
val rootDetectionPatch by creatingBytecodePatch { val rootDetectionPatch = bytecodePatch {
dependsOn(`Remove device integrity checks`) dependsOn(removeDeviceIntegrityChecksPatch)
} }

View file

@ -1,10 +1,11 @@
package app.revanced.patches.idaustria.detection.signature package app.revanced.patches.idaustria.detection.signature
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof signature` by creatingBytecodePatch( val spoofSignaturePatch = bytecodePatch(
name = "Spoof signature",
description = "Spoofs the signature of the app.", description = "Spoofs the signature of the app.",
) { ) {
compatibleWith("at.gv.oe.app") compatibleWith("at.gv.oe.app")

View file

@ -1,10 +1,10 @@
package app.revanced.patches.inshorts.ad package app.revanced.patches.inshorts.ad
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.nis.app") compatibleWith("com.nis.app")
apply { apply {

View file

@ -1,11 +1,11 @@
package app.revanced.patches.instagram.ads package app.revanced.patches.instagram.ads
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.meta.ads.adInjectorMethod import app.revanced.patches.meta.ads.adInjectorMethod
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.instagram.android") compatibleWith("com.instagram.android")
apply { apply {

View file

@ -7,7 +7,7 @@ import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.firstMutableMethodDeclaratively import app.revanced.patcher.firstMutableMethodDeclaratively
import app.revanced.patcher.immutableClassDef import app.revanced.patcher.immutableClassDef
import app.revanced.patcher.name import app.revanced.patcher.name
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
@ -16,8 +16,9 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles;" internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Limit feed to followed profiles` by creatingBytecodePatch( val limitFeedToFollowedProfilesPatch = bytecodePatch(
name = "Limit feed to followed profiles",
description = "Filters the home feed to display only content from profiles you follow.", description = "Filters the home feed to display only content from profiles you follow.",
use = false, use = false,
) { ) {

View file

@ -1,11 +1,12 @@
package app.revanced.patches.instagram.ghost.story package app.revanced.patches.instagram.ghost.story
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.Utils.trimIndentMultiline
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Anonymous story viewing` by creatingBytecodePatch( val anonymousStoryViewingPatch = bytecodePatch(
name = "Anonymous story viewing",
description = """ description = """
View stories without sending any information to the server. View stories without sending any information to the server.
Your view will not appear in the story viewers list. Your view will not appear in the story viewers list.

View file

@ -2,11 +2,12 @@ package app.revanced.patches.instagram.hide.explore
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide explore feed` by creatingBytecodePatch( val hideExploreFeedPatch = bytecodePatch(
name = "Hide explore feed",
description = "Hides posts and reels from the explore/search page.", description = "Hides posts and reels from the explore/search page.",
use = false, use = false,
) { ) {

View file

@ -5,7 +5,7 @@ import app.revanced.patcher.firstMutableMethodDeclaratively
import app.revanced.patcher.immutableClassDef import app.revanced.patcher.immutableClassDef
import app.revanced.patcher.name import app.revanced.patcher.name
import app.revanced.patcher.patch.booleanOption import app.revanced.patcher.patch.booleanOption
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.util.addInstructionsAtControlFlowLabel import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister import app.revanced.util.findFreeRegister
@ -20,8 +20,9 @@ import java.util.logging.Logger
private const val EXTENSION_CLASS_DESCRIPTOR = private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/instagram/hide/navigation/HideNavigationButtonsPatch;" "Lapp/revanced/extension/instagram/hide/navigation/HideNavigationButtonsPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide navigation buttons` by creatingBytecodePatch( val hideNavigationButtonsPatch = bytecodePatch(
name = "Hide navigation buttons",
description = "Hides navigation bar buttons, such as the Reels and Create button.", description = "Hides navigation bar buttons, such as the Reels and Create button.",
use = false, use = false,
) { ) {

View file

@ -1,10 +1,11 @@
package app.revanced.patches.instagram.hide.stories package app.revanced.patches.instagram.hide.stories
import app.revanced.patcher.extensions.removeInstruction import app.revanced.patcher.extensions.removeInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide Stories from Home` by creatingBytecodePatch( val hideStoriesFromHomePatch = bytecodePatch(
name = "Hide Stories from Home",
description = "Hides Stories from the main page, by removing the buttons.", description = "Hides Stories from the main page, by removing the buttons.",
use = false, use = false,
) { ) {

View file

@ -2,11 +2,12 @@ package app.revanced.patches.instagram.hide.suggestions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide suggested content` by creatingBytecodePatch( val hideSuggestedContentPatch = bytecodePatch(
name = "Hide suggested content",
description = "Hides suggested stories, reels, threads and survey from feed (Suggested posts will still be shown).", description = "Hides suggested stories, reels, threads and survey from feed (Suggested posts will still be shown).",
use = false, use = false,
) { ) {

View file

@ -1,14 +1,15 @@
package app.revanced.patches.instagram.misc.devmenu package app.revanced.patches.instagram.misc.devmenu
import app.revanced.patcher.extensions.methodReference import app.revanced.patcher.extensions.methodReference
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.Utils.trimIndentMultiline
import app.revanced.util.indexOfFirstInstructionReversedOrThrow import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable developer menu` by creatingBytecodePatch( val enableDeveloperMenuPatch = bytecodePatch(
name = "Enable developer menu",
description = """ description = """
Enables the developer menu, which can be found at the bottom of settings menu with name 'Internal Settings'. Enables the developer menu, which can be found at the bottom of settings menu with name 'Internal Settings'.

View file

@ -2,7 +2,7 @@ package app.revanced.patches.instagram.misc.links
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
@ -10,8 +10,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagram/misc/links/OpenLinksExternallyPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagram/misc/links/OpenLinksExternallyPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Open links externally` by creatingBytecodePatch( val openLinksExternallyPatch = bytecodePatch(
name = "Open links externally",
description = "Changes links to always open in your external browser, instead of the in-app browser.", description = "Changes links to always open in your external browser, instead of the in-app browser.",
use = false, use = false,
) { ) {

View file

@ -1,7 +1,7 @@
package app.revanced.patches.instagram.misc.share.domain package app.revanced.patches.instagram.misc.share.domain
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.stringOption import app.revanced.patcher.patch.stringOption
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.patches.instagram.misc.share.editShareLinksPatch import app.revanced.patches.instagram.misc.share.editShareLinksPatch
@ -10,8 +10,9 @@ import app.revanced.util.returnEarly
internal const val EXTENSION_CLASS_DESCRIPTOR = internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/instagram/misc/share/domain/ChangeLinkSharingDomainPatch;" "Lapp/revanced/extension/instagram/misc/share/domain/ChangeLinkSharingDomainPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Change link sharing domain` by creatingBytecodePatch( val changeLinkSharingDomainPatch = bytecodePatch(
name = "Change link sharing domain",
description = "Replaces the domain name of shared links.", description = "Replaces the domain name of shared links.",
use = false, use = false,
) { ) {

View file

@ -1,15 +1,16 @@
package app.revanced.patches.instagram.misc.share.privacy package app.revanced.patches.instagram.misc.share.privacy
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.patches.instagram.misc.share.editShareLinksPatch import app.revanced.patches.instagram.misc.share.editShareLinksPatch
private const val EXTENSION_CLASS_DESCRIPTOR = private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/instagram/misc/share/privacy/SanitizeSharingLinksPatch;" "Lapp/revanced/extension/instagram/misc/share/privacy/SanitizeSharingLinksPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Sanitize sharing links` by creatingBytecodePatch( val sanitizeSharingLinksPatch = bytecodePatch(
name = "Sanitize sharing links",
description = "Removes the tracking query parameters from shared links.", description = "Removes the tracking query parameters from shared links.",
) { ) {
compatibleWith("com.instagram.android") compatibleWith("com.instagram.android")
@ -23,7 +24,7 @@ val `Sanitize sharing links` by creatingBytecodePatch(
""" """
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->sanitizeSharingLink(Ljava/lang/String;)Ljava/lang/String; invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->sanitizeSharingLink(Ljava/lang/String;)Ljava/lang/String;
move-result-object v$register move-result-object v$register
""" """,
) )
} }
} }

View file

@ -1,11 +1,12 @@
package app.revanced.patches.instagram.misc.signature package app.revanced.patches.instagram.misc.signature
import app.revanced.patcher.immutableClassDef import app.revanced.patcher.immutableClassDef
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable signature check` by creatingBytecodePatch( val disableSignatureCheckPatch = bytecodePatch(
name = "Disable signature check",
description = "Disables the signature check that can cause the app to crash on startup. " + description = "Disables the signature check that can cause the app to crash on startup. " +
"Using this patch may cause issues with sharing or opening external Instagram links.", "Using this patch may cause issues with sharing or opening external Instagram links.",
use = false, use = false,

View file

@ -2,11 +2,12 @@ package app.revanced.patches.instagram.reels
import app.revanced.patcher.classDef import app.revanced.patcher.classDef
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable Reels scrolling` by creatingBytecodePatch( val disableReelsScrollingPatch = bytecodePatch(
name = "Disable Reels scrolling",
description = "Disables the endless scrolling behavior in Instagram Reels, preventing swiping to the next Reel. " + description = "Disables the endless scrolling behavior in Instagram Reels, preventing swiping to the next Reel. " +
"Note: On a clean install, the 'Tip' animation may appear but will stop on its own after a few seconds.", "Note: On a clean install, the 'Tip' animation may appear but will stop on its own after a few seconds.",
use = true, use = true,

View file

@ -1,10 +1,11 @@
package app.revanced.patches.instagram.story.flipping package app.revanced.patches.instagram.story.flipping
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable story auto flipping` by creatingBytecodePatch( val disableStoryAutoFlippingPatch = bytecodePatch(
name = "Disable story auto flipping",
description = "Disable stories automatically flipping/skipping after some seconds.", description = "Disable stories automatically flipping/skipping after some seconds.",
use = false, use = false,
) { ) {

View file

@ -1,10 +1,10 @@
package app.revanced.patches.irplus.ad package app.revanced.patches.irplus.ad
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove ads` by creatingBytecodePatch { val removeAdsPatch = bytecodePatch("Remove ads") {
compatibleWith("net.binarymode.android.irplus") compatibleWith("net.binarymode.android.irplus")
apply { apply {

View file

@ -1,11 +1,11 @@
package app.revanced.patches.letterboxd.ads package app.revanced.patches.letterboxd.ads
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.letterboxd.letterboxd") compatibleWith("com.letterboxd.letterboxd")
apply { apply {

View file

@ -1,10 +1,10 @@
package app.revanced.patches.letterboxd.unlock.unlockAppIcons package app.revanced.patches.letterboxd.unlock.unlockAppIcons
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Unlock app icons` by creatingBytecodePatch { val unlockAppIconsPatch = bytecodePatch("Unlock app icons") {
compatibleWith("com.letterboxd.letterboxd") compatibleWith("com.letterboxd.letterboxd")
apply { apply {

View file

@ -2,10 +2,10 @@ package app.revanced.patches.lightroom.misc.login
import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.instructions
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable mandatory login` by creatingBytecodePatch { val disableMandatoryLoginPatch = bytecodePatch("Disable mandatory login") {
compatibleWith("com.adobe.lrmobile"("9.3.0")) compatibleWith("com.adobe.lrmobile"("9.3.0"))
apply { apply {

View file

@ -1,10 +1,10 @@
package app.revanced.patches.lightroom.misc.premium package app.revanced.patches.lightroom.misc.premium
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Unlock Premium` by creatingBytecodePatch { val unlockPremiumPatch = bytecodePatch("Unlock Premium") {
compatibleWith("com.adobe.lrmobile"("9.3.0")) compatibleWith("com.adobe.lrmobile"("9.3.0"))
apply { apply {

View file

@ -1,12 +1,12 @@
package app.revanced.patches.memegenerator.misc.pro package app.revanced.patches.memegenerator.misc.pro
import app.revanced.patcher.extensions.replaceInstructions import app.revanced.patcher.extensions.replaceInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.memegenerator.detection.license.licenseValidationPatch import app.revanced.patches.memegenerator.detection.license.licenseValidationPatch
import app.revanced.patches.memegenerator.detection.signature.signatureVerificationPatch import app.revanced.patches.memegenerator.detection.signature.signatureVerificationPatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Unlock pro` by creatingBytecodePatch { val unlockProPatch = bytecodePatch("Unlock pro") {
dependsOn(signatureVerificationPatch, licenseValidationPatch) dependsOn(signatureVerificationPatch, licenseValidationPatch)
compatibleWith("com.zombodroid.MemeGenerator"("4.6364", "4.6370", "4.6375", "4.6377")) compatibleWith("com.zombodroid.MemeGenerator"("4.6364", "4.6370", "4.6375", "4.6377"))

View file

@ -1,10 +1,11 @@
package app.revanced.patches.messenger.inbox package app.revanced.patches.messenger.inbox
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide inbox ads` by creatingBytecodePatch( val hideInboxAdsPatch = bytecodePatch(
name = "Hide inbox ads",
description = "Hides ads in inbox.", description = "Hides ads in inbox.",
) { ) {
compatibleWith("com.facebook.orca") compatibleWith("com.facebook.orca")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.messenger.inbox package app.revanced.patches.messenger.inbox
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide inbox subtabs` by creatingBytecodePatch( val hideInboxSubtabsPatch = bytecodePatch(
name = "Hide inbox subtabs",
description = "Hides Home and Channels tabs between active now tray and chats.", description = "Hides Home and Channels tabs between active now tray and chats.",
) { ) {
compatibleWith("com.facebook.orca") compatibleWith("com.facebook.orca")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.messenger.layout package app.revanced.patches.messenger.layout
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide Facebook button` by creatingBytecodePatch( val hideFacebookButtonPatch = bytecodePatch(
name = "Hide Facebook button",
description = "Hides the Facebook button in the top toolbar.", description = "Hides the Facebook button in the top toolbar.",
) { ) {
compatibleWith("com.facebook.orca") compatibleWith("com.facebook.orca")

View file

@ -3,7 +3,7 @@ package app.revanced.patches.messenger.metaai
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.messenger.misc.extension.sharedExtensionPatch import app.revanced.patches.messenger.misc.extension.sharedExtensionPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
@ -11,8 +11,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/messenger/metaai/RemoveMetaAIPatch;" internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/messenger/metaai/RemoveMetaAIPatch;"
internal const val EXTENSION_METHOD_NAME = "overrideBooleanFlag" internal const val EXTENSION_METHOD_NAME = "overrideBooleanFlag"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove Meta AI` by creatingBytecodePatch( val removeMetaAIPatch = bytecodePatch(
name = "Remove Meta AI",
description = "Removes UI elements related to Meta AI.", description = "Removes UI elements related to Meta AI.",
) { ) {
compatibleWith("com.facebook.orca") compatibleWith("com.facebook.orca")

View file

@ -2,17 +2,18 @@ package app.revanced.patches.mifitness.misc.locale
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.mifitness.misc.login.`Fix login` import app.revanced.patches.mifitness.misc.login.fixLoginPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Force English locale` by creatingBytecodePatch( val forceEnglishLocalePatch = bytecodePatch(
name = "Force English locale",
description = "Forces wearable devices to use the English locale.", description = "Forces wearable devices to use the English locale.",
) { ) {
compatibleWith("com.xiaomi.wearable") compatibleWith("com.xiaomi.wearable")
dependsOn(`Fix login`) dependsOn(fixLoginPatch)
apply { apply {
syncBluetoothLanguageMethodMatch.let { syncBluetoothLanguageMethodMatch.let {

View file

@ -1,10 +1,11 @@
package app.revanced.patches.mifitness.misc.login package app.revanced.patches.mifitness.misc.login
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("ObjectPropertyName") @Suppress("ObjectPropertyName")
val `Fix login` by creatingBytecodePatch( val fixLoginPatch = bytecodePatch(
name = "Fix login",
description = "Fixes login for uncertified Mi Fitness app", description = "Fixes login for uncertified Mi Fitness app",
) { ) {
compatibleWith("com.xiaomi.wearable") compatibleWith("com.xiaomi.wearable")

View file

@ -1,7 +1,7 @@
package app.revanced.patches.music.ad.video package app.revanced.patches.music.ad.video
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
@ -11,8 +11,9 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideVideoAdsPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideVideoAdsPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide music video ads` by creatingBytecodePatch( val hideMusicVideoAdsPatch = bytecodePatch(
name = "Hide music video ads",
description = "Adds an option to hide ads that appear while listening to or streaming music videos, podcasts, or songs.", description = "Adds an option to hide ads that appear while listening to or streaming music videos, podcasts, or songs.",
) { ) {
dependsOn( dependsOn(

View file

@ -1,12 +1,13 @@
package app.revanced.patches.music.audio.exclusiveaudio package app.revanced.patches.music.audio.exclusiveaudio
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.settingsPatch import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable exclusive audio playback` by creatingBytecodePatch( val enableExclusiveAudioPlaybackPatch = bytecodePatch(
name = "Enable exclusive audio playback",
description = "Enables the option to play audio without video.", description = "Enables the option to play audio without video.",
) { ) {
dependsOn( dependsOn(

View file

@ -3,7 +3,7 @@ package app.revanced.patches.music.interaction.permanentrepeat
import app.revanced.patcher.extensions.ExternalLabel import app.revanced.patcher.extensions.ExternalLabel
import app.revanced.patcher.extensions.addInstructionsWithLabels import app.revanced.patcher.extensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.instructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
@ -14,8 +14,9 @@ import app.revanced.util.findFreeRegister
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/PermanentRepeatPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/PermanentRepeatPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Permanent repeat` by creatingBytecodePatch( val permanentRepeatPatch = bytecodePatch(
name = "Permanent repeat",
description = "Adds an option to always repeat even if the playlist ends or another track is played.", description = "Adds an option to always repeat even if the playlist ends or another track is played.",
) { ) {
dependsOn( dependsOn(

View file

@ -5,7 +5,7 @@ import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.firstMutableMethod import app.revanced.patcher.firstMutableMethod
import app.revanced.patcher.immutableClassDef import app.revanced.patcher.immutableClassDef
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
@ -33,8 +33,9 @@ internal var topBarMenuItemImageView = -1L
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideButtonsPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideButtonsPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide buttons` by creatingBytecodePatch( val hideButtonsPatch = bytecodePatch(
name = "Hide buttons",
description = "Adds options to hide the cast, history, notification, and search buttons.", description = "Adds options to hide the cast, history, notification, and search buttons.",
) { ) {
dependsOn( dependsOn(

View file

@ -2,7 +2,7 @@ package app.revanced.patches.music.layout.compactheader
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
@ -17,8 +17,9 @@ internal var chipCloud = -1L
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCategoryBarPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCategoryBarPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide category bar` by creatingBytecodePatch( val hideCategoryBarPatch = bytecodePatch(
name = "Hide category bar",
description = "Adds an option to hide the category bar at the top of the homepage.", description = "Adds an option to hide the category bar at the top of the homepage.",
) { ) {
dependsOn( dependsOn(

View file

@ -6,7 +6,7 @@ import app.revanced.patcher.accessFlags
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.firstMutableMethodDeclaratively import app.revanced.patcher.firstMutableMethodDeclaratively
import app.revanced.patcher.parameterTypes import app.revanced.patcher.parameterTypes
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.returnType import app.revanced.patcher.returnType
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
@ -24,8 +24,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/ChangeMiniplayerColorPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/ChangeMiniplayerColorPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Change miniplayer color` by creatingBytecodePatch( val changeMiniplayerColorPatch = bytecodePatch(
name = "Change miniplayer color",
description = "Adds an option to change the miniplayer background color to match the fullscreen player.", description = "Adds an option to change the miniplayer background color to match the fullscreen player.",
) { ) {
dependsOn( dependsOn(

View file

@ -3,7 +3,7 @@ package app.revanced.patches.music.layout.navigationbar
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
@ -26,8 +26,9 @@ internal var text1 = -1L
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/NavigationBarPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/NavigationBarPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Navigation bar` by creatingBytecodePatch( val navigationBarPatch = bytecodePatch(
name = "Navigation bar",
description = "Adds options to hide navigation bar, labels and buttons.", description = "Adds options to hide navigation bar, labels and buttons.",
) { ) {
dependsOn( dependsOn(

View file

@ -4,7 +4,7 @@ import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.addInstructionsWithLabels import app.revanced.patcher.extensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
@ -15,8 +15,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideGetPremiumPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideGetPremiumPatch;"
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide 'Get Music Premium'` by creatingBytecodePatch( val hideGetMusicPremiumPatch = bytecodePatch(
name = "Hide 'Get Music Premium'",
description = "Adds an option to hide the \"Get Music Premium\" label in the settings and account menu.", description = "Adds an option to hide the \"Get Music Premium\" label in the settings and account menu.",
) { ) {
dependsOn( dependsOn(

View file

@ -1,12 +1,13 @@
package app.revanced.patches.music.misc.androidauto package app.revanced.patches.music.misc.androidauto
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.settingsPatch import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Bypass certificate checks` by creatingBytecodePatch( val bypassCertificateChecksPatch = bytecodePatch(
name = "Bypass certificate checks",
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.", description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
) { ) {
dependsOn( dependsOn(

View file

@ -1,12 +1,13 @@
package app.revanced.patches.music.misc.backgroundplayback package app.revanced.patches.music.misc.backgroundplayback
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.settingsPatch import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove background playback restrictions` by creatingBytecodePatch( val removeBackgroundPlaybackRestrictionsPatch = bytecodePatch(
name = "Remove background playback restrictions",
description = "Removes restrictions on background playback, including playing kids videos in the background.", description = "Removes restrictions on background playback, including playing kids videos in the background.",
) { ) {
dependsOn( dependsOn(

View file

@ -1,10 +1,10 @@
package app.revanced.patches.myexpenses.misc.pro package app.revanced.patches.myexpenses.misc.pro
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Unlock pro` by creatingBytecodePatch { val unlockProPatch = bytecodePatch("Unlock pro") {
compatibleWith("org.totschnig.myexpenses"("3.4.9")) compatibleWith("org.totschnig.myexpenses"("3.4.9"))
apply { apply {

View file

@ -1,11 +1,12 @@
package app.revanced.patches.myfitnesspal.ads package app.revanced.patches.myfitnesspal.ads
import app.revanced.patcher.extensions.replaceInstructions import app.revanced.patcher.extensions.replaceInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch( val hideAdsPatch = bytecodePatch(
description = "Hides most of the ads across the app." name = "Hide ads",
description = "Hides most of the ads across the app.",
) { ) {
compatibleWith("com.myfitnesspal.android"("24.14.2")) compatibleWith("com.myfitnesspal.android"("24.14.2"))

View file

@ -1,10 +1,11 @@
package app.revanced.patches.netguard.broadcasts.removerestriction package app.revanced.patches.netguard.broadcasts.removerestriction
import app.revanced.patcher.patch.creatingResourcePatch import app.revanced.patcher.patch.resourcePatch
import org.w3c.dom.Element import org.w3c.dom.Element
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove broadcasts restriction` by creatingResourcePatch( val removeBroadcastsRestrictionPatch = resourcePatch(
name = "Remove broadcasts restriction",
description = "Enables starting/stopping NetGuard via broadcasts.", description = "Enables starting/stopping NetGuard via broadcasts.",
) { ) {
compatibleWith("eu.faircode.netguard") compatibleWith("eu.faircode.netguard")

View file

@ -3,14 +3,15 @@ package app.revanced.patches.nunl.ads
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.extensions.removeInstructions import app.revanced.patcher.extensions.removeInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("ObjectPropertyName") @Suppress("ObjectPropertyName")
val `Hide ads` by creatingBytecodePatch( val hideAdsPatch = bytecodePatch(
name = "Hide ads",
description = "Hide ads and sponsored articles in list pages and remove pre-roll ads on videos.", description = "Hide ads and sponsored articles in list pages and remove pre-roll ads on videos.",
) { ) {
compatibleWith("nl.sanomamedia.android.nu") compatibleWith("nl.sanomamedia.android.nu")

View file

@ -1,10 +1,11 @@
package app.revanced.patches.nunl.firebase package app.revanced.patches.nunl.firebase
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof certificate` by creatingBytecodePatch( val spoofCertificatePatch = bytecodePatch(
name = "Spoof certificate",
description = "Spoofs the X-Android-Cert header to allow push messages.", description = "Spoofs the X-Android-Cert header to allow push messages.",
) { ) {
compatibleWith("nl.sanomamedia.android.nu") compatibleWith("nl.sanomamedia.android.nu")

View file

@ -3,7 +3,7 @@ package app.revanced.patches.openinghours.misc.fix.crash
import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.instructions
import app.revanced.patcher.extensions.newLabel import app.revanced.patcher.extensions.newLabel
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.getReference import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21t import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21t
@ -11,8 +11,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.Instruction import com.android.tools.smali.dexlib2.iface.instruction.Instruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Fix crash` by creatingBytecodePatch( val fixCrashPatch = bytecodePatch(
name = "Fix crash",
description = "Fixes a crash when opening a place.", description = "Fixes a crash when opening a place.",
) { ) {
compatibleWith("de.simon.openinghours"("1.0")) compatibleWith("de.simon.openinghours"("1.0"))

View file

@ -1,11 +1,12 @@
package app.revanced.patches.orfon.detection.root package app.revanced.patches.orfon.detection.root
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Remove root detection` by creatingBytecodePatch( val removeRootDetectionPatch = bytecodePatch(
description = "Removes the check for root permissions and unlocked bootloader." name = "Remove root detection",
description = "Removes the check for root permissions and unlocked bootloader.",
) { ) {
compatibleWith("com.nousguide.android.orftvthek") compatibleWith("com.nousguide.android.orftvthek")

View file

@ -1,10 +1,10 @@
package app.revanced.patches.pandora.ads package app.revanced.patches.pandora.ads
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable Audio Ads` by creatingBytecodePatch { val disableAudioAdsPatch = bytecodePatch("Disable Audio Ads") {
compatibleWith("com.pandora.android") compatibleWith("com.pandora.android")
apply { apply {

View file

@ -1,10 +1,10 @@
package app.revanced.patches.pandora.misc package app.revanced.patches.pandora.misc
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Enable unlimited skips` by creatingBytecodePatch { val enableUnlimitedSkipsPatch = bytecodePatch("Enable unlimited skips") {
compatibleWith("com.pandora.android") compatibleWith("com.pandora.android")
apply { apply {

View file

@ -1,11 +1,12 @@
package app.revanced.patches.peacocktv.ads package app.revanced.patches.peacocktv.ads
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch( val hideAdsPatch = bytecodePatch(
description = "Hides all video ads." name = "Hide ads",
description = "Hides all video ads.",
) { ) {
compatibleWith("com.peacocktv.peacockandroid") compatibleWith("com.peacocktv.peacockandroid")

View file

@ -1,12 +1,13 @@
package app.revanced.patches.photomath.detection.deviceid package app.revanced.patches.photomath.detection.deviceid
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
import kotlin.random.Random import kotlin.random.Random
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof device ID` by creatingBytecodePatch( val spoofDeviceIDPatch = bytecodePatch(
name = "Spoof device ID",
description = "Spoofs device ID to mitigate manual bans by developers.", description = "Spoofs device ID to mitigate manual bans by developers.",
) { ) {
dependsOn(signatureDetectionPatch) dependsOn(signatureDetectionPatch)

View file

@ -1,11 +1,12 @@
package app.revanced.patches.photomath.misc.annoyances package app.revanced.patches.photomath.misc.annoyances
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide update popup` by creatingBytecodePatch( val hideUpdatePopupPatch = bytecodePatch(
name = "Hide update popup",
description = "Prevents the update popup from showing up.", description = "Prevents the update popup from showing up.",
) { ) {
dependsOn(signatureDetectionPatch) dependsOn(signatureDetectionPatch)

View file

@ -1,12 +1,12 @@
package app.revanced.patches.photomath.misc.unlock.plus package app.revanced.patches.photomath.misc.unlock.plus
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch
import app.revanced.patches.photomath.misc.unlock.bookpoint.enableBookpointPatch import app.revanced.patches.photomath.misc.unlock.bookpoint.enableBookpointPatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Unlock plus` by creatingBytecodePatch { val unlockPlusPatch = bytecodePatch("Unlock plus") {
dependsOn(signatureDetectionPatch, enableBookpointPatch) dependsOn(signatureDetectionPatch, enableBookpointPatch)
compatibleWith("com.microblink.photomath") compatibleWith("com.microblink.photomath")

View file

@ -1,11 +1,12 @@
package app.revanced.patches.piccomafr.misc package app.revanced.patches.piccomafr.misc
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.stringOption import app.revanced.patcher.patch.stringOption
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Spoof Android device ID` by creatingBytecodePatch( val spoofAndroidDeviceIDPatch = bytecodePatch(
name = "Spoof Android device ID",
description = "Spoofs the Android device ID used by the app for account authentication." + description = "Spoofs the Android device ID used by the app for account authentication." +
"This can be used to copy the account to another device.", "This can be used to copy the account to another device.",
use = false, use = false,

View file

@ -3,15 +3,16 @@ package app.revanced.patches.piccomafr.tracking
import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.instructions
import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.getReference import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.StringReference import com.android.tools.smali.dexlib2.iface.reference.StringReference
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Disable tracking` by creatingBytecodePatch( val disableTrackingPatch = bytecodePatch(
description = "Disables tracking by replacing tracking URLs with example.com." name = "Disable tracking",
description = "Disables tracking by replacing tracking URLs with example.com.",
) { ) {
compatibleWith( compatibleWith(
"com.piccomaeurope.fr"( "com.piccomaeurope.fr"(
@ -57,7 +58,6 @@ val `Disable tracking` by creatingBytecodePatch(
) )
} }
appMeasurementMethod.addInstruction(0, "return-void") appMeasurementMethod.addInstruction(0, "return-void")
} }
} }

View file

@ -1,10 +1,10 @@
package app.revanced.patches.pixiv.ads package app.revanced.patches.pixiv.ads
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Hide ads` by creatingBytecodePatch { val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("jp.pxv.android"("6.141.1")) compatibleWith("jp.pxv.android"("6.141.1"))
apply { apply {

View file

@ -2,7 +2,7 @@ package app.revanced.patches.primevideo.ads
import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.primevideo.misc.extension.sharedExtensionPatch import app.revanced.patches.primevideo.misc.extension.sharedExtensionPatch
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
@ -11,8 +11,9 @@ import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Suppress("unused", "ObjectPropertyName") @Suppress("unused")
val `Skip ads` by creatingBytecodePatch( val skipAdsPatch = bytecodePatch(
name = "Skip ads",
description = "Automatically skips video stream ads.", description = "Automatically skips video stream ads.",
) { ) {
compatibleWith("com.amazon.avod.thirdpartyclient"("3.0.412.2947")) compatibleWith("com.amazon.avod.thirdpartyclient"("3.0.412.2947"))
@ -31,7 +32,7 @@ val `Skip ads` by creatingBytecodePatch(
// move-result-object { playerRegister } // move-result-object { playerRegister }
val getPlayerIndex = indexOfFirstInstructionOrThrow { val getPlayerIndex = indexOfFirstInstructionOrThrow {
opcode == Opcode.INVOKE_VIRTUAL && opcode == Opcode.INVOKE_VIRTUAL &&
getReference<MethodReference>()?.name == "getPrimaryPlayer" getReference<MethodReference>()?.name == "getPrimaryPlayer"
} }
val playerRegister = getInstruction<OneRegisterInstruction>(getPlayerIndex + 1).registerA val playerRegister = getInstruction<OneRegisterInstruction>(getPlayerIndex + 1).registerA
@ -44,7 +45,7 @@ val `Skip ads` by creatingBytecodePatch(
""" """
invoke-static { p0, p1, v$playerRegister }, Lapp/revanced/extension/primevideo/ads/SkipAdsPatch;->enterServerInsertedAdBreakState(Lcom/amazon/avod/media/ads/internal/state/ServerInsertedAdBreakState;Lcom/amazon/avod/media/ads/internal/state/AdBreakTrigger;Lcom/amazon/avod/media/playback/VideoPlayer;)V invoke-static { p0, p1, v$playerRegister }, Lapp/revanced/extension/primevideo/ads/SkipAdsPatch;->enterServerInsertedAdBreakState(Lcom/amazon/avod/media/ads/internal/state/ServerInsertedAdBreakState;Lcom/amazon/avod/media/ads/internal/state/AdBreakTrigger;Lcom/amazon/avod/media/playback/VideoPlayer;)V
return-void return-void
""" """,
) )
} }
} }

Some files were not shown because too many files have changed in this diff Show more