From 555099bef8b1a75abc40ac369cd5e1b2a62a374f Mon Sep 17 00:00:00 2001 From: naijun0403 Date: Mon, 26 May 2025 02:03:26 +0900 Subject: [PATCH] feat(kakaotalk): add patch to include real deleted and hidden flags in chat log This is the first commit to make deleted, hidden messages visible. --- patches/api/patches.api | 4 ++ .../AddRealDeletedOrHiddenFlagPatch.kt | 47 +++++++++++++++++++ .../fingerprints/ChatLogFingerprint.kt | 14 ++++++ 3 files changed, 65 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/AddRealDeletedOrHiddenFlagPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/fingerprints/ChatLogFingerprint.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 57f1faea3..f35624a96 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -272,6 +272,10 @@ public final class app/revanced/patches/kakaotalk/changemodel/ChangeModelPatchKt public static final fun getChangeModelPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/kakaotalk/chatlog/AddRealDeletedOrHiddenFlagPatchKt { + public static final fun getAddRealDeletedOrHiddenFlagPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/kakaotalk/chatlog/Remove99ClampPatchKt { public static final fun getRemove99ClampPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/AddRealDeletedOrHiddenFlagPatch.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/AddRealDeletedOrHiddenFlagPatch.kt new file mode 100644 index 000000000..02ee64dbf --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/AddRealDeletedOrHiddenFlagPatch.kt @@ -0,0 +1,47 @@ +package app.revanced.patches.kakaotalk.chatlog + +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable +import app.revanced.patches.kakaotalk.chatlog.fingerprints.chatLogFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.immutable.ImmutableField +import com.android.tools.smali.dexlib2.immutable.value.ImmutableBooleanEncodedValue + +val addRealDeletedOrHiddenFlagPatch = bytecodePatch( + name = "Add real deleted or hidden flag", + description = "Add real deleted or hidden flag to chat log", +) { + compatibleWith("com.kakao.talk"("25.4.2")) + + execute { + val chatLogClass = proxy(classes.first { + it.type == chatLogFingerprint.method.definingClass + }).mutableClass + + chatLogClass.apply { + fields.add( + ImmutableField( + type, + "isRealDeleted", + "Z", + AccessFlags.PUBLIC.value, + ImmutableBooleanEncodedValue.FALSE_VALUE, + null, + null + ).toMutable(), + ) + + fields.add( + ImmutableField( + type, + "isHidden", + "Z", + AccessFlags.PUBLIC.value, + ImmutableBooleanEncodedValue.FALSE_VALUE, + null, + null + ).toMutable(), + ) + } + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/fingerprints/ChatLogFingerprint.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/fingerprints/ChatLogFingerprint.kt new file mode 100644 index 000000000..8cbcba33b --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/chatlog/fingerprints/ChatLogFingerprint.kt @@ -0,0 +1,14 @@ +package app.revanced.patches.kakaotalk.chatlog.fingerprints + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal val chatLogFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC) + returns("Ljava/lang/String;") + parameters() + strings( + "[class:", + "] ChatLog [id=", + ) +} \ No newline at end of file