From 0abfab79d7cda15bf17c53679fbfffb021662649 Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Sun, 14 Sep 2025 13:49:52 +0200 Subject: [PATCH] feat(Viber): Add `Hide ads` patch (#5826) --- patches/api/patches.api | 4 ++++ .../revanced/patches/viber/ads/Fingerprints.kt | 13 +++++++++++++ .../revanced/patches/viber/ads/HideAdsPatch.kt | 17 +++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 7c09b37e4..6d4c6e065 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1242,6 +1242,10 @@ public final class app/revanced/patches/twitter/misc/links/SanitizeSharingLinksP public static final fun getSanitizeSharingLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/viber/ads/HideAdsPatchKt { + public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/vsco/misc/pro/UnlockProPatchKt { public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt new file mode 100644 index 000000000..11ebe0d11 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt @@ -0,0 +1,13 @@ +package app.revanced.patches.viber.ads + +import app.revanced.patcher.fingerprint + +internal val adsFreeFingerprint = fingerprint { + returns("I") + parameters() + custom { method, classDef -> + classDef.type.contains("com/viber/voip/feature/viberplus") && + classDef.superclass?.contains("com/viber/voip/core/feature") == true && // Must extend com.viber.voip.core.feature.? + classDef.methods.count() == 1 + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt new file mode 100644 index 000000000..683e750e1 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt @@ -0,0 +1,17 @@ +package app.revanced.patches.viber.ads + +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.returnEarly + +@Suppress("unused") +val hideAdsPatch = bytecodePatch( + name = "Hide Ads", + description = "Hides ad banners between chats.", +) { + compatibleWith("com.viber.voip") + + execute { + // Return 1 (true) indicating ads should be disabled. + adsFreeFingerprint.method.returnEarly(1) + } +}