Skip to content

Commit 52b9dc5

Browse files
authored
feat(Messenger): Add Remove Meta AI patch (#4945)
1 parent dea7108 commit 52b9dc5

File tree

10 files changed

+91
-32
lines changed

10 files changed

+91
-32
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
dependencies {
2+
compileOnly(project(":extensions:shared:library"))
3+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<manifest/>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package app.revanced.extension.messenger.metaai;
2+
3+
@SuppressWarnings("unused")
4+
public class RemoveMetaAIPatch {
5+
public static boolean overrideConfigBool(long id, boolean value) {
6+
// It seems like all configs starting with 363219 are related to Meta AI.
7+
// A list of specific ones that need disabling would probably be better,
8+
// but these config numbers seem to change slightly with each update.
9+
// These first 6 digits don't though.
10+
if (Long.toString(id).startsWith("363219"))
11+
return false;
12+
13+
return value;
14+
}
15+
}

patches/api/patches.api

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,14 @@ public final class app/revanced/patches/messenger/inputfield/DisableTypingIndica
284284
public static final fun getDisableTypingIndicatorPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
285285
}
286286

287+
public final class app/revanced/patches/messenger/metaai/RemoveMetaAIPatchKt {
288+
public static final fun getRemoveMetaAIPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
289+
}
290+
291+
public final class app/revanced/patches/messenger/misc/extension/ExtensionPatchKt {
292+
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
293+
}
294+
287295
public final class app/revanced/patches/messenger/navbar/RemoveMetaAITabPatchKt {
288296
public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
289297
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package app.revanced.patches.messenger.metaai
2+
3+
import com.android.tools.smali.dexlib2.Opcode
4+
import app.revanced.patcher.fingerprint
5+
6+
internal val getMobileConfigBoolFingerprint = fingerprint {
7+
parameters("J")
8+
returns("Z")
9+
opcodes(Opcode.RETURN)
10+
custom { method, classDef ->
11+
method.implementation ?: return@custom false // unsure if this is necessary
12+
classDef.interfaces.contains("Lcom/facebook/mobileconfig/factory/MobileConfigUnsafeContext;")
13+
}
14+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package app.revanced.patches.messenger.metaai
2+
3+
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
4+
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
5+
import app.revanced.patcher.patch.bytecodePatch
6+
import app.revanced.patches.messenger.misc.extension.sharedExtensionPatch
7+
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
8+
9+
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/messenger/metaai/RemoveMetaAIPatch;"
10+
11+
@Suppress("unused")
12+
val removeMetaAIPatch = bytecodePatch(
13+
name = "Remove Meta AI",
14+
description = "Removes UI elements related to Meta AI."
15+
) {
16+
compatibleWith("com.facebook.orca")
17+
18+
dependsOn(sharedExtensionPatch)
19+
20+
execute {
21+
getMobileConfigBoolFingerprint.method.apply {
22+
val returnIndex = getMobileConfigBoolFingerprint.patternMatch!!.startIndex
23+
val returnRegister = getInstruction<OneRegisterInstruction>(returnIndex).registerA
24+
25+
addInstructions(
26+
returnIndex,
27+
"""
28+
invoke-static {p1, p2, v$returnRegister}, $EXTENSION_CLASS_DESCRIPTOR->overrideConfigBool(JZ)Z
29+
30+
move-result v$returnRegister
31+
"""
32+
)
33+
}
34+
}
35+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package app.revanced.patches.messenger.misc.extension
2+
3+
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
4+
5+
val sharedExtensionPatch = sharedExtensionPatch("messenger", mainActivityOnCreateHook)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package app.revanced.patches.messenger.misc.extension
2+
3+
import app.revanced.patches.shared.misc.extension.extensionHook
4+
5+
internal val mainActivityOnCreateHook = extensionHook {
6+
strings("MainActivity_onCreate_begin")
7+
}

patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,12 @@
11
package app.revanced.patches.messenger.navbar
22

33
import app.revanced.patcher.patch.bytecodePatch
4-
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
5-
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
6-
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
4+
import app.revanced.patches.messenger.metaai.removeMetaAIPatch
75

6+
@Deprecated("Superseded by removeMetaAIPatch", ReplaceWith("removeMetaAIPatch"))
87
@Suppress("unused")
98
val removeMetaAITabPatch = bytecodePatch(
10-
name = "Remove Meta AI tab",
119
description = "Removes the 'Meta AI' tab from the navbar.",
1210
) {
13-
compatibleWith("com.facebook.orca")
14-
15-
execute {
16-
createTabConfigurationFingerprint.let {
17-
val moveResultIndex = it.patternMatch!!.startIndex + 1
18-
val enabledRegister = it.method.getInstruction<OneRegisterInstruction>(moveResultIndex).registerA
19-
it.method.replaceInstruction(
20-
moveResultIndex,
21-
"const/4 v$enabledRegister, 0x0"
22-
)
23-
}
24-
}
11+
dependsOn(removeMetaAIPatch)
2512
}

0 commit comments

Comments
 (0)