mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-07 01:51:27 +01:00
feat(Cricbuzz - Hide ads): Hide Cricbuzz11 UI elements (#5381)
This commit is contained in:
4
extensions/cricbuzz/build.gradle.kts
Normal file
4
extensions/cricbuzz/build.gradle.kts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
dependencies {
|
||||||
|
compileOnly(project(":extensions:shared:library"))
|
||||||
|
compileOnly(project(":extensions:cricbuzz:stub"))
|
||||||
|
}
|
||||||
1
extensions/cricbuzz/src/main/AndroidManifest.xml
Normal file
1
extensions/cricbuzz/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<manifest/>
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package app.revanced.extension.cricbuzz.ads;
|
||||||
|
|
||||||
|
import com.cricbuzz.android.data.rest.model.BottomBar;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import app.revanced.extension.shared.Logger;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class HideAdsPatch {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static void filterCb11(List<BottomBar> list) {
|
||||||
|
try {
|
||||||
|
Iterator<BottomBar> iterator = list.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
BottomBar bar = iterator.next();
|
||||||
|
if (bar.getName().equals("Cricbuzz11")) {
|
||||||
|
Logger.printInfo(() -> "Removing Cricbuzz11 bar: " + bar);
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.printException(() -> "filterCb11 failure", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
extensions/cricbuzz/stub/build.gradle.kts
Normal file
17
extensions/cricbuzz/stub/build.gradle.kts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.library)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "app.revanced.extension"
|
||||||
|
compileSdk = 34
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = 21
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
}
|
||||||
|
}
|
||||||
1
extensions/cricbuzz/stub/src/main/AndroidManifest.xml
Normal file
1
extensions/cricbuzz/stub/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<manifest/>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.cricbuzz.android.data.rest.model;
|
||||||
|
|
||||||
|
public final class BottomBar {
|
||||||
|
public final String getName() { throw new UnsupportedOperationException(); }
|
||||||
|
}
|
||||||
@@ -168,6 +168,10 @@ public final class app/revanced/patches/cricbuzz/ads/DisableAdsPatchKt {
|
|||||||
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/cricbuzz/misc/extension/ExtensionPatchKt {
|
||||||
|
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/crunchyroll/ads/HideAdsPatchKt {
|
public final class app/revanced/patches/crunchyroll/ads/HideAdsPatchKt {
|
||||||
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,24 +3,38 @@ package app.revanced.patches.cricbuzz.ads
|
|||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.cricbuzz.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
|
"Lapp/revanced/extension/cricbuzz/ads/HideAdsPatch;"
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val disableAdsPatch = bytecodePatch (
|
val disableAdsPatch = bytecodePatch (
|
||||||
name = "Hide ads",
|
name = "Hide ads",
|
||||||
) {
|
) {
|
||||||
compatibleWith("com.cricbuzz.android"("6.23.02"))
|
compatibleWith("com.cricbuzz.android"("6.24.01"))
|
||||||
|
|
||||||
|
dependsOn(sharedExtensionPatch)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
userStateSwitchFingerprint.method.apply {
|
userStateSwitchFingerprint.method.returnEarly(true)
|
||||||
val opcodeIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
|
||||||
val register = getInstruction<OneRegisterInstruction>(opcodeIndex).registerA
|
|
||||||
|
|
||||||
addInstruction(
|
// Remove region-specific Cricbuzz11 elements.
|
||||||
opcodeIndex + 1,
|
cb11ConstructorFingerprint.method.addInstruction(0, "const/4 p7, 0x0")
|
||||||
"const-string v$register, \"ACTIVE\""
|
getBottomBarFingerprint.method.apply {
|
||||||
|
val getIndex = indexOfFirstInstructionOrThrow() {
|
||||||
|
opcode == Opcode.IGET_OBJECT && getReference<FieldReference>()?.name == "bottomBar"
|
||||||
|
}
|
||||||
|
val getRegister = getInstruction<TwoRegisterInstruction>(getIndex).registerA
|
||||||
|
|
||||||
|
addInstruction(getIndex + 1,
|
||||||
|
"invoke-static { v$getRegister }, $EXTENSION_CLASS_DESCRIPTOR->filterCb11(Ljava/util/List;)V"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,30 @@ import app.revanced.patcher.fingerprint
|
|||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
internal val userStateSwitchFingerprint = fingerprint {
|
internal val userStateSwitchFingerprint = fingerprint {
|
||||||
strings("key.user.state", "NA")
|
|
||||||
opcodes(Opcode.SPARSE_SWITCH)
|
opcodes(Opcode.SPARSE_SWITCH)
|
||||||
|
strings("key.user.state", "NA")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val cb11ConstructorFingerprint = fingerprint {
|
||||||
|
parameters(
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"I",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"Z",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"L"
|
||||||
|
)
|
||||||
|
custom { _, classDef ->
|
||||||
|
classDef.endsWith("CB11Details;")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val getBottomBarFingerprint = fingerprint {
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "getBottomBar" && classDef.endsWith("HomeMenu;")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package app.revanced.patches.cricbuzz.misc.extension
|
||||||
|
|
||||||
|
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
||||||
|
|
||||||
|
val sharedExtensionPatch = sharedExtensionPatch("cricbuzz", applicationInitHook)
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package app.revanced.patches.cricbuzz.misc.extension
|
||||||
|
|
||||||
|
import app.revanced.patches.shared.misc.extension.extensionHook
|
||||||
|
|
||||||
|
internal val applicationInitHook = extensionHook {
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "onCreate" && classDef.endsWith("/NyitoActivity;")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user