From e2a4d02acfe4de1750df1f20078f237076de3dcb Mon Sep 17 00:00:00 2001 From: inotia00 Date: Mon, 6 Mar 2023 12:15:04 +0900 Subject: [PATCH] refactor(default-video-quality): improve the patch method --- .../fingerprints/VideoQualitySettingsParentFingerprint.kt | 4 ++-- .../video/quality/bytecode/patch/VideoQualityBytecodePatch.kt | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/fingerprints/VideoQualitySettingsParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/fingerprints/VideoQualitySettingsParentFingerprint.kt index e4e52d7ff..9dff6f217 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/fingerprints/VideoQualitySettingsParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/fingerprints/VideoQualitySettingsParentFingerprint.kt @@ -10,8 +10,8 @@ object VideoQualitySettingsParentFingerprint : MethodFingerprint( access = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("[L", "I", "Z"), opcodes = listOf( - Opcode.IF_EQZ, - Opcode.IF_EQ, + Opcode.IF_NE, + Opcode.IGET, Opcode.IF_EQ ), strings = listOf("menu_item_video_quality") diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/patch/VideoQualityBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/patch/VideoQualityBytecodePatch.kt index fc3947223..0a5e3cdf8 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/patch/VideoQualityBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/quality/bytecode/patch/VideoQualityBytecodePatch.kt @@ -6,6 +6,7 @@ import app.revanced.patcher.annotation.Version import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstructions +import app.revanced.patcher.extensions.removeInstruction import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult @@ -51,6 +52,7 @@ class VideoQualityBytecodePatch : BytecodePatch( relayFieldReference = (it.implementation!!.instructions.elementAt(0) as ReferenceInstruction).reference as FieldReference } ?: return VideoQualitySettingsFingerprint.toErrorResult() + parentResult.mutableMethod.removeInstruction(parentResult.scanResult.patternScanResult!!.endIndex) parentResult.mutableMethod.addInstructions( 0, """ iget-object v0, p0, ${parentResult.classDef.type}->${relayFieldReference.name}:${relayFieldReference.type} @@ -61,7 +63,7 @@ class VideoQualityBytecodePatch : BytecodePatch( """ ) - LegacyVideoIdPatch.qualityOffSet = 5 + LegacyVideoIdPatch.qualityOffSet = 4 } ?: return VideoQualitySettingsParentFingerprint.toErrorResult() LegacyVideoIdPatch.injectCall("$INTEGRATIONS_VIDEO_QUALITY_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;)V")