From 56876f336ba39ed854b9ac0ab72c4a80979b6b04 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 21 Sep 2025 21:21:56 +0400 Subject: [PATCH] finish merge --- patches/api/patches.api | 4 - .../shared/misc/privacy/Fingerprints.kt | 8 +- .../misc/privacy/SanitizeSharingLinksPatch.kt | 46 +++++----- .../RemoveTrackingQueryParameterPatch.kt | 89 ------------------- 4 files changed, 31 insertions(+), 116 deletions(-) delete mode 100644 patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 0002f7193..0679b7923 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1600,10 +1600,6 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat public static final fun is_20_37_or_greater ()Z } -public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt { - public static final fun getRemoveTrackingQueryParameterPatch ()Lapp/revanced/patcher/patch/BytecodePatch; -} - public final class app/revanced/patches/youtube/misc/privacy/SanitizeSharingLinksPatchKt { public static final fun getSanitizeSharingLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/Fingerprints.kt index 5eb72594d..f549ffc56 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/Fingerprints.kt @@ -1,8 +1,12 @@ package app.revanced.patches.shared.misc.privacy -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.AccessFlags +import app.revanced.patcher.checkCast +import app.revanced.patcher.fieldAccess import app.revanced.patcher.fingerprint +import app.revanced.patcher.methodCall +import app.revanced.patcher.opcode +import app.revanced.patcher.string +import com.android.tools.smali.dexlib2.Opcode internal val youTubeCopyTextFingerprint by fingerprint { returns("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt index 860a253af..e0d91a472 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt @@ -1,21 +1,20 @@ package app.revanced.patches.shared.misc.privacy import app.revanced.patcher.Fingerprint -import app.revanced.patcher.Match import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatchBuilder import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.bytecodePatch -import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting import app.revanced.patches.shared.misc.settings.preference.SwitchPreference +import app.revanced.util.addInstructionsAtControlFlowLabel +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction -import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/shared/patches/SanitizeSharingLinksPatch;" @@ -56,34 +55,39 @@ internal fun sanitizeSharingLinksPatch( } ) - fun Fingerprint.hook( - getInsertIndex: Match.PatternMatch.() -> Int, - getUrlRegister: MutableMethod.(insertIndex: Int) -> Int, - ) { - val insertIndex = patternMatch!!.getInsertIndex() - val urlRegister = method.getUrlRegister(insertIndex) + fun Fingerprint.hookUrlString(matchIndex: Int) { + val index = instructionMatches[matchIndex].index + val urlRegister = method.getInstruction(index).registerA method.addInstructions( - insertIndex, + index + 1, """ - invoke-static {v$urlRegister}, $EXTENSION_CLASS_DESCRIPTOR->sanitize(Ljava/lang/String;)Ljava/lang/String; + invoke-static { v$urlRegister }, $EXTENSION_CLASS_DESCRIPTOR->sanitize(Ljava/lang/String;)Ljava/lang/String; move-result-object v$urlRegister """ ) } - // YouTube share sheet.\ - youTubeShareSheetFingerprint.hook(getInsertIndex = { startIndex + 1 }) { insertIndex -> - getInstruction(insertIndex - 1).registerA + fun Fingerprint.hookIntentPutExtra(matchIndex: Int) { + val index = instructionMatches[matchIndex].index + val urlRegister = method.getInstruction(index).registerE + + method.addInstructionsAtControlFlowLabel( + index, + """ + invoke-static { v$urlRegister }, $EXTENSION_CLASS_DESCRIPTOR->sanitize(Ljava/lang/String;)Ljava/lang/String; + move-result-object v$urlRegister + """ + ) } + // YouTube share sheet copy link. + youTubeCopyTextFingerprint.hookUrlString(0) + + // YouTube share sheet other apps. + youTubeShareSheetFingerprint.hookIntentPutExtra(3) + // Native system share sheet. - youTubeSystemShareSheetFingerprint.hook(getInsertIndex = { endIndex }) { insertIndex -> - getInstruction(insertIndex - 1).registerA - } - - youTubeCopyTextFingerprint.hook(getInsertIndex = { startIndex + 2 }) { insertIndex -> - getInstruction(insertIndex - 2).registerA - } + youTubeSystemShareSheetFingerprint.hookIntentPutExtra(3) } } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt deleted file mode 100644 index 6e849cb10..000000000 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt +++ /dev/null @@ -1,89 +0,0 @@ -package app.revanced.patches.youtube.misc.privacy - -import app.revanced.patcher.Fingerprint -import app.revanced.patcher.Match -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.bytecodePatch -import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod -import app.revanced.patches.all.misc.resources.addResources -import app.revanced.patches.all.misc.resources.addResourcesPatch -import app.revanced.patches.shared.misc.settings.preference.SwitchPreference -import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch -import app.revanced.patches.youtube.misc.settings.PreferenceScreen -import app.revanced.patches.youtube.misc.settings.settingsPatch -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction -import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction - -private const val EXTENSION_CLASS_DESCRIPTOR = - "Lapp/revanced/extension/youtube/patches/RemoveTrackingQueryParameterPatch;" - -@Deprecated("Patch was renamed", ReplaceWith("sanitizeSharingLinksPatch")) -@Suppress("unused") -val removeTrackingQueryParameterPatch = bytecodePatch{ - dependsOn(sanitizeSharingLinksPatch) - -//// TODO: Rename this to "Sanitize sharing links" to be consistent with other apps. -// val removeTrackingQueryParameterPatch = bytecodePatch( -// name = "Remove tracking query parameter", -// description = "Adds an option to remove the tracking parameter from links you share.", -//) { -// dependsOn( -// sharedExtensionPatch, -// settingsPatch, -// addResourcesPatch, -// ) -// -// compatibleWith( -// "com.google.android.youtube"( -// "19.34.42", -// "19.43.41", -// "20.07.39", -// "20.13.41", -// "20.14.43", -// ) -// ) -// -// execute { -// addResources("youtube", "misc.privacy.removeTrackingQueryParameterPatch") -// -// PreferenceScreen.MISC.addPreferences( -// SwitchPreference("revanced_remove_tracking_query_parameter"), -// ) -// -// fun Fingerprint.hookUrlString(matchIndex: Int) { -// val index = instructionMatches[matchIndex].index -// val urlRegister = method.getInstruction(index).registerA -// -// method.addInstructions( -// index + 1, -// """ -// invoke-static { v$urlRegister }, $EXTENSION_CLASS_DESCRIPTOR->sanitize(Ljava/lang/String;)Ljava/lang/String; -// move-result-object v$urlRegister -// """ -// ) -// } -// -// fun Fingerprint.hookIntentPutExtra(matchIndex: Int) { -// val index = instructionMatches[matchIndex].index -// val urlRegister = method.getInstruction(index).registerE -// -// method.addInstructionsAtControlFlowLabel( -// index, -// """ -// invoke-static { v$urlRegister }, $EXTENSION_CLASS_DESCRIPTOR->sanitize(Ljava/lang/String;)Ljava/lang/String; -// move-result-object v$urlRegister -// """ -// ) -// } -// -// // YouTube share sheet copy link. -// copyTextFingerprint.hookUrlString(0) -// -// // YouTube share sheet other apps. -// youtubeShareSheetFingerprint.hookIntentPutExtra(3) -// -// // Native system share sheet. -// systemShareSheetFingerprint.hookIntentPutExtra(3) -// } -//}