diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/VersionInfoPatch.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/VersionInfoPatch.kt index 435c88c78..b2839f6fb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/VersionInfoPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/VersionInfoPatch.kt @@ -1,10 +1,12 @@ package app.revanced.patches.kakaotalk.versioninfo +import app.revanced.patcher.Fingerprint import app.revanced.patcher.extensions.InstructionExtensions.instructions import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.patch.Package import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.kakaotalk.versioninfo.fingerprints.versionInfoFingerprint +import app.revanced.patches.kakaotalk.versioninfo.fingerprints.versionInfoPreviewFingerprint import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21c import com.android.tools.smali.dexlib2.iface.reference.StringReference @@ -18,24 +20,29 @@ val versionInfoPatch = bytecodePatch( compatibleWith(Package("com.kakao.talk", setOf("25.3.5"))) execute { - val inst = versionInfoFingerprint.method.instructions - .filterIsInstance() - .first { - it.opcode == Opcode.CONST_STRING - } + val runPatch: (Fingerprint) -> Unit = { + val versionInfo = it.method.instructions + .filterIsInstance() + .first { + it.opcode == Opcode.CONST_STRING + } - val versionString = (inst.reference as StringReference).string + val versionString = (versionInfo.reference as StringReference).string - versionInfoFingerprint.method - .replaceInstruction( - inst.location.index, - BuilderInstruction21c( - Opcode.CONST_STRING, - inst.registerA, - ImmutableStringReference( - "$versionString (ReVanced)" + it.method + .replaceInstruction( + versionInfo.location.index, + BuilderInstruction21c( + Opcode.CONST_STRING, + versionInfo.registerA, + ImmutableStringReference( + "$versionString (ReVanced)" + ) ) ) - ) + } + + runPatch(versionInfoFingerprint) + runPatch(versionInfoPreviewFingerprint) } } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/fingerprints/VersionInfoFingerprint.kt b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/fingerprints/VersionInfoFingerprint.kt index 713f6494d..1d47477a5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/fingerprints/VersionInfoFingerprint.kt +++ b/patches/src/main/kotlin/app/revanced/patches/kakaotalk/versioninfo/fingerprints/VersionInfoFingerprint.kt @@ -15,4 +15,23 @@ internal val versionInfoFingerprint = fingerprint { Opcode.IPUT_OBJECT, Opcode.RETURN_VOID, ) +} + +internal val versionInfoPreviewFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + parameters() + returns("Ljava/lang/String;") + opcodes( + Opcode.CONST_STRING, + Opcode.SGET_OBJECT, + Opcode.INVOKE_VIRTUAL, + Opcode.NEW_INSTANCE, + Opcode.CONST_4, + Opcode.CONST_4, + Opcode.INVOKE_DIRECT, + Opcode.SGET_OBJECT, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.CHECK_CAST, + ) } \ No newline at end of file