diff --git a/api/revanced-patches.api b/api/revanced-patches.api index e885e2eb..aa3ce12d 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1202,6 +1202,12 @@ public final class app/revanced/patches/twitter/misc/links/OpenLinksWithAppChoos public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/vsco/misc/pro/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/vsco/misc/pro/UnlockProPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt b/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt new file mode 100644 index 00000000..4e358f5a --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt @@ -0,0 +1,29 @@ +package app.revanced.patches.twitter.misc.links + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.twitter.misc.links.fingerprints.SanitizeSharingLinksFingerprint +import app.revanced.util.exception + +@Patch( + name = "Sanitize sharing links", + description = "Removes the tracking query parameters from links before they are shared.", + compatiblePackages = [CompatiblePackage("com.twitter.android")], +) +object SanitizeSharingLinksPatch : BytecodePatch( + setOf(SanitizeSharingLinksFingerprint), +) { + override fun execute(context: BytecodeContext) { + SanitizeSharingLinksFingerprint.result?.mutableMethod?.addInstructions( + 0, + """ + # Method takes in a link (string, param 0) and then appends the tracking query params, + # so all we need to do is return back the passed-in string + return-object p0 + """, + ) ?: throw SanitizeSharingLinksFingerprint.exception + } +} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/twitter/misc/links/fingerprints/SanitizeSharingLinksFingerprint.kt b/src/main/kotlin/app/revanced/patches/twitter/misc/links/fingerprints/SanitizeSharingLinksFingerprint.kt new file mode 100644 index 00000000..4e90fffb --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/twitter/misc/links/fingerprints/SanitizeSharingLinksFingerprint.kt @@ -0,0 +1,8 @@ +package app.revanced.patches.twitter.misc.links.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint + +internal object SanitizeSharingLinksFingerprint : MethodFingerprint( + strings = listOf("", "shareParam", "sessionToken"), + returnType = "Ljava/lang/String;", +) \ No newline at end of file