feat(Instagram): Add Sanitize sharing links patch (#5986)

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
This commit is contained in:
brosssh
2025-10-03 11:19:01 +04:00
committed by GitHub
co-authored by oSumAtrIX LisoUseInAIKyrios
parent 0acba30245
commit 963a4ef43f
9 changed files with 164 additions and 37 deletions
+4
View File
@@ -288,6 +288,10 @@ public final class app/revanced/patches/instagram/misc/links/OpenLinksExternally
public static final fun getOpenLinksExternallyPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/instagram/misc/privacy/SanitizeSharingLinksPatchKt {
public static final fun getSanitizeSharingLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/instagram/misc/signature/SignatureCheckPatchKt {
public static final fun getSignatureCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -0,0 +1,23 @@
package app.revanced.patches.instagram.misc.privacy
import app.revanced.patcher.fingerprint
internal val permalinkResponseJsonParserFingerprint = fingerprint {
strings("permalink", "PermalinkResponse")
custom { method, _ -> method.name == "parseFromJson" }
}
internal val storyUrlResponseJsonParserFingerprint = fingerprint {
strings("story_item_to_share_url", "StoryItemUrlResponse")
custom { method, _ -> method.name == "parseFromJson" }
}
internal val profileUrlResponseJsonParserFingerprint = fingerprint {
strings("profile_to_share_url", "ProfileUrlResponse")
custom { method, _ -> method.name == "parseFromJson" }
}
internal val liveUrlResponseJsonParserFingerprint = fingerprint {
strings("live_to_share_url", "LiveItemLinkUrlResponse")
custom { method, _ -> method.name == "parseFromJson" }
}
@@ -0,0 +1,48 @@
package app.revanced.patches.instagram.misc.privacy
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/instagram/misc/privacy/SanitizeSharingLinksPatch;"
@Suppress("unused")
val sanitizeSharingLinksPatch = bytecodePatch(
name = "Sanitize sharing links",
description = "Removes the tracking query parameters from shared links.",
) {
compatibleWith("com.instagram.android")
dependsOn(sharedExtensionPatch)
execute {
arrayOf(
permalinkResponseJsonParserFingerprint,
storyUrlResponseJsonParserFingerprint,
profileUrlResponseJsonParserFingerprint,
liveUrlResponseJsonParserFingerprint
).forEach { fingerprint ->
fingerprint.method.apply {
val putSharingUrlIndex = indexOfFirstInstructionOrThrow(
fingerprint.stringMatches!!.first().index,
Opcode.IPUT_OBJECT
)
val sharingUrlRegister = getInstruction<TwoRegisterInstruction>(putSharingUrlIndex).registerA
addInstructions(
putSharingUrlIndex,
"""
invoke-static { v$sharingUrlRegister }, $EXTENSION_CLASS_DESCRIPTOR->sanitizeSharingLink(Ljava/lang/String;)Ljava/lang/String;
move-result-object v$sharingUrlRegister
"""
)
}
}
}
}
@@ -6,7 +6,7 @@ import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused")
val sanitizeUrlQueryPatch = bytecodePatch(
name = "Sanitize sharing links",
description = "Removes (tracking) query parameters from the URLs when sharing links.",
description = "Removes the tracking query parameters from shared links.",
) {
compatibleWith("com.reddit.frontpage")
@@ -16,7 +16,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
@Suppress("unused")
val sanitizeSharingLinksPatch = bytecodePatch(
name = "Sanitize sharing links",
description = "Removes the tracking query parameters from links before they are shared.",
description = "Removes the tracking query parameters from shared links.",
) {
compatibleWith("com.spotify.music")
@@ -24,7 +24,7 @@ val sanitizeSharingLinksPatch = bytecodePatch(
execute {
val extensionMethodDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->" +
"sanitizeUrl(Ljava/lang/String;)Ljava/lang/String;"
"sanitizeSharingLink(Ljava/lang/String;)Ljava/lang/String;"
val copyFingerprint = if (shareCopyUrlFingerprint.originalMethodOrNull != null) {
shareCopyUrlFingerprint