From e3fad97484d7eb962aeb53d44a0047b34a881071 Mon Sep 17 00:00:00 2001 From: Dawid Krajcarz <80264606+drobotk@users.noreply.github.com> Date: Thu, 10 Apr 2025 23:08:43 +0200 Subject: [PATCH] feat(Messenger): Add `Remove Meta AI tab` patch (#4726) --- patches/api/patches.api | 4 +++ .../patches/messenger/navbar/Fingerprints.kt | 16 ++++++++++++ .../messenger/navbar/RemoveMetaAITabPatch.kt | 25 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index b53b2c301..543bd5f9d 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -272,6 +272,10 @@ public final class app/revanced/patches/messenger/inputfield/DisableTypingIndica public static final fun getDisableTypingIndicatorPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/messenger/navbar/RemoveMetaAITabPatchKt { + public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/mifitness/misc/locale/ForceEnglishLocalePatchKt { public static final fun getForceEnglishLocalePatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt new file mode 100644 index 000000000..766e20209 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt @@ -0,0 +1,16 @@ +package app.revanced.patches.messenger.navbar + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.Opcode + +internal val createTabConfigurationFingerprint = fingerprint { + strings("MessengerTabConfigurationCreator.createTabConfiguration") + opcodes( + Opcode.INVOKE_DIRECT, + Opcode.MOVE_RESULT, + Opcode.IF_EQZ, + Opcode.INVOKE_DIRECT, + Opcode.MOVE_RESULT, + Opcode.IF_EQZ, + ) +} diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt new file mode 100644 index 000000000..75fb98577 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt @@ -0,0 +1,25 @@ +package app.revanced.patches.messenger.navbar + +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction + +@Suppress("unused") +val removeMetaAITabPatch = bytecodePatch( + name = "Remove Meta AI tab", + description = "Removes the 'Meta AI' tab from the navbar.", +) { + compatibleWith("com.facebook.orca") + + execute { + createTabConfigurationFingerprint.let { + val moveResultIndex = it.patternMatch!!.startIndex + 1 + val enabledRegister = it.method.getInstruction(moveResultIndex).registerA + it.method.replaceInstruction( + moveResultIndex, + "const/4 v$enabledRegister, 0x0" + ) + } + } +}