From 0693212ba568b58ad9fcddebe30ca5f7604eec7d Mon Sep 17 00:00:00 2001 From: naijun0403 Date: Sat, 3 May 2025 19:25:46 +0900 Subject: [PATCH] feat(kakaotalk): Add patches for changing device model and disabling signature verification --- .../kakaotalk/changemodel/ChangeModelPatch.kt | 29 +++++++++++++++++++ .../fingerprints/ChangeModelFingerprint.kt | 12 ++++++++ .../signature/VerifyingSignaturePatch.kt | 24 +++++++++++++++ .../VerifyingSignatureFingerprint.kt | 12 ++++++++ 4 files changed, 77 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/ChangeModelPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/fingerprints/ChangeModelFingerprint.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/VerifyingSignaturePatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/fingerprints/VerifyingSignatureFingerprint.kt diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/ChangeModelPatch.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/ChangeModelPatch.kt new file mode 100644 index 000000000..87bdfd1d7 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/ChangeModelPatch.kt @@ -0,0 +1,29 @@ +package app.revanced.patches.kakaotalk.changemodel + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.Package +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.patch.stringOption +import app.revanced.patches.kakaotalk.changemodel.fingerprints.changeModelFingerprint + +@Suppress("unused") +val changeModelPatch = bytecodePatch( + name = "Change model", + description = "Changes the device model to supporting subdevice features", +) { + val changeModelOption = stringOption( + "model", "SM-X926N" + ) + + compatibleWith(Package("com.kakao.talk", setOf("25.3.5"))) + + execute { + changeModelFingerprint.method.addInstructions( + 0, + """ + const-string v0, "${changeModelOption.value}" + return-object v0 + """.trimIndent() + ) + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/fingerprints/ChangeModelFingerprint.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/fingerprints/ChangeModelFingerprint.kt new file mode 100644 index 000000000..8d59e0fad --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/changemodel/fingerprints/ChangeModelFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.kakaotalk.changemodel.fingerprints + +import app.revanced.patcher.fingerprint + +@Suppress("unused") +internal val changeModelFingerprint = fingerprint { + strings("MODEL", "\\s", "-", "US", "toUpperCase(...)") + custom { + _, classDef -> + classDef.methods.indexOf(classDef.methods.last()) > 2 + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/VerifyingSignaturePatch.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/VerifyingSignaturePatch.kt new file mode 100644 index 000000000..fb200a087 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/VerifyingSignaturePatch.kt @@ -0,0 +1,24 @@ +package app.revanced.patches.kakaotalk.signature + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.Package +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.memegenerator.detection.signature.verifySignatureFingerprint + +@Suppress("unused") +val verifyingSignaturePatch = bytecodePatch( + name = "Disable verifying signature", + description = "Disables the signature verification check that prevents the app from running.", +) { + compatibleWith(Package("com.kakao.talk", setOf("25.3.5"))) + + execute { + verifySignatureFingerprint.method.addInstructions( + 0, + """ + const/4 v0, 0x1 + return v0 + """.trimIndent() + ) + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/fingerprints/VerifyingSignatureFingerprint.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/fingerprints/VerifyingSignatureFingerprint.kt new file mode 100644 index 000000000..d5bfb8aa5 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/signature/fingerprints/VerifyingSignatureFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.kakaotalk.signature.fingerprints + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +@Suppress("unused") +internal val verifyingSignatureFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) + returns("Z") + parameters() + strings("getPackageName(...)") +} \ No newline at end of file