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" + ) + } + } +}