From 0181d2b21837ce6743a9f151712da776711d35d7 Mon Sep 17 00:00:00 2001 From: inotia00 Date: Mon, 25 Sep 2023 11:11:49 +0900 Subject: [PATCH] fix(music/exclusive-audio-playback): switch didn't actually work --- .../DataSavingSettingsFragmentFingerprint.kt | 10 ++++++++++ .../exclusiveaudio/patch/ExclusiveAudioPatch.kt | 15 +++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/DataSavingSettingsFragmentFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/DataSavingSettingsFragmentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/DataSavingSettingsFragmentFingerprint.kt new file mode 100644 index 000000000..40c56d7b0 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/DataSavingSettingsFragmentFingerprint.kt @@ -0,0 +1,10 @@ +package app.revanced.patches.music.misc.exclusiveaudio.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object DataSavingSettingsFragmentFingerprint : MethodFingerprint( + returnType = "V", + parameters = listOf("Landroid/os/Bundle;", "Ljava/lang/String;"), + strings = listOf("pref_key_dont_play_nma_video"), + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/DataSavingSettingsFragment;") && methodDef.name == "onCreatePreferences" } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/patch/ExclusiveAudioPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/patch/ExclusiveAudioPatch.kt index d19637002..97c3e363a 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/patch/ExclusiveAudioPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/patch/ExclusiveAudioPatch.kt @@ -10,11 +10,13 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotations.Patch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patches.music.misc.exclusiveaudio.fingerprints.DataSavingSettingsFragmentFingerprint import app.revanced.patches.music.misc.exclusiveaudio.fingerprints.MusicBrowserServiceFingerprint import app.revanced.patches.music.misc.exclusiveaudio.fingerprints.PodCastConfigFingerprint import app.revanced.patches.music.utils.annotations.MusicCompatibility import app.revanced.util.bytecode.getStringIndex import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction @@ -24,6 +26,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction @MusicCompatibility class ExclusiveAudioPatch : BytecodePatch( listOf( + DataSavingSettingsFragmentFingerprint, MusicBrowserServiceFingerprint, PodCastConfigFingerprint ) @@ -77,5 +80,17 @@ class ExclusiveAudioPatch : BytecodePatch( ) } } ?: throw PodCastConfigFingerprint.exception + + DataSavingSettingsFragmentFingerprint.result?.let { + it.mutableMethod.apply { + val insertIndex = getStringIndex("pref_key_dont_play_nma_video") + 4 + val targetRegister = getInstruction(insertIndex).registerD + + addInstruction( + insertIndex, + "const/4 v$targetRegister, 0x1" + ) + } + } ?: throw DataSavingSettingsFragmentFingerprint.exception } }