feat(kakaotalk): update compatibility to version 25.5.1 for multiple patches

This commit is contained in:
2025-06-18 23:11:22 +09:00
parent 8891e2594d
commit cd995636f9
24 changed files with 42 additions and 34 deletions

View File

@ -9,7 +9,7 @@ val removeBizBoardPatch = bytecodePatch(
name = "Remove BizBoard ads",
description = "Removes the BizBoard ad by forcing its dimensions to 0x0 and visibility to GONE in onMeasure.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = measuringBizBoardFingerprint.method

View File

@ -8,7 +8,7 @@ val removeFocusAdPatch = bytecodePatch(
name = "Remove focus ad",
description = "Removes the focus ad from the app.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
loadFocusAdFingerprint.method.addInstructions(

View File

@ -14,7 +14,7 @@ val removeMoreTabAdPatch = bytecodePatch(
name = "Remove More tab ad",
description = "Removes the ad from the More tab.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val addSectionToMoreTabUIMethod = addSectionToMoreTabUIFingerprint.method

View File

@ -8,7 +8,7 @@ val removeNativeAdPatch = bytecodePatch(
name = "Remove native ad",
description = "Removes the native ad from the app.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = loadNativeAdFingerprint.method

View File

@ -10,7 +10,7 @@ val removeOlkChatRoomListAdPatch = bytecodePatch(
name = "Remove OpenLink chat room list ad",
description = "Removes the OpenLink chat room list ad.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val findUnit = kotlinUnitInstanceFingerprint.method

View File

@ -14,7 +14,7 @@ val changeModelPatch = bytecodePatch(
"model", "SM-X926N"
)
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
changeModelFingerprint.method.addInstructions(

View File

@ -13,7 +13,7 @@ val remove99ClampPatch = bytecodePatch(
name = "Disable 99 unread limit",
description = "Skip the 99-cap so unread count shows full value"
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = processWatermarkCountFingerprint.method

View File

@ -13,7 +13,7 @@ val showDeletedMessagePatch = bytecodePatch(
name = "Show deleted messages",
description = "Allows you to see deleted messages in chat logs.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = replaceToFeedFingerprint.method

View File

@ -14,7 +14,7 @@ val remove300PlusLimitBaseChatRoomPatch = bytecodePatch(
name = "Disable 300+ unread limit (BaseChatRoom)",
description = "Always show the real unread count instead of '300+' in base chatroom list"
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = limit300PlusBaseChatRoomFingerprint.method
@ -40,7 +40,7 @@ val remove300PlusLimitOpenChatRoomPatch = bytecodePatch(
name = "Disable 300+ unread limit (OpenChatRoom)",
description = "Always show the real unread count instead of '300+' in open chatroom list"
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = limit300PlusOpenChatRoomFingerprint.method

View File

@ -9,7 +9,7 @@ val forceEnableEmoticonPlusPatch = bytecodePatch(
name = "Force enable emoticon plus feature",
description = "Force enable emoticon plus feature (Unpurchased emoticon can be sent once per day)",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
isEnableEmoticonPlusFingerprint.method.addInstructions(

View File

@ -5,11 +5,13 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val isEnableEmoticonPlusFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Z")
parameters()
strings("emoticonPlusMe")
opcodes(
Opcode.SGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.SGET_OBJECT,
Opcode.IF_EQZ,
Opcode.IGET_BOOLEAN,

View File

@ -10,7 +10,7 @@ val ghostMode = bytecodePatch(
name = "Ghost Mode",
description = "Don't expose your typing status to the other party.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val findUnit = kotlinUnitInstanceFingerprint.method

View File

@ -21,8 +21,6 @@ internal val sendCurrentActionFingerprint = fingerprint {
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.NEW_INSTANCE,

View File

@ -21,7 +21,7 @@ val bypassMoatCheckPatch = bytecodePatch(
name = "Bypass Moat check",
description = "Bypass Moat check that prevents the app from running.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val patch: (Fingerprint) -> Unit = {

View File

@ -10,7 +10,7 @@ val bypassRequestChecksumPatch = bytecodePatch(
name = "Bypass requestChecksums",
description = "Prevents the execution of checksum verification logic by making it return early."
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val findUnit = kotlinUnitInstanceFingerprint.method

View File

@ -9,7 +9,7 @@ val verifyingSignaturePatch = bytecodePatch(
name = "Disable verifying signature",
description = "Disables the signature verification check that prevents the app from running.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
verifyingSignatureFingerprint.method.addInstructions(

View File

@ -8,7 +8,7 @@ internal val moatCheckResultFingerprintOne = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
parameters("Ljava/lang/Object;", "Ljava/lang/Object;", "Ljava/lang/Object;")
returns("Ljava/lang/Object;")
strings("detectResult", "<anonymous parameter 1>", "<anonymous parameter 2>")
strings("detectResult", "<unused var>")
opcodes(
Opcode.CHECK_CAST,
Opcode.CHECK_CAST,
@ -17,7 +17,6 @@ internal val moatCheckResultFingerprintOne = fingerprint {
Opcode.INVOKE_STATIC,
Opcode.CONST_STRING,
Opcode.INVOKE_STATIC,
Opcode.CONST_STRING,
Opcode.INVOKE_STATIC,
Opcode.SGET_OBJECT,
Opcode.SGET_OBJECT,
@ -29,13 +28,14 @@ internal val moatCheckResultFingerprintOne = fingerprint {
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT,
)
custom { method, classDef -> classDef.sourceFile == "PaySecurityWorker.kt" }
}
internal val moatCheckResultFingerprintTwo = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
parameters("Ljava/lang/Object;", "Ljava/lang/Object;", "Ljava/lang/Object;")
returns("Ljava/lang/Object;")
strings("detectResult", "<anonymous parameter 1>", "<anonymous parameter 2>")
strings("detectResult", "<unused var>")
opcodes(
Opcode.CHECK_CAST,
Opcode.CHECK_CAST,
@ -44,7 +44,6 @@ internal val moatCheckResultFingerprintTwo = fingerprint {
Opcode.INVOKE_STATIC,
Opcode.CONST_STRING,
Opcode.INVOKE_STATIC,
Opcode.CONST_STRING,
Opcode.INVOKE_STATIC,
Opcode.CHECK_CAST,
Opcode.NEW_INSTANCE,
@ -56,6 +55,7 @@ internal val moatCheckResultFingerprintTwo = fingerprint {
Opcode.SGET_OBJECT,
Opcode.IF_EQZ,
)
custom { method, classDef -> classDef.sourceFile == "PaySecurityWorker.kt" }
}
internal val postprocessMoatCheckFailedFingerprint = fingerprint {

View File

@ -11,7 +11,6 @@ internal val requestChecksumsFingerprint = fingerprint {
"context"
)
opcodes(
Opcode.CONST_4,
Opcode.INSTANCE_OF,
Opcode.IF_EQZ,
Opcode.MOVE_OBJECT,
@ -28,6 +27,7 @@ internal val requestChecksumsFingerprint = fingerprint {
Opcode.IGET_OBJECT,
Opcode.SGET_OBJECT,
Opcode.IGET,
Opcode.CONST_4,
Opcode.IF_EQZ,
Opcode.IF_NE,
Opcode.INVOKE_STATIC,

View File

@ -11,7 +11,7 @@ val forceEnableDebugModePatch = bytecodePatch(
name = "Force enable debug mode",
description = "Enables debug mode in the app.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = configConstructorFingerprint.method

View File

@ -15,7 +15,7 @@ val removeShopTabPatch = bytecodePatch(
name = "Remove shop tab",
description = "Removes the shop tab from the bottom navigation bar.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val method = addNavigationTabFingerprint.method

View File

@ -8,7 +8,7 @@ internal val configConstructorFingerprint = fingerprint {
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
returns("V")
parameters()
strings("google", "one", "getBytes(...)")
strings("getBytes(...)")
opcodes(
Opcode.SGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
@ -21,4 +21,5 @@ internal val configConstructorFingerprint = fingerprint {
Opcode.MOVE,
Opcode.GOTO,
)
custom { method, classDef -> classDef.sourceFile == "Config.kt" }
}

View File

@ -15,7 +15,7 @@ val allowReplyToFeedPatch = app.revanced.patcher.patch.bytecodePatch(
name = "Allow reply to feed",
description = "Allows replying to feed messages",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val patch: (Fingerprint) -> Unit = { fp ->

View File

@ -17,7 +17,7 @@ val versionInfoPatch = bytecodePatch(
name = "Version info patch",
description = "Patches the version info to include '(ReVanced)' in the version string.",
) {
compatibleWith("com.kakao.talk"("25.4.3"))
compatibleWith("com.kakao.talk"("25.5.1"))
execute {
val runPatch: (Fingerprint, Boolean) -> Unit = { fp, inDetail ->

View File

@ -5,16 +5,23 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val versionInfoFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC, AccessFlags.FINAL)
returns("V")
opcodes(
Opcode.INVOKE_DIRECT,
Opcode.CONST,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.AND_INT_LIT8,
Opcode.CONST_STRING,
Opcode.IPUT_OBJECT,
Opcode.IPUT_BOOLEAN,
Opcode.IPUT_OBJECT,
Opcode.RETURN_VOID,
Opcode.CONST_4,
Opcode.IF_NEZ,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
Opcode.CONST_4,
Opcode.GOTO
)
custom { method, classDef -> classDef.sourceFile == "VersionSettingItem.kt" }
}
internal val versionInfoPreviewFingerprint = fingerprint {