mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-29 13:41:03 +00:00
use properties without space until android minsdk 29
This commit is contained in:
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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",
|
||||
)
|
||||
}
|
||||
)
|
||||
},
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"))
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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'.
|
||||
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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
|
||||
"""
|
||||
""",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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"))
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user