From 2d5585b0ee46a18c8c02fc3483c6425aa1f83b90 Mon Sep 17 00:00:00 2001 From: Lightdm Date: Wed, 13 Mar 2024 13:07:31 +0100 Subject: [PATCH 1/2] Added patch to disable ads in Sync for Lemmy --- api/revanced-patches.api | 6 ++++ .../syncforlemmy/ads/DisableAdsPatch.kt | 29 +++++++++++++++++++ .../fingerprints/IsAdsEnabledFingerprint.kt | 11 +++++++ 3 files changed, 46 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 4e1ad810a5..9e7c360b42 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -894,6 +894,12 @@ public final class app/revanced/patches/strava/upselling/DisableSubscriptionSugg public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/syncforlemmy/ads/DisableAdsPatch : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/syncforlemmy/ads/DisableAdsPatch; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt new file mode 100644 index 0000000000..dd57b665e2 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt @@ -0,0 +1,29 @@ +package app.revanced.patches.syncforlemmy.ads + +import app.revanced.util.exception +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.syncforlemmy.ads.fingerprints.IsAdsEnabledFingerprint + +@Patch( + name = "Disable ads", + description = "This Patch disables all ads in the app", + compatiblePackages = [CompatiblePackage("io.syncapps.lemmy_sync")] +) +@Suppress("unused") +object DisableAdsPatch : BytecodePatch(setOf(IsAdsEnabledFingerprint)) { + override fun execute(context: BytecodeContext) { + IsAdsEnabledFingerprint.result?.mutableMethod?.apply { + addInstructions( + 0, + """ + const/4 v0, 0x0 + return v0 + """ + ) + } ?: throw IsAdsEnabledFingerprint.exception + } +} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt b/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt new file mode 100644 index 0000000000..a6badba69e --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt @@ -0,0 +1,11 @@ +package app.revanced.patches.syncforlemmy.ads.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal object IsAdsEnabledFingerprint : MethodFingerprint( + returnType = "Z", + accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, + strings = listOf("SyncIapHelper") +) \ No newline at end of file From 8f5f55a2a655fa8e69368ebf0ba1873b89fe7188 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 25 Mar 2024 21:14:40 +0100 Subject: [PATCH 2/2] refactor --- api/revanced-patches.api | 21 +++++++------ .../customclients/ads/BaseDisableAdsPatch.kt | 19 ++++++++++++ .../fingerprints/IsAdsEnabledFingerprint.kt | 6 ++-- .../syncforlemmy/ads/DisableAdsPatch.kt | 10 +++++++ .../syncforreddit/ads/DisableAdsPatch.kt | 30 +++---------------- .../fingerprints/IsAdsEnabledFingerprint.kt | 11 ------- .../syncforlemmy/ads/DisableAdsPatch.kt | 29 ------------------ 7 files changed, 48 insertions(+), 78 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt rename src/main/kotlin/app/revanced/patches/{syncforlemmy => reddit/customclients}/ads/fingerprints/IsAdsEnabledFingerprint.kt (73%) create mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/syncforlemmy/ads/DisableAdsPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/fingerprints/IsAdsEnabledFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 9e7c360b42..f32e620a1b 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -481,6 +481,13 @@ public final class app/revanced/patches/reddit/customclients/Constants { public static final field OAUTH_USER_AGENT Ljava/lang/String; } +public abstract class app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch : app/revanced/patcher/patch/BytecodePatch { + public fun (Ljava/util/Set;Ljava/util/Set;)V + public synthetic fun (Ljava/util/Set;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/reddit/customclients/baconreader/api/SpoofClientPatch : app/revanced/patches/reddit/customclients/BaseSpoofClientPatch { public static final field INSTANCE Lapp/revanced/patches/reddit/customclients/baconreader/api/SpoofClientPatch; public fun patchClientId (Ljava/util/Set;Lapp/revanced/patcher/data/BytecodeContext;)V @@ -536,10 +543,12 @@ public final class app/revanced/patches/reddit/customclients/slide/api/SpoofClie public fun patchClientId (Ljava/util/Set;Lapp/revanced/patcher/data/BytecodeContext;)V } -public final class app/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch : app/revanced/patcher/patch/BytecodePatch { +public final class app/revanced/patches/reddit/customclients/syncforlemmy/ads/DisableAdsPatch : app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch { + public static final field INSTANCE Lapp/revanced/patches/reddit/customclients/syncforlemmy/ads/DisableAdsPatch; +} + +public final class app/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch : app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch { public static final field INSTANCE Lapp/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch; - public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V - public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } public final class app/revanced/patches/reddit/customclients/syncforreddit/annoyances/startup/DisableSyncForLemmyBottomSheetPatch : app/revanced/patcher/patch/BytecodePatch { @@ -894,12 +903,6 @@ public final class app/revanced/patches/strava/upselling/DisableSubscriptionSugg public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } -public final class app/revanced/patches/syncforlemmy/ads/DisableAdsPatch : app/revanced/patcher/patch/BytecodePatch { - public static final field INSTANCE Lapp/revanced/patches/syncforlemmy/ads/DisableAdsPatch; - public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V - public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V -} - public final class app/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt new file mode 100644 index 0000000000..c8697180b6 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt @@ -0,0 +1,19 @@ +package app.revanced.patches.reddit.customclients.ads + +import app.revanced.patcher.PatchClass +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patches.reddit.customclients.ads.fingerprints.IsAdsEnabledFingerprint +import app.revanced.util.returnEarly + +abstract class BaseDisableAdsPatch( + dependencies: Set = emptySet(), + compatiblePackages: Set, +) : BytecodePatch( + name = "Disable ads", + dependencies = dependencies, + compatiblePackages = compatiblePackages, + fingerprints = setOf(IsAdsEnabledFingerprint), +) { + override fun execute(context: BytecodeContext) = listOf(IsAdsEnabledFingerprint).returnEarly() +} diff --git a/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/fingerprints/IsAdsEnabledFingerprint.kt similarity index 73% rename from src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt rename to src/main/kotlin/app/revanced/patches/reddit/customclients/ads/fingerprints/IsAdsEnabledFingerprint.kt index a6badba69e..a4c8b61d70 100644 --- a/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/fingerprints/IsAdsEnabledFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/fingerprints/IsAdsEnabledFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.syncforlemmy.ads.fingerprints +package app.revanced.patches.reddit.customclients.ads.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint @@ -7,5 +7,5 @@ import com.android.tools.smali.dexlib2.AccessFlags internal object IsAdsEnabledFingerprint : MethodFingerprint( returnType = "Z", accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - strings = listOf("SyncIapHelper") -) \ No newline at end of file + strings = listOf("SyncIapHelper"), +) diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforlemmy/ads/DisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforlemmy/ads/DisableAdsPatch.kt new file mode 100644 index 0000000000..2359a40db2 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforlemmy/ads/DisableAdsPatch.kt @@ -0,0 +1,10 @@ +package app.revanced.patches.reddit.customclients.syncforlemmy.ads + +import app.revanced.patches.reddit.customclients.ads.BaseDisableAdsPatch +import app.revanced.patches.reddit.customclients.syncforreddit.detection.piracy.DisablePiracyDetectionPatch + +@Suppress("unused") +object DisableAdsPatch : BaseDisableAdsPatch( + dependencies = setOf(DisablePiracyDetectionPatch::class), + compatiblePackages = setOf(CompatiblePackage("com.laurencedawson.reddit_sync")), +) diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch.kt index 75c57b646a..c43f4d32f4 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/DisableAdsPatch.kt @@ -1,30 +1,8 @@ package app.revanced.patches.reddit.customclients.syncforreddit.ads -import app.revanced.util.exception -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.reddit.customclients.syncforreddit.ads.fingerprints.IsAdsEnabledFingerprint -import app.revanced.patches.reddit.customclients.syncforreddit.detection.piracy.DisablePiracyDetectionPatch +import app.revanced.patches.reddit.customclients.ads.BaseDisableAdsPatch -@Patch( - name = "Disable ads", - dependencies = [DisablePiracyDetectionPatch::class], - compatiblePackages = [CompatiblePackage("com.laurencedawson.reddit_sync")] -) @Suppress("unused") -object DisableAdsPatch : BytecodePatch(setOf(IsAdsEnabledFingerprint)) { - override fun execute(context: BytecodeContext) { - IsAdsEnabledFingerprint.result?.mutableMethod?.apply { - addInstructions( - 0, - """ - const/4 v0, 0x0 - return v0 - """ - ) - } ?: throw IsAdsEnabledFingerprint.exception - } -} \ No newline at end of file +object DisableAdsPatch : BaseDisableAdsPatch( + compatiblePackages = setOf(CompatiblePackage("io.syncapps.lemmy_sync")), +) diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/fingerprints/IsAdsEnabledFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/fingerprints/IsAdsEnabledFingerprint.kt deleted file mode 100644 index 2c15da4edc..0000000000 --- a/src/main/kotlin/app/revanced/patches/reddit/customclients/syncforreddit/ads/fingerprints/IsAdsEnabledFingerprint.kt +++ /dev/null @@ -1,11 +0,0 @@ -package app.revanced.patches.reddit.customclients.syncforreddit.ads.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal object IsAdsEnabledFingerprint : MethodFingerprint( - returnType = "Z", - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - strings = listOf("SyncIapHelper") -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt deleted file mode 100644 index dd57b665e2..0000000000 --- a/src/main/kotlin/app/revanced/patches/syncforlemmy/ads/DisableAdsPatch.kt +++ /dev/null @@ -1,29 +0,0 @@ -package app.revanced.patches.syncforlemmy.ads - -import app.revanced.util.exception -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.syncforlemmy.ads.fingerprints.IsAdsEnabledFingerprint - -@Patch( - name = "Disable ads", - description = "This Patch disables all ads in the app", - compatiblePackages = [CompatiblePackage("io.syncapps.lemmy_sync")] -) -@Suppress("unused") -object DisableAdsPatch : BytecodePatch(setOf(IsAdsEnabledFingerprint)) { - override fun execute(context: BytecodeContext) { - IsAdsEnabledFingerprint.result?.mutableMethod?.apply { - addInstructions( - 0, - """ - const/4 v0, 0x0 - return v0 - """ - ) - } ?: throw IsAdsEnabledFingerprint.exception - } -} \ No newline at end of file