diff --git a/README-template.md b/README-template.md index 6d5419afc..9878a709e 100644 --- a/README-template.md +++ b/README-template.md @@ -27,7 +27,6 @@ Example: { "name": "com.google.android.youtube", "versions": [ - "18.19.36", "18.20.39", "18.21.35", "18.22.37", diff --git a/build.gradle.kts b/build.gradle.kts index ffa2b6f16..e41557d2d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,6 +17,12 @@ repositories { password = githubPassword } } + maven { + url = uri("https://repo.sleeping.town") + content { + includeGroup("com.unascribed") + } + } } dependencies { @@ -24,6 +30,8 @@ dependencies { implementation("app.revanced:multidexlib2:2.5.3-a3836654") // Required for meta implementation("com.google.code.gson:gson:2.10.1") + // Required for FlexVer-Java + implementation("com.unascribed:flexver-java:1.1.0") } tasks { diff --git a/src/main/kotlin/app/revanced/patches/music/layout/blacknavigationbar/fingerprints/TabLayoutFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/layout/blacknavigationbar/fingerprints/TabLayoutFingerprint.kt index c7c0e456c..2f12a797f 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/blacknavigationbar/fingerprints/TabLayoutFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/blacknavigationbar/fingerprints/TabLayoutFingerprint.kt @@ -10,7 +10,7 @@ import org.jf.dexlib2.Opcode object TabLayoutFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.CONST, Opcode.INVOKE_STATIC, diff --git a/src/main/kotlin/app/revanced/patches/music/layout/newlayout/fingerprints/NewLayoutFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/layout/newlayout/fingerprints/NewLayoutFingerprint.kt index 9ab3ff9f7..3ace2555c 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/newlayout/fingerprints/NewLayoutFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/newlayout/fingerprints/NewLayoutFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.util.bytecode.isWide32LiteralExists object NewLayoutFingerprint : MethodFingerprint( returnType = "Z", - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45399578) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/NextButtonVisibilityFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/NextButtonVisibilityFingerprint.kt index e4508bfdb..6abb606b8 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/NextButtonVisibilityFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/NextButtonVisibilityFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object NextButtonVisibilityFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.INVOKE_VIRTUAL, Opcode.MOVE_RESULT, diff --git a/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/SwipeToCloseFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/SwipeToCloseFingerprint.kt index f11bcfc45..5ac3585c2 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/SwipeToCloseFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/oldstyleminiplayer/fingerprints/SwipeToCloseFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.util.bytecode.isWide32LiteralExists object SwipeToCloseFingerprint : MethodFingerprint( returnType = "Z", - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45398432) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/layout/sleeptimer/fingerprints/SleepTimerFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/layout/sleeptimer/fingerprints/SleepTimerFingerprint.kt index 3b41f0b80..f6a278a78 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/sleeptimer/fingerprints/SleepTimerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/sleeptimer/fingerprints/SleepTimerFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.util.bytecode.isWide32LiteralExists object SleepTimerFingerprint : MethodFingerprint( returnType = "Z", - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45372767) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/misc/backgroundplay/fingerprints/BackgroundPlaybackParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/backgroundplay/fingerprints/BackgroundPlaybackParentFingerprint.kt index 0a2af5696..68206720e 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/backgroundplay/fingerprints/BackgroundPlaybackParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/backgroundplay/fingerprints/BackgroundPlaybackParentFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object BackgroundPlaybackParentFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.INVOKE_STATIC, Opcode.MOVE_RESULT, diff --git a/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/AudioOnlyEnablerFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/AudioOnlyEnablerFingerprint.kt index 98c2a5afa..588fbc18a 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/AudioOnlyEnablerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/exclusiveaudio/fingerprints/AudioOnlyEnablerFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object AudioOnlyEnablerFingerprint : MethodFingerprint( returnType = "Z", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.IGET_OBJECT, Opcode.INVOKE_INTERFACE, diff --git a/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt index 38180478e..c79df534a 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object HideGetPremiumFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.IGET_BOOLEAN, Opcode.CONST_4, diff --git a/src/main/kotlin/app/revanced/patches/music/misc/sharebuttonhook/fingerprints/FullStackTraceActivityFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/sharebuttonhook/fingerprints/FullStackTraceActivityFingerprint.kt index f36c14f1d..f4a4efb7a 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/sharebuttonhook/fingerprints/FullStackTraceActivityFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/sharebuttonhook/fingerprints/FullStackTraceActivityFingerprint.kt @@ -3,5 +3,5 @@ package app.revanced.patches.music.misc.sharebuttonhook.fingerprints import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object FullStackTraceActivityFingerprint : MethodFingerprint( - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("FullStackTraceActivity;") && methodDef.name == "onCreate" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/FullStackTraceActivity;") && methodDef.name == "onCreate" } ) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/MusicPlaybackControlsFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/MusicPlaybackControlsFingerprint.kt index 7d1655601..6d818a113 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/MusicPlaybackControlsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/MusicPlaybackControlsFingerprint.kt @@ -14,5 +14,5 @@ object MusicPlaybackControlsFingerprint : MethodFingerprint( Opcode.INVOKE_VIRTUAL, Opcode.RETURN_VOID ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("MusicPlaybackControls;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/MusicPlaybackControls;") } ) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/ShuffleClassReferenceFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/ShuffleClassReferenceFingerprint.kt index 35a329ea1..242638f38 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/ShuffleClassReferenceFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/shuffle/fingerprints/ShuffleClassReferenceFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object ShuffleClassReferenceFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.IGET_OBJECT, Opcode.INVOKE_INTERFACE, diff --git a/src/main/kotlin/app/revanced/patches/music/utils/videoid/fingerprint/VideoIdParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/utils/videoid/fingerprint/VideoIdParentFingerprint.kt index 5709259c0..d25906bf6 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/videoid/fingerprint/VideoIdParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/videoid/fingerprint/VideoIdParentFingerprint.kt @@ -7,7 +7,7 @@ import org.jf.dexlib2.Opcode object VideoIdParentFingerprint : MethodFingerprint( returnType = "V", - parameters = listOf(), + parameters = emptyList(), accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, opcodes = listOf( Opcode.INVOKE_SUPER, @@ -16,5 +16,5 @@ object VideoIdParentFingerprint : MethodFingerprint( Opcode.IPUT_OBJECT, Opcode.IGET_OBJECT ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("WatchFragment;") && methodDef.name == "onDestroyView" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/WatchFragment;") && methodDef.name == "onDestroyView" } ) diff --git a/src/main/kotlin/app/revanced/patches/reddit/layout/navigation/patch/NavigationButtonsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/layout/navigation/patch/NavigationButtonsPatch.kt index e29878e79..b0f65a24d 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/layout/navigation/patch/NavigationButtonsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/layout/navigation/patch/NavigationButtonsPatch.kt @@ -34,13 +34,15 @@ class NavigationButtonsPatch : BytecodePatch( BottomNavScreenFingerprint.result?.let { it.mutableMethod.apply { val startIndex = it.scanResult.patternScanResult!!.startIndex - val reference = getInstruction(startIndex).reference.toString() + val reference = + getInstruction(startIndex).reference.toString() if (!reference.endsWith("Ljava/util/List;")) return PatchResultError("Invalid reference: $reference") val insertIndex = startIndex + 2 - val insertRegister = getInstruction(startIndex + 1).registerA + val insertRegister = + getInstruction(startIndex + 1).registerA addInstructions( insertIndex, """ diff --git a/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/fingerprints/PremiumIconFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/fingerprints/PremiumIconFingerprint.kt index c07818eea..8fa7575a8 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/fingerprints/PremiumIconFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/fingerprints/PremiumIconFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object PremiumIconFingerprint : MethodFingerprint( returnType = "Z", customFingerprint = { methodDef, classDef -> - methodDef.definingClass.endsWith("MyAccount;") && methodDef.name == "isPremiumSubscriber" && classDef.sourceFile == "MyAccount.kt" + methodDef.definingClass.endsWith("/MyAccount;") && methodDef.name == "isPremiumSubscriber" && classDef.sourceFile == "MyAccount.kt" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt index be6d34690..4caf4d4e4 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt @@ -5,5 +5,9 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object ShareLinkFormatterFingerprint : MethodFingerprint( returnType = "Ljava/lang/String;", parameters = listOf("Ljava/lang/String;", "Ljava/util/Map;"), - strings = listOf("uri.getQueryParameters(name)", "uri.queryParameterNames", "newUriBuilder.build().toString()"), + strings = listOf( + "uri.getQueryParameters(name)", + "uri.queryParameterNames", + "newUriBuilder.build().toString()" + ), ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/ads/LegacyAdsFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/ads/LegacyAdsFingerprint.kt index 7c491ab94..500f13f03 100644 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/ads/LegacyAdsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/ads/LegacyAdsFingerprint.kt @@ -9,7 +9,7 @@ import org.jf.dexlib2.iface.instruction.NarrowLiteralInstruction object LegacyAdsFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.CONST_WIDE_16, Opcode.IPUT_WIDE, diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/captions/SubtitleTrackFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/captions/SubtitleTrackFingerprint.kt index 4d9b3ae19..0d65112a0 100644 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/captions/SubtitleTrackFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/captions/SubtitleTrackFingerprint.kt @@ -7,5 +7,8 @@ import org.jf.dexlib2.AccessFlags object SubtitleTrackFingerprint : MethodFingerprint( returnType = "Z", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - strings = listOf("DISABLE_CAPTIONS_OPTION") + strings = listOf("DISABLE_CAPTIONS_OPTION"), + customFingerprint = { methodDef, _ -> + methodDef.definingClass.endsWith("/SubtitleTrack;") + } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/versionspoof/ClientInfoFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/versionspoof/ClientInfoFingerprint.kt index 402287e7e..2151401b4 100644 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/versionspoof/ClientInfoFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/versionspoof/ClientInfoFingerprint.kt @@ -8,6 +8,6 @@ import org.jf.dexlib2.Opcode object ClientInfoFingerprint : MethodFingerprint( returnType = "L", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf(Opcode.OR_INT_LIT16) ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/ads/getpremium/fingerprints/CompactYpcOfferModuleViewFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/ads/getpremium/fingerprints/CompactYpcOfferModuleViewFingerprint.kt index 57e365b96..44f1b1e9a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/ads/getpremium/fingerprints/CompactYpcOfferModuleViewFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/ads/getpremium/fingerprints/CompactYpcOfferModuleViewFingerprint.kt @@ -15,5 +15,5 @@ object CompactYpcOfferModuleViewFingerprint : MethodFingerprint( Opcode.INVOKE_VIRTUAL, Opcode.RETURN_VOID ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("CompactYpcOfferModuleView;") && methodDef.name == "onMeasure" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/CompactYpcOfferModuleView;") && methodDef.name == "onMeasure" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/FlyoutPanelPatchFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/FlyoutPanelPatchFingerprint.kt index 60dbf1ca5..9d1432fe9 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/FlyoutPanelPatchFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/FlyoutPanelPatchFingerprint.kt @@ -7,6 +7,6 @@ import org.jf.dexlib2.AccessFlags object FlyoutPanelPatchFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PRIVATE or AccessFlags.STATIC, - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/FlyoutPanelPatch;") && methodDef.name == "openOldPlaybackRateBottomSheetFragment" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/PlaybackRateBottomSheetBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/PlaybackRateBottomSheetBuilderFingerprint.kt index ac0645742..95d5340fe 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/PlaybackRateBottomSheetBuilderFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/fingerprints/PlaybackRateBottomSheetBuilderFingerprint.kt @@ -7,6 +7,6 @@ import org.jf.dexlib2.AccessFlags object PlaybackRateBottomSheetBuilderFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), strings = listOf("PLAYBACK_RATE_MENU_BOTTOM_SHEET_FRAGMENT") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/patch/OldSpeedLayoutPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/patch/OldSpeedLayoutPatch.kt index e3a009a76..c1384341f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/patch/OldSpeedLayoutPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/oldspeedlayout/patch/OldSpeedLayoutPatch.kt @@ -112,6 +112,7 @@ class OldSpeedLayoutPatch : BytecodePatch( return PatchResultSuccess() } + private companion object { lateinit var PLAYBACK_RATE_BOTTOM_SHEET_CLASS: String lateinit var PLAYBACK_RATE_BOTTOM_SHEET_BUILDER_METHOD: String diff --git a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenEngagementPanelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenEngagementPanelFingerprint.kt index 34783bf4a..252f589cf 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenEngagementPanelFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenEngagementPanelFingerprint.kt @@ -8,8 +8,7 @@ object FullscreenEngagementPanelFingerprint : MethodFingerprint( returnType = "L", parameters = listOf("L"), customFingerprint = { methodDef, _ -> - methodDef.isWideLiteralExists( - FullScreenEngagementPanel - ) + methodDef.definingClass.endsWith("/FullscreenEngagementPanelOverlay;") && + methodDef.isWideLiteralExists(FullScreenEngagementPanel) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenViewAdderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenViewAdderFingerprint.kt index 1d12d34c2..1ed252214 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenViewAdderFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/fullscreenpanels/fingerprints/FullscreenViewAdderFingerprint.kt @@ -12,5 +12,5 @@ object FullscreenViewAdderFingerprint : MethodFingerprint( Opcode.CONST_4, Opcode.INVOKE_VIRTUAL ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("FullscreenEngagementPanelOverlay;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/FullscreenEngagementPanelOverlay;") } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/FilterBarHeightFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/FilterBarHeightFingerprint.kt index 7f66d3f2b..944645c66 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/FilterBarHeightFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/FilterBarHeightFingerprint.kt @@ -1,11 +1,15 @@ package app.revanced.patches.youtube.general.categorybar.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.FilterBarHeight import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object FilterBarHeightFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, opcodes = listOf( Opcode.CONST, Opcode.INVOKE_VIRTUAL, diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/RelatedChipCloudFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/RelatedChipCloudFingerprint.kt index 0db15d36b..c5706c0ef 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/RelatedChipCloudFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/RelatedChipCloudFingerprint.kt @@ -1,11 +1,15 @@ package app.revanced.patches.youtube.general.categorybar.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.RelatedChipCloudMargin import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object RelatedChipCloudFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, opcodes = listOf( Opcode.CONST, Opcode.INVOKE_VIRTUAL, diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/SearchResultsChipBarFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/SearchResultsChipBarFingerprint.kt index b7aaab88f..e50a372ea 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/SearchResultsChipBarFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/categorybar/fingerprints/SearchResultsChipBarFingerprint.kt @@ -1,11 +1,15 @@ package app.revanced.patches.youtube.general.categorybar.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.BarContainerHeight import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object SearchResultsChipBarFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, opcodes = listOf( Opcode.CONST, Opcode.INVOKE_VIRTUAL, diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/crowdfundingbox/fingerprints/CrowdfundingBoxFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/crowdfundingbox/fingerprints/CrowdfundingBoxFingerprint.kt index dc2edd8a1..49b2b242a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/crowdfundingbox/fingerprints/CrowdfundingBoxFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/crowdfundingbox/fingerprints/CrowdfundingBoxFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.general.crowdfundingbox.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.DonationCompanion import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object CrowdfundingBoxFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, opcodes = listOf( Opcode.INVOKE_VIRTUAL, Opcode.MOVE_RESULT_OBJECT, diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/floatingmicrophone/fingerprints/FloatingMicrophoneFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/floatingmicrophone/fingerprints/FloatingMicrophoneFingerprint.kt index 8688cc520..ae6a417ec 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/floatingmicrophone/fingerprints/FloatingMicrophoneFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/floatingmicrophone/fingerprints/FloatingMicrophoneFingerprint.kt @@ -1,11 +1,16 @@ package app.revanced.patches.youtube.general.floatingmicrophone.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.Fab import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object FloatingMicrophoneFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = emptyList(), opcodes = listOf( Opcode.IGET_BOOLEAN, Opcode.IF_EQZ, diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/personalinformation/fingerprints/AccountSwitcherAccessibilityLabelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/personalinformation/fingerprints/AccountSwitcherAccessibilityLabelFingerprint.kt index fe790d136..fc5af5e7a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/personalinformation/fingerprints/AccountSwitcherAccessibilityLabelFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/personalinformation/fingerprints/AccountSwitcherAccessibilityLabelFingerprint.kt @@ -6,6 +6,8 @@ import app.revanced.util.bytecode.isWideLiteralExists import org.jf.dexlib2.Opcode object AccountSwitcherAccessibilityLabelFingerprint : MethodFingerprint( + returnType = "V", + parameters = listOf("L", "Ljava/lang/Object;"), opcodes = listOf( Opcode.INVOKE_VIRTUAL, Opcode.IGET_OBJECT, diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/snackbar/fingerprints/HideSnackBarFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/snackbar/fingerprints/HideSnackBarFingerprint.kt index 4ccbdcd74..910d09154 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/snackbar/fingerprints/HideSnackBarFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/snackbar/fingerprints/HideSnackBarFingerprint.kt @@ -8,5 +8,5 @@ object HideSnackBarFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("L", "L"), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("BottomUiContainer;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/BottomUiContainer;") } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/suggestions/fingerprints/BreakingNewsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/suggestions/fingerprints/BreakingNewsFingerprint.kt index b2e3d95dc..9d0ceb625 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/suggestions/fingerprints/BreakingNewsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/suggestions/fingerprints/BreakingNewsFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.general.suggestions.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.HorizontalCardList import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object BreakingNewsFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, opcodes = listOf( Opcode.CONST, Opcode.CONST_4, diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/Vp9PropsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/Vp9PropsFingerprint.kt index eb84a5e0d..7709987c2 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/Vp9PropsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/Vp9PropsFingerprint.kt @@ -8,6 +8,6 @@ import org.jf.dexlib2.Opcode object Vp9PropsFingerprint : MethodFingerprint( returnType = "L", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf(Opcode.OR_INT_LIT16) ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/language/fingerprints/GeneralPrefsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/language/fingerprints/GeneralPrefsFingerprint.kt index 4d6997758..c622b743f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/language/fingerprints/GeneralPrefsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/language/fingerprints/GeneralPrefsFingerprint.kt @@ -5,7 +5,7 @@ import org.jf.dexlib2.Opcode object GeneralPrefsFingerprint : MethodFingerprint( returnType = "V", - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.INVOKE_VIRTUAL, Opcode.MOVE_RESULT, @@ -14,5 +14,5 @@ object GeneralPrefsFingerprint : MethodFingerprint( Opcode.MOVE_RESULT_OBJECT ), strings = listOf("bedtime_reminder_toggle"), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("GeneralPrefsFragment;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/GeneralPrefsFragment;") } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorFingerprint.kt index 5016f54e6..b1412981e 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorFingerprint.kt @@ -5,7 +5,7 @@ import org.jf.dexlib2.Opcode object ClientFormFactorFingerprint : MethodFingerprint( returnType = "L", - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.IF_EQZ, Opcode.SGET_OBJECT, diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorWalkerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorWalkerFingerprint.kt index 14c9ec2a6..d98b318e3 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorWalkerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/layoutswitch/fingerprints/ClientFormFactorWalkerFingerprint.kt @@ -5,7 +5,7 @@ import org.jf.dexlib2.Opcode object ClientFormFactorWalkerFingerprint : MethodFingerprint( returnType = "L", - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.INVOKE_STATIC, Opcode.MOVE_RESULT_OBJECT, diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/minimizedplayback/fingerprints/KidsMinimizedPlaybackPolicyControllerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/minimizedplayback/fingerprints/KidsMinimizedPlaybackPolicyControllerFingerprint.kt index 0fc715a0d..8d64e7541 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/minimizedplayback/fingerprints/KidsMinimizedPlaybackPolicyControllerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/minimizedplayback/fingerprints/KidsMinimizedPlaybackPolicyControllerFingerprint.kt @@ -4,7 +4,6 @@ import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode -import org.jf.dexlib2.iface.instruction.NarrowLiteralInstruction object KidsMinimizedPlaybackPolicyControllerFingerprint : MethodFingerprint( returnType = "V", @@ -40,7 +39,6 @@ object KidsMinimizedPlaybackPolicyControllerFingerprint : MethodFingerprint( Opcode.RETURN_VOID ), customFingerprint = { methodDef, _ -> - methodDef.implementation!!.instructions.any { - ((it as? NarrowLiteralInstruction)?.narrowLiteral == 5) - } - }) + methodDef.definingClass.endsWith("/MinimizedPlaybackPolicyController;") + } +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt index 096e58af0..b70196d2b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt @@ -7,5 +7,5 @@ object CronetEngineBuilderFingerprint : MethodFingerprint( returnType = "L", accessFlags = AccessFlags.PUBLIC.value, parameters = listOf("Z"), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("CronetEngine\$Builder;") && methodDef.name == "enableQuic" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/CronetEngine\$Builder;") && methodDef.name == "enableQuic" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt index 5976b92c4..4ad2d4c98 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt @@ -7,5 +7,5 @@ object ExperimentalCronetEngineBuilderFingerprint : MethodFingerprint( returnType = "L", accessFlags = AccessFlags.PUBLIC.value, parameters = listOf("Z"), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("ExperimentalCronetEngine\$Builder;") && methodDef.name == "enableQuic" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/ExperimentalCronetEngine\$Builder;") && methodDef.name == "enableQuic" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarChangedFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarChangedFingerprint.kt index fbb7495cb..4a7575e00 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarChangedFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarChangedFingerprint.kt @@ -9,5 +9,5 @@ object PivotBarChangedFingerprint : MethodFingerprint( Opcode.INVOKE_STATIC, Opcode.MOVE_RESULT ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("PivotBar;") && methodDef.name == "onConfigurationChanged" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/PivotBar;") && methodDef.name == "onConfigurationChanged" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarStyleFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarStyleFingerprint.kt index 2f44775ea..6eb7a8b97 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarStyleFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/navigation/tabletnavbar/fingerprints/PivotBarStyleFingerprint.kt @@ -11,5 +11,5 @@ object PivotBarStyleFingerprint : MethodFingerprint( Opcode.MOVE_RESULT, Opcode.XOR_INT_2ADDR ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("PivotBar;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/PivotBar;") } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/alwaysrepeat/fingerprints/VideoEndFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/alwaysrepeat/fingerprints/VideoEndFingerprint.kt index cc120cde9..18501ce2a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/alwaysrepeat/fingerprints/VideoEndFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/alwaysrepeat/fingerprints/VideoEndFingerprint.kt @@ -7,6 +7,6 @@ import org.jf.dexlib2.AccessFlags object VideoEndFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.implementation!!.instructions.count() == 3 && methodDef.annotations.isEmpty() } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/castbutton/fingerprints/CastButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/castbutton/fingerprints/CastButtonFingerprint.kt index 272eeb0dd..9076e4471 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/castbutton/fingerprints/CastButtonFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/castbutton/fingerprints/CastButtonFingerprint.kt @@ -3,5 +3,5 @@ package app.revanced.patches.youtube.player.castbutton.fingerprints import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object CastButtonFingerprint : MethodFingerprint( - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("MediaRouteButton;") && methodDef.name == "setVisibility" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/MediaRouteButton;") && methodDef.name == "setVisibility" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutCircleFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutCircleFingerprint.kt index 1490a378e..7476781f0 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutCircleFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutCircleFingerprint.kt @@ -6,6 +6,7 @@ import app.revanced.util.bytecode.isWideLiteralExists import org.jf.dexlib2.Opcode object LayoutCircleFingerprint : MethodFingerprint( + returnType = "Landroid/view/View;", opcodes = listOf( Opcode.CONST, Opcode.CONST_4, diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutIconFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutIconFingerprint.kt index 3c94e54a7..3778309eb 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutIconFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutIconFingerprint.kt @@ -6,6 +6,7 @@ import app.revanced.util.bytecode.isWideLiteralExists import org.jf.dexlib2.Opcode object LayoutIconFingerprint : MethodFingerprint( + returnType = "Landroid/view/View;", opcodes = listOf( Opcode.CONST_4, Opcode.CONST, diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutVideoFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutVideoFingerprint.kt index 8ceb8dc9a..49f8d832a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutVideoFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/endscreencards/fingerprints/LayoutVideoFingerprint.kt @@ -6,6 +6,7 @@ import app.revanced.util.bytecode.isWideLiteralExists import org.jf.dexlib2.Opcode object LayoutVideoFingerprint : MethodFingerprint( + returnType = "Landroid/view/View;", opcodes = listOf( Opcode.CONST, Opcode.CONST_4, diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/FilmStripOverlayConfigFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/FilmStripOverlayConfigFingerprint.kt index ce8a82182..cfe5aea84 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/FilmStripOverlayConfigFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/FilmStripOverlayConfigFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.util.bytecode.isWide32LiteralExists object FilmStripOverlayConfigFingerprint : MethodFingerprint( returnType = "Z", - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45381958) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/YouTubeControlsOverlayWithFixFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/YouTubeControlsOverlayWithFixFingerprint.kt deleted file mode 100644 index 3c2955991..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/fingerprints/YouTubeControlsOverlayWithFixFingerprint.kt +++ /dev/null @@ -1,32 +0,0 @@ -package app.revanced.patches.youtube.player.filmstripoverlay.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.YoutubeControlsOverlay -import app.revanced.util.bytecode.isWideLiteralExists -import org.jf.dexlib2.AccessFlags -import org.jf.dexlib2.Opcode - -object YouTubeControlsOverlayWithFixFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, - parameters = emptyList(), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.IGET_OBJECT, - Opcode.IGET_OBJECT, - Opcode.IGET_OBJECT, - Opcode.CONST_16, - Opcode.IF_NEZ, - Opcode.IF_NEZ, - Opcode.GOTO, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT, - Opcode.IF_EQ - ), - customFingerprint = { methodDef, _ -> - methodDef.isWideLiteralExists( - YoutubeControlsOverlay - ) - } -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/patch/HideFilmstripOverlayPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/patch/HideFilmstripOverlayPatch.kt index cc69c0d17..b59604154 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/patch/HideFilmstripOverlayPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/filmstripoverlay/patch/HideFilmstripOverlayPatch.kt @@ -10,6 +10,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch @@ -19,12 +20,13 @@ import app.revanced.patches.youtube.player.filmstripoverlay.fingerprints.FilmStr import app.revanced.patches.youtube.player.filmstripoverlay.fingerprints.FilmStripOverlayInteractionFingerprint import app.revanced.patches.youtube.player.filmstripoverlay.fingerprints.FilmStripOverlayParentFingerprint import app.revanced.patches.youtube.player.filmstripoverlay.fingerprints.FilmStripOverlayPreviewFingerprint -import app.revanced.patches.youtube.player.filmstripoverlay.fingerprints.YouTubeControlsOverlayWithFixFingerprint import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility +import app.revanced.patches.youtube.utils.fingerprints.YouTubeControlsOverlayFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch import app.revanced.util.integrations.Constants.PLAYER import org.jf.dexlib2.Opcode +import org.jf.dexlib2.iface.instruction.FiveRegisterInstruction import org.jf.dexlib2.iface.instruction.OneRegisterInstruction import org.jf.dexlib2.iface.instruction.TwoRegisterInstruction import org.jf.dexlib2.iface.instruction.WideLiteralInstruction @@ -45,7 +47,7 @@ import org.jf.dexlib2.iface.reference.MethodReference class HideFilmstripOverlayPatch : BytecodePatch( listOf( FilmStripOverlayParentFingerprint, - YouTubeControlsOverlayWithFixFingerprint + YouTubeControlsOverlayFingerprint ) ) { override fun execute(context: BytecodeContext): PatchResult { @@ -66,16 +68,33 @@ class HideFilmstripOverlayPatch : BytecodePatch( } } ?: return FilmStripOverlayParentFingerprint.toErrorResult() - YouTubeControlsOverlayWithFixFingerprint.result?.let { + YouTubeControlsOverlayFingerprint.result?.let { it.mutableMethod.apply { val insertIndex = getIndex("bringChildToFront") + 1 val insertRegister = getInstruction(insertIndex).registerA - val jumpIndex = getIndex("setOnClickListener") + 3 + val setOnClickListenerIndex = getIndex("setOnClickListener") + val jumpIndex = setOnClickListenerIndex + 3 - val fixIndex = it.scanResult.patternScanResult!!.startIndex + 4 - val fixRegister = getInstruction(fixIndex).registerA - val fixValue = getInstruction(fixIndex).wideLiteral.toInt() + val initialIndex = setOnClickListenerIndex - 1 + val fixRegister = getInstruction(initialIndex).registerE + var fixValue = 12 + var isFound = false + + for (index in initialIndex downTo insertIndex) { + if (getInstruction(index).opcode != Opcode.CONST_16) continue + + val register = getInstruction(index).registerA + + if (register != fixRegister) continue + + fixValue = getInstruction(index).wideLiteral.toInt() + isFound = true + break + } + + if (!isFound) + return PatchResultError("Couldn't find value to prevent player crash") addInstructionsWithLabels( insertIndex, """ @@ -86,7 +105,7 @@ class HideFilmstripOverlayPatch : BytecodePatch( """, ExternalLabel("hidden", getInstruction(jumpIndex)) ) } - } ?: return YouTubeControlsOverlayWithFixFingerprint.toErrorResult() + } ?: return YouTubeControlsOverlayFingerprint.toErrorResult() /** * Add settings diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoFingerprint.kt index 3dd9b99df..c6c1202a4 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoFingerprint.kt @@ -6,8 +6,9 @@ import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object InfoCardsIncognitoFingerprint : MethodFingerprint( - returnType = "L", + returnType = "Ljava/lang/Boolean;", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("L", "J"), opcodes = listOf(Opcode.IGET_BOOLEAN), strings = listOf("vibrator") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoParentFingerprint.kt deleted file mode 100644 index d8dd09516..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/player/infocards/fingerprints/InfoCardsIncognitoParentFingerprint.kt +++ /dev/null @@ -1,11 +0,0 @@ -package app.revanced.patches.youtube.player.infocards.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import org.jf.dexlib2.AccessFlags - -object InfoCardsIncognitoParentFingerprint : MethodFingerprint( - returnType = "L", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - strings = listOf("player_overlay_info_card_teaser"), -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/infocards/patch/HideInfoCardsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/infocards/patch/HideInfoCardsPatch.kt index f8f0b3f07..6e8982e65 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/infocards/patch/HideInfoCardsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/infocards/patch/HideInfoCardsPatch.kt @@ -7,14 +7,12 @@ import app.revanced.patcher.annotation.Version import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch import app.revanced.patches.youtube.player.infocards.fingerprints.InfoCardsIncognitoFingerprint -import app.revanced.patches.youtube.player.infocards.fingerprints.InfoCardsIncognitoParentFingerprint import app.revanced.patches.youtube.utils.annotations.YouTubeCompatibility import app.revanced.patches.youtube.utils.settings.resource.patch.SettingsPatch import app.revanced.util.integrations.Constants.PLAYER @@ -27,25 +25,23 @@ import org.jf.dexlib2.iface.instruction.TwoRegisterInstruction @YouTubeCompatibility @Version("0.0.1") class HideInfoCardsPatch : BytecodePatch( - listOf(InfoCardsIncognitoParentFingerprint) + listOf(InfoCardsIncognitoFingerprint) ) { override fun execute(context: BytecodeContext): PatchResult { - InfoCardsIncognitoParentFingerprint.result?.classDef?.let { classDef -> - InfoCardsIncognitoFingerprint.also { it.resolve(context, classDef) }.result?.let { - it.mutableMethod.apply { - val targetIndex = it.scanResult.patternScanResult!!.startIndex - val targetRegister = - getInstruction(targetIndex).registerA + InfoCardsIncognitoFingerprint.result?.let { + it.mutableMethod.apply { + val targetIndex = it.scanResult.patternScanResult!!.startIndex + val targetRegister = + getInstruction(targetIndex).registerA - addInstructions( - targetIndex + 1, """ - invoke-static {v$targetRegister}, $PLAYER->hideInfoCard(Z)Z - move-result v$targetRegister - """ - ) - } - } ?: return InfoCardsIncognitoFingerprint.toErrorResult() - } ?: return InfoCardsIncognitoParentFingerprint.toErrorResult() + addInstructions( + targetIndex + 1, """ + invoke-static {v$targetRegister}, $PLAYER->hideInfoCard(Z)Z + move-result v$targetRegister + """ + ) + } + } ?: return InfoCardsIncognitoFingerprint.toErrorResult() /** * Add settings diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt index 244ba16b7..3e307c5dc 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt @@ -11,7 +11,6 @@ object MusicAppDeeplinkButtonFingerprint : MethodFingerprint( accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("Z", "Z"), customFingerprint = { methodDef, _ -> - methodDef.isWideLiteralExists( - MusicAppDeeplinkButtonView - ) + methodDef.definingClass.endsWith("MusicAppDeeplinkButtonController;") && + methodDef.isWideLiteralExists(MusicAppDeeplinkButtonView) }) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/fingerprints/SpeedOverlayConfigFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/fingerprints/SpeedOverlayConfigFingerprint.kt index be737b16a..09d0402bd 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/fingerprints/SpeedOverlayConfigFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/fingerprints/SpeedOverlayConfigFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.util.bytecode.isWide32LiteralExists object SpeedOverlayConfigFingerprint : MethodFingerprint( returnType = "Z", - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45411330) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/seekbar/thumbnailpreview/fingerprints/ThumbnailPreviewConfigFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/seekbar/thumbnailpreview/fingerprints/ThumbnailPreviewConfigFingerprint.kt index e8a086de3..9f9aec01c 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/seekbar/thumbnailpreview/fingerprints/ThumbnailPreviewConfigFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/seekbar/thumbnailpreview/fingerprints/ThumbnailPreviewConfigFingerprint.kt @@ -5,6 +5,6 @@ import app.revanced.util.bytecode.isWide32LiteralExists object ThumbnailPreviewConfigFingerprint : MethodFingerprint( returnType = "Z", - parameters = listOf(), + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45398577) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/seekbar/timestamps/fingerprints/TimeCounterFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/seekbar/timestamps/fingerprints/TimeCounterFingerprint.kt index 01043bc43..ca2572ad6 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/seekbar/timestamps/fingerprints/TimeCounterFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/seekbar/timestamps/fingerprints/TimeCounterFingerprint.kt @@ -6,20 +6,39 @@ import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object TimeCounterFingerprint : MethodFingerprint( - returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = emptyList(), + parameters = listOf(), + returnType = "V", opcodes = listOf( + Opcode.RETURN_VOID, + Opcode.IGET_BOOLEAN, + Opcode.IF_EQZ, Opcode.IGET_OBJECT, Opcode.IGET_WIDE, - Opcode.CONST_WIDE_16, - Opcode.CMP_LONG, - Opcode.IF_LEZ, + Opcode.IGET_WIDE, + Opcode.SUB_LONG_2ADDR, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, Opcode.IGET_OBJECT, - Opcode.IF_EQZ, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ, - Opcode.GOTO - ) + Opcode.IGET_WIDE, + Opcode.IGET_WIDE, + Opcode.SUB_LONG_2ADDR, + Opcode.IGET_WIDE, + Opcode.SUB_LONG_2ADDR, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.IGET_OBJECT, + Opcode.IGET_WIDE, + Opcode.IGET_WIDE, + Opcode.SUB_LONG_2ADDR, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.INVOKE_INTERFACE, + Opcode.RETURN_VOID + ), + customFingerprint = { _, classDef -> + // On older devices this fingerprint resolves very slowly. + // Speed this up by checking for the number of methods. + classDef.methods.count() == 14 + } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsCommentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsCommentFingerprint.kt index fcc8a3683..0b65b4bd1 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsCommentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsCommentFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.RightComment import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsCommentFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, parameters = listOf("Z", "Z", "L"), customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(RightComment) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsDislikeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsDislikeFingerprint.kt index c0ffe3b7d..943fef103 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsDislikeFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsDislikeFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelRightDislikeIcon import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsDislikeFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, parameters = listOf("Z", "Z", "L"), customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelRightDislikeIcon) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsInfoPanelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsInfoPanelFingerprint.kt index ccd91a7d2..3215f7efa 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsInfoPanelFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsInfoPanelFingerprint.kt @@ -1,10 +1,13 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelPlayerInfoPanel import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsInfoPanelFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelPlayerInfoPanel) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsLikeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsLikeFingerprint.kt index 6c938cd5d..52c38ea7b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsLikeFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsLikeFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelRightLikeIcon import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsLikeFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, parameters = listOf("Z", "Z", "L"), customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelRightLikeIcon) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsPaidPromotionFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsPaidPromotionFingerprint.kt index a31571e45..3f5e6a23f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsPaidPromotionFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsPaidPromotionFingerprint.kt @@ -1,9 +1,13 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelPlayerBadge import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsPaidPromotionFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelPlayerBadge) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsRemixFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsRemixFingerprint.kt index 4ce349cee..90ef77a38 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsRemixFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsRemixFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelDynRemix import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsRemixFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, parameters = listOf("Z", "Z", "L"), customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelDynRemix) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsShareFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsShareFingerprint.kt index f250db521..664e543c0 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsShareFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsShareFingerprint.kt @@ -1,11 +1,14 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelDynShare import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsShareFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, parameters = listOf("Z", "Z", "L"), customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelDynShare) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsFingerprint.kt index 327ea85a8..8061cc9a8 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsFingerprint.kt @@ -1,9 +1,14 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelPlayerPausedStateButton import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsSubscriptionsFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = emptyList(), customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelPlayerPausedStateButton) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletFingerprint.kt index b13f92bbc..1e48913cb 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletFingerprint.kt @@ -1,10 +1,13 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object ShortsSubscriptionsTabletFingerprint : MethodFingerprint( returnType = "V", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, parameters = listOf("L", "L", "Z"), opcodes = listOf( Opcode.INVOKE_STATIC, diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletParentFingerprint.kt index 06ec5b01a..c07f4b7b8 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/shortscomponent/fingerprints/ShortsSubscriptionsTabletParentFingerprint.kt @@ -1,9 +1,13 @@ package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ReelPlayerFooter import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags object ShortsSubscriptionsTabletParentFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ReelPlayerFooter) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/startupshortsreset/fingerprints/UserWasInShortsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/startupshortsreset/fingerprints/UserWasInShortsFingerprint.kt index fbe3b7eff..c7eb64f18 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/startupshortsreset/fingerprints/UserWasInShortsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/startupshortsreset/fingerprints/UserWasInShortsFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object UserWasInShortsFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("L"), + parameters = listOf("Ljava/lang/Object;"), opcodes = listOf( Opcode.CHECK_CAST, Opcode.INVOKE_INTERFACE, diff --git a/src/main/kotlin/app/revanced/patches/youtube/swipe/swipecontrols/bytecode/fingerprints/WatchWhileActivityFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/swipe/swipecontrols/bytecode/fingerprints/WatchWhileActivityFingerprint.kt index ba0d11559..1f677ac4b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/swipe/swipecontrols/bytecode/fingerprints/WatchWhileActivityFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/swipe/swipecontrols/bytecode/fingerprints/WatchWhileActivityFingerprint.kt @@ -7,5 +7,5 @@ import org.jf.dexlib2.AccessFlags object WatchWhileActivityFingerprint : MethodFingerprint( accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, parameters = emptyList(), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("WatchWhileActivity;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/WatchWhileActivity;") } ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/OnBackPressedFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/OnBackPressedFingerprint.kt index f25e2fe45..7bdc5448d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/OnBackPressedFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/OnBackPressedFingerprint.kt @@ -5,5 +5,5 @@ import org.jf.dexlib2.Opcode object OnBackPressedFingerprint : MethodFingerprint( opcodes = listOf(Opcode.RETURN_VOID), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("WatchWhileActivity;") && methodDef.name == "onBackPressed" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/WatchWhileActivity;") && methodDef.name == "onBackPressed" } ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/PlayerPatchFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/PlayerPatchFingerprint.kt index 877eac8f5..6a6917b72 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/PlayerPatchFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/PlayerPatchFingerprint.kt @@ -3,5 +3,5 @@ package app.revanced.patches.youtube.utils.fingerprints import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object PlayerPatchFingerprint : MethodFingerprint( - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("PlayerPatch;") && methodDef.name == "hidePlayerButton" } + customFingerprint = { methodDef, _ -> methodDef.definingClass == "Lapp/revanced/integrations/patches/layout/PlayerPatch;" && methodDef.name == "hidePlayerButton" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/SubtitleButtonControllerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/SubtitleButtonControllerFingerprint.kt index 261db0bbd..147739be7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/SubtitleButtonControllerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/SubtitleButtonControllerFingerprint.kt @@ -10,7 +10,7 @@ import org.jf.dexlib2.Opcode object SubtitleButtonControllerFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("L"), + parameters = listOf("Lcom/google/android/libraries/youtube/player/subtitles/model/SubtitleTrack;"), opcodes = listOf( Opcode.IGET_OBJECT, Opcode.IF_NEZ, diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/YouTubeControlsOverlayFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/YouTubeControlsOverlayFingerprint.kt index 73d61cbf6..0b0462cff 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/YouTubeControlsOverlayFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/YouTubeControlsOverlayFingerprint.kt @@ -17,8 +17,7 @@ object YouTubeControlsOverlayFingerprint : MethodFingerprint( Opcode.IF_EQZ ), customFingerprint = { methodDef, _ -> - methodDef.isWideLiteralExists( - YoutubeControlsOverlay - ) + methodDef.definingClass.endsWith("/YouTubeControlsOverlay;") && + methodDef.isWideLiteralExists(YoutubeControlsOverlay) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/doublebacktoclose/fingerprint/ScrollTopFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/doublebacktoclose/fingerprint/ScrollTopFingerprint.kt index 0895905eb..4a57dacae 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/doublebacktoclose/fingerprint/ScrollTopFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/doublebacktoclose/fingerprint/ScrollTopFingerprint.kt @@ -8,7 +8,7 @@ import org.jf.dexlib2.Opcode object ScrollTopFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf(), + parameters = emptyList(), opcodes = listOf( Opcode.CHECK_CAST, Opcode.CONST_4, diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/fingerprints/SubtitleWindowFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/fingerprints/SubtitleWindowFingerprint.kt index 10252254a..04f5602ee 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/fingerprints/SubtitleWindowFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/fingerprints/SubtitleWindowFingerprint.kt @@ -1,8 +1,12 @@ package app.revanced.patches.youtube.utils.fix.parameter.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import org.jf.dexlib2.AccessFlags object SubtitleWindowFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, parameters = listOf("I", "I", "I", "Z", "Z"), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("SubtitleWindowSettings;") && methodDef.name == "" } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/SubtitleWindowSettings;") } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/swiperefresh/fingerprint/SwipeRefreshLayoutFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/swiperefresh/fingerprint/SwipeRefreshLayoutFingerprint.kt index cddc4e1ea..ac62da087 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/swiperefresh/fingerprint/SwipeRefreshLayoutFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/swiperefresh/fingerprint/SwipeRefreshLayoutFingerprint.kt @@ -15,5 +15,5 @@ object SwipeRefreshLayoutFingerprint : MethodFingerprint( Opcode.MOVE_RESULT, Opcode.RETURN ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("SwipeRefreshLayout;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/SwipeRefreshLayout;") } ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/BottomControlsInflateFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/BottomControlsInflateFingerprint.kt index b64f3b4d2..54d995c7d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/BottomControlsInflateFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/BottomControlsInflateFingerprint.kt @@ -1,11 +1,16 @@ package app.revanced.patches.youtube.utils.playercontrols.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.BottomUiContainerStub import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object BottomControlsInflateFingerprint : MethodFingerprint( + returnType = "Ljava/lang/Object;", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL or AccessFlags.SYNTHETIC, + parameters = emptyList(), opcodes = listOf( Opcode.CHECK_CAST, Opcode.INVOKE_VIRTUAL, diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/ControlsLayoutInflateFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/ControlsLayoutInflateFingerprint.kt index 7f729b450..149da9ba4 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/ControlsLayoutInflateFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/ControlsLayoutInflateFingerprint.kt @@ -1,11 +1,16 @@ package app.revanced.patches.youtube.utils.playercontrols.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.ControlsLayoutStub import app.revanced.util.bytecode.isWideLiteralExists +import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode object ControlsLayoutInflateFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = emptyList(), opcodes = listOf( Opcode.INVOKE_VIRTUAL, Opcode.MOVE_RESULT_OBJECT, diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityFingerprint.kt index 2d9b9f0d1..5e0192245 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityFingerprint.kt @@ -1,8 +1,12 @@ package app.revanced.patches.youtube.utils.playercontrols.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import org.jf.dexlib2.AccessFlags object PlayerControlsVisibilityFingerprint : MethodFingerprint( returnType = "V", - parameters = listOf("Z", "Z") + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, + parameters = listOf("Z", "Z"), + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("YouTubeControlsOverlay;") } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityModelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityModelFingerprint.kt index 52bbda617..98343aa4c 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityModelFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/playercontrols/fingerprints/PlayerControlsVisibilityModelFingerprint.kt @@ -5,5 +5,5 @@ import org.jf.dexlib2.Opcode object PlayerControlsVisibilityModelFingerprint : MethodFingerprint( opcodes = listOf(Opcode.IGET_BOOLEAN), - strings = listOf("hasNext", "hasPrevious", "Missing required properties:") + strings = listOf("Missing required properties:", "hasNext", "hasPrevious") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/PlayerTypeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/PlayerTypeFingerprint.kt index 415a0a02e..cdcfe5f2f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/PlayerTypeFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/PlayerTypeFingerprint.kt @@ -13,5 +13,5 @@ object PlayerTypeFingerprint : MethodFingerprint( Opcode.IF_NE, Opcode.RETURN_VOID ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("YouTubePlayerOverlaysLayout;") } + customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/YouTubePlayerOverlaysLayout;") } ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/VideoStateFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/VideoStateFingerprint.kt index ddaf5804c..b40547ad9 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/VideoStateFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/playertype/fingerprint/VideoStateFingerprint.kt @@ -17,5 +17,8 @@ object VideoStateFingerprint : MethodFingerprint( Opcode.IF_EQZ, Opcode.IF_EQZ, Opcode.IGET_OBJECT, // obfuscated parameter field name - ) + ), + customFingerprint = { methodDef, _ -> + methodDef.definingClass.endsWith("/YouTubeControlsOverlay;") + } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/fingerprints/PlayerControllerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/fingerprints/PlayerControllerFingerprint.kt index bdcbbac00..5d2caf73e 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/fingerprints/PlayerControllerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/fingerprints/PlayerControllerFingerprint.kt @@ -1,7 +1,13 @@ package app.revanced.patches.youtube.utils.sponsorblock.bytecode.fingerprints +import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import org.jf.dexlib2.AccessFlags object PlayerControllerFingerprint : MethodFingerprint( - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("SegmentPlaybackController;") && methodDef.name == "setSponsorBarRect" } + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, + parameters = listOf("Ljava/lang/Object;"), + customFingerprint = { methodDef, _ -> methodDef.definingClass == "Lapp/revanced/integrations/sponsorblock/SegmentPlaybackController;" + && methodDef.name == "setSponsorBarRect" } ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt index 9305ebea5..bc25bdb92 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/sponsorblock/bytecode/patch/SponsorBlockBytecodePatch.kt @@ -158,8 +158,8 @@ class SponsorBlockBytecodePatch : BytecodePatch( /** * Append the new time to the player layout */ - TotalTimeFingerprint.result?.mutableMethod?.let { - it.apply { + TotalTimeFingerprint.result?.let { + it.mutableMethod.apply { val targetIndex = getWideLiteralIndex(TotalTime) + 2 val targetRegister = getInstruction(targetIndex).registerA @@ -175,8 +175,8 @@ class SponsorBlockBytecodePatch : BytecodePatch( /** * Initialize the SponsorBlock view */ - YouTubeControlsOverlayFingerprint.result?.mutableMethod?.let { - it.apply { + YouTubeControlsOverlayFingerprint.result?.let { + it.mutableMethod.apply { val targetIndex = getWideLiteralIndex(InsetOverlayViewLayout) + 3 val targetRegister = getInstruction(targetIndex).registerA @@ -200,17 +200,19 @@ class SponsorBlockBytecodePatch : BytecodePatch( ((rectangleFieldInvalidatorInstructions.elementAt(rectangleFieldInvalidatorInstructions.count() - 3) as ReferenceInstruction).reference as FieldReference).name - PlayerControllerFingerprint.result?.mutableMethod?.let { - val instructions = it.implementation!!.instructions + PlayerControllerFingerprint.result?.let { + it.mutableMethod.apply { + for ((index, instruction) in implementation!!.instructions.withIndex()) { + if (instruction.opcode != Opcode.CONST_STRING) continue - for ((index, instruction) in instructions.withIndex()) { - if (instruction.opcode != Opcode.CONST_STRING) continue - val register = it.getInstruction(index).registerA - it.replaceInstruction( - index, - "const-string v$register, \"$rectangleFieldName\"" - ) - break + val register = getInstruction(index).registerA + + replaceInstruction( + index, + "const-string v$register, \"$rectangleFieldName\"" + ) + break + } } } ?: return PlayerControllerFingerprint.toErrorResult() diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt index f46c2d25a..33c1f31ad 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/videoid/general/fingerprint/VideoIdParentFingerprint.kt @@ -4,6 +4,9 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object VideoIdParentFingerprint : MethodFingerprint( returnType = "V", - parameters = listOf("L", "L"), + parameters = listOf("Ljava/lang/Object;", "Ljava/lang/Exception;"), strings = listOf("error retrieving subtitle"), + customFingerprint = { methodDef, _ -> + methodDef.definingClass.endsWith("/SubtitlesOverlayPresenter;") + } ) diff --git a/src/main/kotlin/app/revanced/util/bytecode/BytecodeHelper.kt b/src/main/kotlin/app/revanced/util/bytecode/BytecodeHelper.kt index 2ed3c00ed..b1f516129 100644 --- a/src/main/kotlin/app/revanced/util/bytecode/BytecodeHelper.kt +++ b/src/main/kotlin/app/revanced/util/bytecode/BytecodeHelper.kt @@ -13,7 +13,7 @@ internal object BytecodeHelper { ) { this.classes.forEach { classDef -> classDef.methods.forEach { method -> - if (classDef.type.endsWith("WatchWhileActivity;") && method.name == "onCreate") { + if (classDef.type.endsWith("/WatchWhileActivity;") && method.name == "onCreate") { val hookMethod = this.proxy(classDef).mutableClass.methods.first { it.name == "onCreate" } @@ -29,7 +29,7 @@ internal object BytecodeHelper { internal fun BytecodeContext.updatePatchStatus(patch: String) { this.classes.forEach { classDef -> classDef.methods.forEach { method -> - if (classDef.type.endsWith("PatchStatus;") && method.name == patch) { + if (classDef.type.endsWith("/PatchStatus;") && method.name == patch) { val patchStatusMethod = this.proxy(classDef).mutableClass.methods.first { it.name == patch }