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
234 changed files with 922 additions and 741 deletions

View File

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

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.adb
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.util.getReference
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;",
"getInt",
listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;"),
"I"
"I",
)
private val SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE = ImmutableMethodReference(
"Landroid/provider/Settings\$Global;",
"getInt",
listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;", "I"),
"I"
"I",
)
private val getIntMethodReferences = listOf(
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")
val `Hide ADB status` by creatingBytecodePatch(
@Suppress("unused")
val hideADBStatusPatch = bytecodePatch(
name = "Hide ADB status",
description = "Hides enabled development settings and/or ADB.",
use = false,
) {
extendWith("extensions/all/misc/adb/hide-adb.rve")
dependsOn(
transformInstructionsPatch(
filterMap = filterMap@{ classDef, method, instruction, instructionIndex ->
@@ -63,9 +63,9 @@ val `Hide ADB status` by creatingBytecodePatch(
method.replaceInstruction(
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
import app.revanced.patcher.patch.creatingResourcePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.asSequence
import app.revanced.util.childElementsSequence
import org.w3c.dom.Element
import java.util.logging.Logger
@Suppress("unused", "ObjectPropertyName")
val `Hide app icon` by creatingResourcePatch(
@Suppress("unused")
val hideAppIconPatch = resourcePatch(
name = "Hide app icon",
description = "Hides the app icon from the Android launcher.",
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
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.longOption
import app.revanced.patcher.patch.stringOption
@Suppress("unused", "ObjectPropertyName")
val `Spoof build info` by creatingBytecodePatch(
@Suppress("unused")
val spoofBuildInfoPatch = bytecodePatch(
name = "Spoof build info",
description = "Spoofs the information about the current build.",
use = false,
) {

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.connectivity.location.hide
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.fromMethodReference
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.reference.MethodReference
@Suppress("unused", "ObjectPropertyName")
val `Hide mock location` by creatingBytecodePatch(
@Suppress("unused")
val hideMockLocationPatch = bytecodePatch(
name = "Hide mock location",
description = "Prevents the app from knowing the device location is being mocked by a third party app.",
use = false,
) {

View File

@@ -2,8 +2,8 @@ package app.revanced.patches.all.misc.connectivity.telephony.sim.spoof
import app.revanced.patcher.patch.bytecodePatch
@Deprecated("Patch was renamed", ReplaceWith("`Spoof SIM provider`"))
@Deprecated("Patch was renamed", ReplaceWith("SpoofSIMProviderPatch"))
@Suppress("unused")
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.intOption
import app.revanced.patcher.patch.stringOption
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 java.util.*
@Suppress("unused", "ObjectPropertyName")
val `Spoof SIM provider` by creatingBytecodePatch(
@Suppress("unused")
val spoofSIMProviderPatch = bytecodePatch(
name = "Spoof SIM provider",
description = "Spoofs information about the SIM card provider.",
use = false,
) {

View File

@@ -1,6 +1,6 @@
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.filterMapInstruction35c
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;"
@Suppress("unused", "ObjectPropertyName")
val `Spoof Wi-Fi connection` by creatingBytecodePatch(
@Suppress("unused")
val spoofWiFiConnectionPatch = bytecodePatch(
name = "Spoof Wi-Fi connection",
description = "Spoofs an existing Wi-Fi connection.",
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.booleanOption
import app.revanced.patcher.patch.creatingResourcePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.patch.stringsOption
import app.revanced.util.Utils.trimIndentMultiline
import app.revanced.util.getNode
import org.w3c.dom.Element
import java.io.File
@Suppress("unused", "ObjectPropertyName")
val `Custom network security` by creatingResourcePatch(
@Suppress("unused")
val customNetworkSecurityPatch = resourcePatch(
name = "Custom network security",
description = "Allows trusting custom certificate authorities for a specific domain.",
use = false,
) {

View File

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

View File

@@ -1,12 +1,13 @@
package app.revanced.patches.all.misc.directory.documentsprovider
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.getNode
@Suppress("unused", "ObjectPropertyName")
val `Export internal data documents provider` by creatingResourcePatch(
@Suppress("unused")
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 " +
"to file managers and other apps that support the Storage Access Framework.",
use = false,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
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.patches.all.misc.transformation.IMethodCall
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"
private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;"
@Suppress("unused", "ObjectPropertyName")
val `Remove screen capture restriction` by creatingBytecodePatch(
@Suppress("unused")
val removeScreenCaptureRestrictionPatch = bytecodePatch(
name = "Remove screen capture restriction",
description = "Removes the restriction of capturing audio from apps that normally wouldn't allow it.",
use = false,
) {

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.all.misc.screenshot
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.filterMapInstruction35c
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"
private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;"
@Suppress("unused", "ObjectPropertyName")
val `Remove screenshot restriction` by creatingBytecodePatch(
@Suppress("unused")
val removeScreenshotRestrictionPatch = bytecodePatch(
name = "Remove screenshot restriction",
description = "Removes the restriction of taking screenshots in apps that normally wouldn't allow it.",
use = false,
) {

View File

@@ -1,14 +1,15 @@
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.getNode
import org.w3c.dom.Element
import java.io.FileNotFoundException
import java.util.logging.Logger
@Suppress("unused", "ObjectPropertyName")
val `Remove share targets` by creatingResourcePatch(
@Suppress("unused")
val removeShareTargetsPatch = resourcePatch(
name = "Remove share targets",
description = "Removes share targets like directly sharing to a frequent contact.",
use = false,
) {

View File

@@ -1,6 +1,6 @@
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.util.getNode
import com.android.apksig.ApkVerifier
@@ -13,8 +13,9 @@ import java.security.cert.CertificateException
import java.security.cert.CertificateFactory
import java.util.*
@Suppress("unused", "ObjectPropertyName")
val `Enable ROM signature spoofing` by creatingResourcePatch(
@Suppress("unused")
val enableROMSignatureSpoofingPatch = resourcePatch(
name = "Enable ROM signature spoofing",
description = "Spoofs the signature via the manifest meta-data \"fake-signature\". " +
"This patch only works with ROMs that support signature spoofing.",
use = false,

View File

@@ -1,12 +1,13 @@
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 org.w3c.dom.Element
import java.util.logging.Logger
@Suppress("unused", "ObjectPropertyName")
val `Set target SDK version 34` by creatingResourcePatch(
@Suppress("unused")
val setTargetSDKVersion34Patch = resourcePatch(
name = "Set target SDK version 34",
description = "Changes the target SDK to version 34 (Android 14). " +
"For devices running Android 15+, this will disable edge-to-edge display.",
use = false,

View File

@@ -1,12 +1,13 @@
package app.revanced.patches.all.misc.versioncode
import app.revanced.patcher.patch.creatingResourcePatch
import app.revanced.patcher.patch.intOption
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.getNode
import org.w3c.dom.Element
@Suppress("unused", "ObjectPropertyName")
val `Change version code` by creatingResourcePatch(
@Suppress("unused")
val changeVersionCodePatch = resourcePatch(
name = "Change version code",
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.",
use = false,

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,17 +1,18 @@
package app.revanced.patches.com.sbs.ondemand.tv
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patches.shared.misc.pairip.license.`Disable Pairip license check`
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.pairip.license.disablePairipLicenseCheckPatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Remove ads` by creatingBytecodePatch(
@Suppress("unused")
val removeAdsPatch = bytecodePatch(
name = "Remove ads",
description = "Removes pre-roll, pause and on-demand advertisements from SBS On Demand TV.",
) {
compatibleWith("com.sbs.ondemand.tv")
dependsOn(`Disable Pairip license check`)
dependsOn(disablePairipLicenseCheckPatch)
apply {
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.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.cricbuzz.misc.extension.sharedExtensionPatch
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
@@ -14,8 +14,8 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/cricbuzz/ads/HideAdsPatch;"
@Suppress("unused", "ObjectPropertyName")
val `Hide ads` by creatingBytecodePatch {
@Suppress("unused")
val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.cricbuzz.android"("6.24.01"))
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.getInstruction
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.indexOfFirstInstruction
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.reference.FieldReference
@Suppress("unused", "ObjectPropertyName")
val `Hide ads` by creatingBytecodePatch {
@Suppress("unused")
val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.crunchyroll.crunchyroid")
apply {

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.disneyplus
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName")
val `Skip ads` by creatingBytecodePatch(
@Suppress("unused")
val skipAdsPatch = bytecodePatch(
name = "Skip ads",
description = "Automatically skips ads.",
) {
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.extensions.addInstructions
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
@Suppress("unused", "ObjectPropertyName")
val `Disable ads` by creatingBytecodePatch {
@Suppress("unused")
val disableAdsPatch = bytecodePatch("Disable ads") {
// 6.55.3 and higher can show ads after each exercise.
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.extensions.addInstruction
import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName")
val `Enable debug menu` by creatingBytecodePatch(
@Suppress("unused")
val enableDebugMenuPatch = bytecodePatch(
name = "Enable debug menu",
use = false,
) {
compatibleWith("com.duolingo")

View File

@@ -2,11 +2,12 @@ package app.revanced.patches.duolingo.energy
import app.revanced.patcher.classDef
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.findFieldFromToString
@Suppress("unused", "ObjectPropertyName")
val `Skip energy recharge ads` by creatingBytecodePatch(
@Suppress("unused")
val skipEnergyRechargeAdsPatch = bytecodePatch(
name = "Skip energy recharge ads",
description = "Skips watching ads to recharge energy.",
) {
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.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.builder.MutableMethodImplementation
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.mutable.MutableMethod.Companion.toMutable
@Suppress("unused", "ObjectPropertyName")
val `Hide 'Sponsored Stories'` by creatingBytecodePatch {
@Suppress("unused")
val hideSponsoredStoriesPatch = bytecodePatch("Hide 'Sponsored Stories'") {
compatibleWith("com.facebook.katana"("490.0.0.63.82"))
apply {

View File

@@ -1,11 +1,12 @@
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 com.android.tools.smali.dexlib2.mutable.MutableMethod
@Suppress("unused", "ObjectPropertyName")
val `Hide story ads` by creatingBytecodePatch(
@Suppress("unused")
val hideStoryAdsPatch = bytecodePatch(
name = "Hide story ads",
description = "Hides the ads in the Facebook app stories.",
) {
compatibleWith("com.facebook.katana")

View File

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

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.finanzonline.detection.root
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName")
val `Remove root detection` by creatingBytecodePatch(
@Suppress("unused")
val removeRootDetectionPatch = bytecodePatch(
name = "Remove root detection",
description = "Removes the check for root permissions and unlocked bootloader.",
) {
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName")
val `Enable CustomTabs` by creatingBytecodePatch(
@Suppress("unused")
val enableCustomTabsPatch = bytecodePatch(
name = "Enable CustomTabs",
description = "Enables CustomTabs to open articles in your default browser.",
) {
compatibleWith("com.google.android.apps.magazines")

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.googlephotos.misc.backup
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Enable DCIM folders backup control` by creatingBytecodePatch(
@Suppress("unused")
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 " +
"for each folder individually. This will make the app default to having no folders backed up.",
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.stringsOption
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.StringReference
@Suppress("unused", "ObjectPropertyName")
val `Spoof features` by creatingBytecodePatch(
@Suppress("unused")
val spoofFeaturesPatch = bytecodePatch(
name = "Spoof features",
description = "Spoofs the device to enable Google Pixel exclusive features, including unlimited storage.",
) {
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.getInstruction
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
@Suppress("unused", "ObjectPropertyName")
val `Remove device restrictions` by creatingBytecodePatch(
@Suppress("unused")
val removeDeviceRestrictionsPatch = bytecodePatch(
name = "Remove device restrictions",
description = "Removes restrictions from using the app on any device. Requires mounting patched app over original.",
) {
compatibleWith("com.google.android.apps.recorder")

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
package app.revanced.patches.idaustria.detection.root
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patches.idaustria.detection.deviceintegrity.`Remove device integrity checks`
import app.revanced.patcher.patch.bytecodePatch
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")
val rootDetectionPatch by creatingBytecodePatch {
dependsOn(`Remove device integrity checks`)
val rootDetectionPatch = bytecodePatch {
dependsOn(removeDeviceIntegrityChecksPatch)
}

View File

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

View File

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

View File

@@ -1,11 +1,11 @@
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.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Hide ads` by creatingBytecodePatch {
@Suppress("unused")
val hideAdsPatch = bytecodePatch("Hide ads") {
compatibleWith("com.instagram.android")
apply {

View File

@@ -7,7 +7,7 @@ import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.firstMutableMethodDeclaratively
import app.revanced.patcher.immutableClassDef
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.util.getReference
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;"
@Suppress("unused", "ObjectPropertyName")
val `Limit feed to followed profiles` by creatingBytecodePatch(
@Suppress("unused")
val limitFeedToFollowedProfilesPatch = bytecodePatch(
name = "Limit feed to followed profiles",
description = "Filters the home feed to display only content from profiles you follow.",
use = false,
) {

View File

@@ -1,11 +1,12 @@
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.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Anonymous story viewing` by creatingBytecodePatch(
@Suppress("unused")
val anonymousStoryViewingPatch = bytecodePatch(
name = "Anonymous story viewing",
description = """
View stories without sending any information to the server.
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName")
val `Hide explore feed` by creatingBytecodePatch(
@Suppress("unused")
val hideExploreFeedPatch = bytecodePatch(
name = "Hide explore feed",
description = "Hides posts and reels from the explore/search page.",
use = false,
) {

View File

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

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.instagram.hide.stories
import app.revanced.patcher.extensions.removeInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName")
val `Hide Stories from Home` by creatingBytecodePatch(
@Suppress("unused")
val hideStoriesFromHomePatch = bytecodePatch(
name = "Hide Stories from Home",
description = "Hides Stories from the main page, by removing the buttons.",
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName")
val `Hide suggested content` by creatingBytecodePatch(
@Suppress("unused")
val hideSuggestedContentPatch = bytecodePatch(
name = "Hide suggested content",
description = "Hides suggested stories, reels, threads and survey from feed (Suggested posts will still be shown).",
use = false,
) {

View File

@@ -1,14 +1,15 @@
package app.revanced.patches.instagram.misc.devmenu
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.indexOfFirstInstructionReversedOrThrow
import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.Opcode
@Suppress("unused", "ObjectPropertyName")
val `Enable developer menu` by creatingBytecodePatch(
@Suppress("unused")
val enableDeveloperMenuPatch = bytecodePatch(
name = "Enable developer menu",
description = """
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.getInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.util.indexOfFirstInstructionOrThrow
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;"
@Suppress("unused", "ObjectPropertyName")
val `Open links externally` by creatingBytecodePatch(
@Suppress("unused")
val openLinksExternallyPatch = bytecodePatch(
name = "Open links externally",
description = "Changes links to always open in your external browser, instead of the in-app browser.",
use = false,
) {

View File

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

View File

@@ -1,15 +1,16 @@
package app.revanced.patches.instagram.misc.share.privacy
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.share.editShareLinksPatch
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/instagram/misc/share/privacy/SanitizeSharingLinksPatch;"
@Suppress("unused", "ObjectPropertyName")
val `Sanitize sharing links` by creatingBytecodePatch(
@Suppress("unused")
val sanitizeSharingLinksPatch = bytecodePatch(
name = "Sanitize sharing links",
description = "Removes the tracking query parameters from shared links.",
) {
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;
move-result-object v$register
"""
""",
)
}
}

View File

@@ -1,11 +1,12 @@
package app.revanced.patches.instagram.misc.signature
import app.revanced.patcher.immutableClassDef
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Disable signature check` by creatingBytecodePatch(
@Suppress("unused")
val disableSignatureCheckPatch = bytecodePatch(
name = "Disable signature check",
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.",
use = false,

View File

@@ -2,11 +2,12 @@ package app.revanced.patches.instagram.reels
import app.revanced.patcher.classDef
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Disable Reels scrolling` by creatingBytecodePatch(
@Suppress("unused")
val disableReelsScrollingPatch = bytecodePatch(
name = "Disable Reels scrolling",
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.",
use = true,

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
package app.revanced.patches.letterboxd.unlock.unlockAppIcons
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Unlock app icons` by creatingBytecodePatch {
@Suppress("unused")
val unlockAppIconsPatch = bytecodePatch("Unlock app icons") {
compatibleWith("com.letterboxd.letterboxd")
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused", "ObjectPropertyName")
val `Disable mandatory login` by creatingBytecodePatch {
@Suppress("unused")
val disableMandatoryLoginPatch = bytecodePatch("Disable mandatory login") {
compatibleWith("com.adobe.lrmobile"("9.3.0"))
apply {

View File

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

View File

@@ -1,12 +1,12 @@
package app.revanced.patches.memegenerator.misc.pro
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.signature.signatureVerificationPatch
@Suppress("unused", "ObjectPropertyName")
val `Unlock pro` by creatingBytecodePatch {
@Suppress("unused")
val unlockProPatch = bytecodePatch("Unlock pro") {
dependsOn(signatureVerificationPatch, licenseValidationPatch)
compatibleWith("com.zombodroid.MemeGenerator"("4.6364", "4.6370", "4.6375", "4.6377"))

View File

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

View File

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

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.messenger.layout
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Hide Facebook button` by creatingBytecodePatch(
@Suppress("unused")
val hideFacebookButtonPatch = bytecodePatch(
name = "Hide Facebook button",
description = "Hides the Facebook button in the top toolbar.",
) {
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.getInstruction
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 com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
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_METHOD_NAME = "overrideBooleanFlag"
@Suppress("unused", "ObjectPropertyName")
val `Remove Meta AI` by creatingBytecodePatch(
@Suppress("unused")
val removeMetaAIPatch = bytecodePatch(
name = "Remove Meta AI",
description = "Removes UI elements related to Meta AI.",
) {
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.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patches.mifitness.misc.login.`Fix login`
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.mifitness.misc.login.fixLoginPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused", "ObjectPropertyName")
val `Force English locale` by creatingBytecodePatch(
@Suppress("unused")
val forceEnglishLocalePatch = bytecodePatch(
name = "Force English locale",
description = "Forces wearable devices to use the English locale.",
) {
compatibleWith("com.xiaomi.wearable")
dependsOn(`Fix login`)
dependsOn(fixLoginPatch)
apply {
syncBluetoothLanguageMethodMatch.let {

View File

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

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.music.ad.video
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.addResourcesPatch
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;"
@Suppress("unused", "ObjectPropertyName")
val `Hide music video ads` by creatingBytecodePatch(
@Suppress("unused")
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.",
) {
dependsOn(

View File

@@ -1,12 +1,13 @@
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.settings.settingsPatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Enable exclusive audio playback` by creatingBytecodePatch(
@Suppress("unused")
val enableExclusiveAudioPlaybackPatch = bytecodePatch(
name = "Enable exclusive audio playback",
description = "Enables the option to play audio without video.",
) {
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.addInstructionsWithLabels
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.addResourcesPatch
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;"
@Suppress("unused", "ObjectPropertyName")
val `Permanent repeat` by creatingBytecodePatch(
@Suppress("unused")
val permanentRepeatPatch = bytecodePatch(
name = "Permanent repeat",
description = "Adds an option to always repeat even if the playlist ends or another track is played.",
) {
dependsOn(

View File

@@ -5,7 +5,7 @@ import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.firstMutableMethod
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.addResourcesPatch
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;"
@Suppress("unused", "ObjectPropertyName")
val `Hide buttons` by creatingBytecodePatch(
@Suppress("unused")
val hideButtonsPatch = bytecodePatch(
name = "Hide buttons",
description = "Adds options to hide the cast, history, notification, and search buttons.",
) {
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.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.addResourcesPatch
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;"
@Suppress("unused", "ObjectPropertyName")
val `Hide category bar` by creatingBytecodePatch(
@Suppress("unused")
val hideCategoryBarPatch = bytecodePatch(
name = "Hide category bar",
description = "Adds an option to hide the category bar at the top of the homepage.",
) {
dependsOn(

View File

@@ -6,7 +6,7 @@ import app.revanced.patcher.accessFlags
import app.revanced.patcher.extensions.getInstruction
import app.revanced.patcher.firstMutableMethodDeclaratively
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.patches.all.misc.resources.addResources
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;"
@Suppress("unused", "ObjectPropertyName")
val `Change miniplayer color` by creatingBytecodePatch(
@Suppress("unused")
val changeMiniplayerColorPatch = bytecodePatch(
name = "Change miniplayer color",
description = "Adds an option to change the miniplayer background color to match the fullscreen player.",
) {
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.getInstruction
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.patches.all.misc.resources.addResources
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;"
@Suppress("unused", "ObjectPropertyName")
val `Navigation bar` by creatingBytecodePatch(
@Suppress("unused")
val navigationBarPatch = bytecodePatch(
name = "Navigation bar",
description = "Adds options to hide navigation bar, labels and buttons.",
) {
dependsOn(

View File

@@ -4,7 +4,7 @@ import app.revanced.patcher.extensions.addInstruction
import app.revanced.patcher.extensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.getInstruction
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.addResourcesPatch
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;"
@Suppress("unused", "ObjectPropertyName")
val `Hide 'Get Music Premium'` by creatingBytecodePatch(
@Suppress("unused")
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.",
) {
dependsOn(

View File

@@ -1,12 +1,13 @@
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.settings.settingsPatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Bypass certificate checks` by creatingBytecodePatch(
@Suppress("unused")
val bypassCertificateChecksPatch = bytecodePatch(
name = "Bypass certificate checks",
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
) {
dependsOn(

View File

@@ -1,12 +1,13 @@
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.settings.settingsPatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Remove background playback restrictions` by creatingBytecodePatch(
@Suppress("unused")
val removeBackgroundPlaybackRestrictionsPatch = bytecodePatch(
name = "Remove background playback restrictions",
description = "Removes restrictions on background playback, including playing kids videos in the background.",
) {
dependsOn(

View File

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

View File

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

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.netguard.broadcasts.removerestriction
import app.revanced.patcher.patch.creatingResourcePatch
import app.revanced.patcher.patch.resourcePatch
import org.w3c.dom.Element
@Suppress("unused", "ObjectPropertyName")
val `Remove broadcasts restriction` by creatingResourcePatch(
@Suppress("unused")
val removeBroadcastsRestrictionPatch = resourcePatch(
name = "Remove broadcasts restriction",
description = "Enables starting/stopping NetGuard via broadcasts.",
) {
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.getInstruction
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.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@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.",
) {
compatibleWith("nl.sanomamedia.android.nu")

View File

@@ -1,10 +1,11 @@
package app.revanced.patches.nunl.firebase
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Spoof certificate` by creatingBytecodePatch(
@Suppress("unused")
val spoofCertificatePatch = bytecodePatch(
name = "Spoof certificate",
description = "Spoofs the X-Android-Cert header to allow push messages.",
) {
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.newLabel
import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode
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.reference.MethodReference
@Suppress("unused", "ObjectPropertyName")
val `Fix crash` by creatingBytecodePatch(
@Suppress("unused")
val fixCrashPatch = bytecodePatch(
name = "Fix crash",
description = "Fixes a crash when opening a place.",
) {
compatibleWith("de.simon.openinghours"("1.0"))

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,12 +1,13 @@
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.util.returnEarly
import kotlin.random.Random
@Suppress("unused", "ObjectPropertyName")
val `Spoof device ID` by creatingBytecodePatch(
@Suppress("unused")
val spoofDeviceIDPatch = bytecodePatch(
name = "Spoof device ID",
description = "Spoofs device ID to mitigate manual bans by developers.",
) {
dependsOn(signatureDetectionPatch)

View File

@@ -1,11 +1,12 @@
package app.revanced.patches.photomath.misc.annoyances
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
@Suppress("unused", "ObjectPropertyName")
val `Hide update popup` by creatingBytecodePatch(
@Suppress("unused")
val hideUpdatePopupPatch = bytecodePatch(
name = "Hide update popup",
description = "Prevents the update popup from showing up.",
) {
dependsOn(signatureDetectionPatch)

View File

@@ -1,12 +1,12 @@
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.misc.unlock.bookpoint.enableBookpointPatch
import app.revanced.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Unlock plus` by creatingBytecodePatch {
@Suppress("unused")
val unlockPlusPatch = bytecodePatch("Unlock plus") {
dependsOn(signatureDetectionPatch, enableBookpointPatch)
compatibleWith("com.microblink.photomath")

View File

@@ -1,11 +1,12 @@
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.util.returnEarly
@Suppress("unused", "ObjectPropertyName")
val `Spoof Android device ID` by creatingBytecodePatch(
@Suppress("unused")
val spoofAndroidDeviceIDPatch = bytecodePatch(
name = "Spoof Android device ID",
description = "Spoofs the Android device ID used by the app for account authentication." +
"This can be used to copy the account to another device.",
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.instructions
import app.revanced.patcher.extensions.replaceInstruction
import app.revanced.patcher.patch.creatingBytecodePatch
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.StringReference
@Suppress("unused", "ObjectPropertyName")
val `Disable tracking` by creatingBytecodePatch(
description = "Disables tracking by replacing tracking URLs with example.com."
@Suppress("unused")
val disableTrackingPatch = bytecodePatch(
name = "Disable tracking",
description = "Disables tracking by replacing tracking URLs with example.com.",
) {
compatibleWith(
"com.piccomaeurope.fr"(
@@ -57,7 +58,6 @@ val `Disable tracking` by creatingBytecodePatch(
)
}
appMeasurementMethod.addInstruction(0, "return-void")
}
}

View File

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

View File

@@ -2,7 +2,7 @@ package app.revanced.patches.primevideo.ads
import app.revanced.patcher.extensions.addInstructions
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.util.getReference
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.reference.MethodReference
@Suppress("unused", "ObjectPropertyName")
val `Skip ads` by creatingBytecodePatch(
@Suppress("unused")
val skipAdsPatch = bytecodePatch(
name = "Skip ads",
description = "Automatically skips video stream ads.",
) {
compatibleWith("com.amazon.avod.thirdpartyclient"("3.0.412.2947"))
@@ -31,7 +32,7 @@ val `Skip ads` by creatingBytecodePatch(
// move-result-object { playerRegister }
val getPlayerIndex = indexOfFirstInstructionOrThrow {
opcode == Opcode.INVOKE_VIRTUAL &&
getReference<MethodReference>()?.name == "getPrimaryPlayer"
getReference<MethodReference>()?.name == "getPrimaryPlayer"
}
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
return-void
"""
""",
)
}
}

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