mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2025-05-10 20:55:38 +02:00
feat(Pandora): Add Disable audio ads
and Unlimited skips
patch (#4841)
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
This commit is contained in:
parent
00aa2000ba
commit
0cf7a4c6be
4 changed files with 76 additions and 0 deletions
|
@ -380,6 +380,14 @@ public final class app/revanced/patches/openinghours/misc/fix/crash/FixCrashPatc
|
||||||
public static final fun getFixCrashPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getFixCrashPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/pandora/ads/DisableAudioAdsPatchKt {
|
||||||
|
public static final fun getDisableAudioAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/pandora/misc/EnableUnlimitedSkipsPatchKt {
|
||||||
|
public static final fun getEnableUnlimitedSkipsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/photomath/detection/deviceid/SpoofDeviceIdPatchKt {
|
public final class app/revanced/patches/photomath/detection/deviceid/SpoofDeviceIdPatchKt {
|
||||||
public static final fun getGetDeviceIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getGetDeviceIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package app.revanced.patches.pandora.ads
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.pandora.shared.constructUserDataFingerprint
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val disableAudioAdsPatch = bytecodePatch(
|
||||||
|
name = "Disable audio ads",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.pandora.android")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
constructUserDataFingerprint.method.apply {
|
||||||
|
// First match is "hasAudioAds".
|
||||||
|
val hasAudioAdsStringIndex = constructUserDataFingerprint.stringMatches!!.first().index
|
||||||
|
val moveResultIndex = indexOfFirstInstructionOrThrow(hasAudioAdsStringIndex, Opcode.MOVE_RESULT)
|
||||||
|
val hasAudioAdsRegister = getInstruction<OneRegisterInstruction>(moveResultIndex).registerA
|
||||||
|
|
||||||
|
addInstruction(
|
||||||
|
moveResultIndex + 1,
|
||||||
|
"const/4 v$hasAudioAdsRegister, 0"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package app.revanced.patches.pandora.misc
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.pandora.shared.constructUserDataFingerprint
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val enableUnlimitedSkipsPatch = bytecodePatch(
|
||||||
|
name = "Enable unlimited skips",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.pandora.android")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
constructUserDataFingerprint.method.apply {
|
||||||
|
// Last match is "skipLimitBehavior".
|
||||||
|
val skipLimitBehaviorStringIndex = constructUserDataFingerprint.stringMatches!!.last().index
|
||||||
|
val moveResultObjectIndex =
|
||||||
|
indexOfFirstInstructionOrThrow(skipLimitBehaviorStringIndex, Opcode.MOVE_RESULT_OBJECT)
|
||||||
|
val skipLimitBehaviorRegister = getInstruction<OneRegisterInstruction>(moveResultObjectIndex).registerA
|
||||||
|
|
||||||
|
addInstruction(
|
||||||
|
moveResultObjectIndex + 1,
|
||||||
|
"const-string v$skipLimitBehaviorRegister, \"unlimited\""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package app.revanced.patches.pandora.shared
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val constructUserDataFingerprint = fingerprint {
|
||||||
|
strings("hasAudioAds", "skipLimitBehavior")
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue