From 3f22704e8347381dee08cfd9071967faa4013106 Mon Sep 17 00:00:00 2001 From: inotia00 Date: Thu, 14 Sep 2023 15:42:04 +0900 Subject: [PATCH] fix(youtube/bypass-ambient-mode-restrictions): update fingerprint --- .../PowerSaveModeAlternativeFingerprint.kt | 23 +++++++++++++++++++ .../ambientmode/patch/PowerSaveModePatch.kt | 15 +++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeAlternativeFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeAlternativeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeAlternativeFingerprint.kt new file mode 100644 index 000000000..1c88dd4e2 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeAlternativeFingerprint.kt @@ -0,0 +1,23 @@ +package app.revanced.patches.youtube.misc.ambientmode.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.util.bytecode.isNarrowLiteralExists +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +object PowerSaveModeAlternativeFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("Ljava/lang/Object;"), + opcodes = listOf( + Opcode.IF_GT, + Opcode.IGET, + Opcode.ADD_INT_2ADDR + ), + customFingerprint = { methodDef, _ -> + methodDef.isNarrowLiteralExists(107243) && methodDef.isNarrowLiteralExists( + 140796 + ) && methodDef.name == "accept" + } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/patch/PowerSaveModePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/patch/PowerSaveModePatch.kt index 9bb8a3820..97eb98044 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/patch/PowerSaveModePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/patch/PowerSaveModePatch.kt @@ -10,6 +10,7 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patches.youtube.misc.ambientmode.fingerprints.PowerSaveModeAlternativeFingerprint import app.revanced.patches.youtube.misc.ambientmode.fingerprints.PowerSaveModeFingerprint import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch @@ -31,11 +32,19 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference ) @YouTubeCompatibility class PowerSaveModePatch : BytecodePatch( - listOf(PowerSaveModeFingerprint) + listOf( + PowerSaveModeAlternativeFingerprint, + PowerSaveModeFingerprint + ) ) { override fun execute(context: BytecodeContext) { - PowerSaveModeFingerprint.result?.let { + val result = + PowerSaveModeFingerprint.result + ?: PowerSaveModeAlternativeFingerprint.result + ?: throw PowerSaveModeFingerprint.exception + + result.let { it.mutableMethod.apply { var insertIndex = -1 @@ -59,7 +68,7 @@ class PowerSaveModePatch : BytecodePatch( if (insertIndex == -1) throw PatchException("Couldn't find PowerManager reference") } - } ?: throw PowerSaveModeFingerprint.exception + } /** * Add settings