From dfe243cd64da6723c755dea593fa74bcaa45e7a8 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Wed, 20 Mar 2024 02:17:12 +0900 Subject: [PATCH] fix(YouTube Music/Enable old player background): force close occurs when the app is first installed after including the patch in a specific version --- .../OldPlayerBackgroundPatch.kt | 16 ++++++++++++---- .../oldplayerlayout/OldPlayerLayoutPatch.kt | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/music/player/oldplayerbackground/OldPlayerBackgroundPatch.kt b/src/main/kotlin/app/revanced/patches/music/player/oldplayerbackground/OldPlayerBackgroundPatch.kt index 7e641c54a..5257f2f0d 100644 --- a/src/main/kotlin/app/revanced/patches/music/player/oldplayerbackground/OldPlayerBackgroundPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/player/oldplayerbackground/OldPlayerBackgroundPatch.kt @@ -2,6 +2,7 @@ package app.revanced.patches.music.player.oldplayerbackground import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotation.CompatiblePackage @@ -10,6 +11,10 @@ import app.revanced.patches.music.player.oldplayerbackground.fingerprints.OldPla import app.revanced.patches.music.utils.integrations.Constants.PLAYER import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.SettingsPatch +import app.revanced.util.getTargetIndex +import app.revanced.util.getWideLiteralInstructionIndex +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( name = "Enable old player background", @@ -42,11 +47,14 @@ object OldPlayerBackgroundPatch : BytecodePatch( OldPlayerBackgroundFingerprint.result?.let { it.mutableMethod.apply { + val startIndex = getWideLiteralInstructionIndex(45415319) + val targetIndex = getTargetIndex(startIndex, Opcode.MOVE_RESULT) + val targetRegister = getInstruction(targetIndex).registerA + addInstructions( - 0, """ - invoke-static {}, $PLAYER->enableOldPlayerBackground()Z - move-result v0 - return v0 + targetIndex + 1, """ + invoke-static {v$targetRegister}, $PLAYER->enableOldPlayerBackground(Z)Z + move-result v$targetRegister """ ) } diff --git a/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt b/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt index c837e30ed..420f21ebf 100644 --- a/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt @@ -2,6 +2,7 @@ package app.revanced.patches.music.player.oldplayerlayout import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotation.CompatiblePackage @@ -10,6 +11,10 @@ import app.revanced.patches.music.player.oldplayerlayout.fingerprints.OldPlayerL import app.revanced.patches.music.utils.integrations.Constants.PLAYER import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.SettingsPatch +import app.revanced.util.getTargetIndex +import app.revanced.util.getWideLiteralInstructionIndex +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( name = "Enable old player layout", @@ -42,11 +47,14 @@ object OldPlayerLayoutPatch : BytecodePatch( OldPlayerLayoutFingerprint.result?.let { it.mutableMethod.apply { + val startIndex = getWideLiteralInstructionIndex(45399578) + val targetIndex = getTargetIndex(startIndex, Opcode.MOVE_RESULT) + val targetRegister = getInstruction(targetIndex).registerA + addInstructions( - 0, """ - invoke-static {}, $PLAYER->enableOldPlayerLayout()Z - move-result v0 - return v0 + targetIndex + 1, """ + invoke-static {v$targetRegister}, $PLAYER->enableOldPlayerLayout(Z)Z + move-result v$targetRegister """ ) }