feat(kakaotalk): Add Ghost Mode patch to hide typing status

This commit is contained in:
2025-05-14 13:48:43 +09:00
parent cb23e62f48
commit 8ade9e8802
3 changed files with 61 additions and 0 deletions

View File

@ -261,6 +261,10 @@ public final class app/revanced/patches/kakaotalk/emoticon/ForceEnableEmoticonPl
public static final fun getForceEnableEmoticonPlusPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/kakaotalk/ghost/GhostModePatchKt {
public static final fun getGhostMode ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/kakaotalk/misc/RemoveShopTabPatchKt {
public static final fun getRemoveShopTabPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}

View File

@ -0,0 +1,25 @@
package app.revanced.patches.kakaotalk.ghost
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.kakaotalk.ghost.fingerprints.ghostModeFingerprint
@Suppress("unused")
val ghostMode = bytecodePatch(
name = "Ghost Mode",
description = "Don't expose your typing status to the other party.",
) {
compatibleWith("com.kakao.talk"("25.4.0"))
execute {
val method = ghostModeFingerprint.method
method.addInstructions(
0,
"""
sget-object v0, Lnk0/C;->a:Lnk0/C;
return-object v0
""".trimIndent()
)
}
}

View File

@ -0,0 +1,32 @@
package app.revanced.patches.kakaotalk.ghost.fingerprints
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val ghostModeFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Ljava/lang/Object;")
parameters("Ljava/lang/Object;")
strings(
"method",
"chatId",
"type",
"linkId"
)
opcodes(
Opcode.SGET_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.NEW_INSTANCE,
Opcode.IGET_WIDE,
Opcode.INVOKE_DIRECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_WIDE,
Opcode.CONST_WIDE_16,
Opcode.CMP_LONG,
Opcode.IF_GEZ,
Opcode.GOTO
)
}