diff --git a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFactoryFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFactoryFingerprint.kt deleted file mode 100644 index e3ec8ff90..000000000 --- a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFactoryFingerprint.kt +++ /dev/null @@ -1,22 +0,0 @@ -package app.revanced.patches.reddit.misc.tracking.url.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 ShareLinkFactoryFingerprint : MethodFingerprint( - returnType = "L", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - opcodes = listOf( - Opcode.CONST_STRING, - Opcode.CONST_STRING, - Opcode.INVOKE_DIRECT, - Opcode.APUT_OBJECT, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_STATIC, // Returns the URL. - Opcode.MOVE_RESULT_OBJECT - ), - customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("ShareLinkFactory;") } -) \ 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 new file mode 100644 index 000000000..be6d34690 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.reddit.misc.tracking.url.fingerprints + +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()"), +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/patch/SanitizeUrlQueryPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/patch/SanitizeUrlQueryPatch.kt index edbf4fdbd..386926967 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/patch/SanitizeUrlQueryPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/patch/SanitizeUrlQueryPatch.kt @@ -6,47 +6,29 @@ import app.revanced.patcher.annotation.Name 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.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patcher.patch.annotations.RequiresIntegrations import app.revanced.patches.reddit.misc.tracking.url.annotations.SanitizeUrlQueryCompatibility -import app.revanced.patches.reddit.misc.tracking.url.fingerprints.ShareLinkFactoryFingerprint -import org.jf.dexlib2.iface.instruction.OneRegisterInstruction +import app.revanced.patches.reddit.misc.tracking.url.fingerprints.ShareLinkFormatterFingerprint @Patch @Name("sanitize-sharing-links") @Description("Removes (tracking) query parameters from the URLs when sharing links.") @SanitizeUrlQueryCompatibility @Version("0.0.1") -@RequiresIntegrations class SanitizeUrlQueryPatch : BytecodePatch( - listOf(ShareLinkFactoryFingerprint) + listOf(ShareLinkFormatterFingerprint) ) { override fun execute(context: BytecodeContext): PatchResult { - ShareLinkFactoryFingerprint.result?.let { result -> - result.mutableMethod.apply { - val insertIndex = result.scanResult.patternScanResult!!.endIndex + 1 - val urlRegister = getInstruction(insertIndex - 1).registerA - addInstructions( - insertIndex, - """ - invoke-static {v$urlRegister}, $SANITIZE_METHOD_DESCRIPTOR - move-result-object v$urlRegister - """ - ) - } - } ?: return ShareLinkFactoryFingerprint.toErrorResult() + ShareLinkFormatterFingerprint.result?.mutableMethod?.addInstructions( + 0, + "return-object p0" + ) ?: return ShareLinkFormatterFingerprint.toErrorResult() return PatchResultSuccess() } - private companion object { - private const val SANITIZE_METHOD_DESCRIPTOR = - "Lapp/revanced/reddit/patches/SanitizeUrlQueryPatch;" + - "->stripQueryParameters(Ljava/lang/String;)Ljava/lang/String;" - } }