diff --git a/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastContextFetchFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastContextFetchFingerprint.kt new file mode 100644 index 000000000..08e1b035b --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastContextFetchFingerprint.kt @@ -0,0 +1,20 @@ +package app.revanced.patches.music.misc.microg.fingerprints + +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patcher.fingerprint.method.annotation.DirectPatternScanMethod +import app.revanced.patcher.fingerprint.method.annotation.MatchingMethod +import app.revanced.patches.youtube.misc.microg.annotations.MicroGPatchCompatibility + +@Name("cast-context-fetch-fingerprint") +@MatchingMethod( + "Lvvz;", "a" +) +@DirectPatternScanMethod +@MicroGPatchCompatibility +@Version("0.0.1") +object CastContextFetchFingerprint : MethodFingerprint( + null, null, null, null, + listOf("Error fetching CastContext.") +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastDynamiteModuleFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastDynamiteModuleFingerprint.kt new file mode 100644 index 000000000..5d6665613 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastDynamiteModuleFingerprint.kt @@ -0,0 +1,20 @@ +package app.revanced.patches.music.misc.microg.fingerprints + +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patcher.fingerprint.method.annotation.DirectPatternScanMethod +import app.revanced.patcher.fingerprint.method.annotation.MatchingMethod +import app.revanced.patches.youtube.misc.microg.annotations.MicroGPatchCompatibility + +@Name("cast-module-fingerprint") +@MatchingMethod( + "Llqh;", "c" +) +@DirectPatternScanMethod +@MicroGPatchCompatibility +@Version("0.0.1") +object CastDynamiteModuleFingerprint : MethodFingerprint( + null, null, null, null, + listOf("com.google.android.gms.cast.framework.internal.CastDynamiteModuleImpl") +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastDynamiteModuleV2Fingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastDynamiteModuleV2Fingerprint.kt new file mode 100644 index 000000000..6f06be207 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/misc/microg/fingerprints/CastDynamiteModuleV2Fingerprint.kt @@ -0,0 +1,20 @@ +package app.revanced.patches.music.misc.microg.fingerprints + +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patcher.fingerprint.method.annotation.DirectPatternScanMethod +import app.revanced.patcher.fingerprint.method.annotation.MatchingMethod +import app.revanced.patches.youtube.misc.microg.annotations.MicroGPatchCompatibility + +@Name("cast-context-fetch-fingerprint") +@MatchingMethod( + "Lmcf;", "c" +) +@DirectPatternScanMethod +@MicroGPatchCompatibility +@Version("0.0.1") +object CastDynamiteModuleV2Fingerprint : MethodFingerprint( + null, null, null, null, + listOf("Failed to load module via V2: ") +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/misc/microg/patch/bytecode/MusicMicroGBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/microg/patch/bytecode/MusicMicroGBytecodePatch.kt index 2b2f02442..edf67862f 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/microg/patch/bytecode/MusicMicroGBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/microg/patch/bytecode/MusicMicroGBytecodePatch.kt @@ -36,6 +36,9 @@ class MusicMicroGBytecodePatch : BytecodePatch( listOf( ServiceCheckFingerprint, GooglePlayUtilityFingerprint, + CastDynamiteModuleFingerprint, + CastDynamiteModuleV2Fingerprint, + CastContextFetchFingerprint, PrimeFingerprint, ) ) { @@ -122,9 +125,17 @@ class MusicMicroGBytecodePatch : BytecodePatch( listOf( ServiceCheckFingerprint, GooglePlayUtilityFingerprint, + CastDynamiteModuleFingerprint, + CastDynamiteModuleV2Fingerprint, + CastContextFetchFingerprint, ).forEach { fingerprint -> val result = fingerprint.result!! val stringInstructions = when (result.method.returnType.first()) { + 'L' -> """ + const/4 v0, 0x0 + return-object v0 + """ + 'V' -> "return-void" 'I' -> """ const/4 v0, 0x0