Merge pull request 'feat(kakaotalk): update compatibility to version 25.5.1 for multiple patches' (#5) from kakaotalk-dev into main
Reviewed-on: #5
This commit is contained in:
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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
|
||||
|
@ -12,8 +12,9 @@ import com.android.tools.smali.dexlib2.Opcode
|
||||
val showDeletedMessagePatch = bytecodePatch(
|
||||
name = "Show deleted messages",
|
||||
description = "Allows you to see deleted messages in chat logs.",
|
||||
use = false // FIXME: We haven't solved the problem of duplicate prefixes for deleted messages yet, as it was becoming an eyesore, so we temporarily disabled it.
|
||||
) {
|
||||
compatibleWith("com.kakao.talk"("25.4.3"))
|
||||
compatibleWith("com.kakao.talk"("25.5.1"))
|
||||
|
||||
execute {
|
||||
val method = replaceToFeedFingerprint.method
|
||||
|
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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 = {
|
||||
|
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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 {
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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" }
|
||||
}
|
@ -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 ->
|
||||
|
@ -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 ->
|
||||
|
@ -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 {
|
||||
|
Reference in New Issue
Block a user