From fcbca9cf0ff3940c48df53a9e5e4d06d65f9a1b1 Mon Sep 17 00:00:00 2001 From: Jonathan <63370021+FineFindus@users.noreply.github.com> Date: Wed, 16 Nov 2022 00:03:24 +0100 Subject: [PATCH] feat(iconpackstudio): `unlock-pro` patch (#1047) --- .../pro/annotations/UnlockProCompatibility.kt | 9 +++++ .../pro/fingerprints/CheckProFingerprint.kt | 14 +++++++ .../misc/pro/patch/UnlockProPatch.kt | 38 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/annotations/UnlockProCompatibility.kt create mode 100644 src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/fingerprints/CheckProFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/patch/UnlockProPatch.kt diff --git a/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/annotations/UnlockProCompatibility.kt b/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/annotations/UnlockProCompatibility.kt new file mode 100644 index 000000000..649e066b9 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/annotations/UnlockProCompatibility.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.iconpackstudio.misc.pro.annotations + +import app.revanced.patcher.annotation.Compatibility +import app.revanced.patcher.annotation.Package + +@Compatibility([Package("ginlemon.iconpackstudio")]) +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.RUNTIME) +internal annotation class UnlockProCompatibility diff --git a/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/fingerprints/CheckProFingerprint.kt b/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/fingerprints/CheckProFingerprint.kt new file mode 100644 index 000000000..5937d3886 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/fingerprints/CheckProFingerprint.kt @@ -0,0 +1,14 @@ +package app.revanced.patches.iconpackstudio.misc.pro.fingerprints + +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patches.iconpackstudio.misc.pro.annotations.UnlockProCompatibility + +@Name("check-pro-fingerprint") +@UnlockProCompatibility +@Version("0.0.1") +object CheckProFingerprint : MethodFingerprint( + "Z", + customFingerprint = { it.definingClass.endsWith("IPSPurchaseRepository;")} +) diff --git a/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/patch/UnlockProPatch.kt b/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/patch/UnlockProPatch.kt new file mode 100644 index 000000000..a4a2d4f99 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/patch/UnlockProPatch.kt @@ -0,0 +1,38 @@ +package app.revanced.patches.iconpackstudio.misc.pro.patch + +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.addInstructions +import app.revanced.patcher.extensions.removeInstruction +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patches.iconpackstudio.misc.pro.annotations.UnlockProCompatibility +import app.revanced.patches.iconpackstudio.misc.pro.fingerprints.CheckProFingerprint + +@Patch +@Name("unlock-pro") +@Description("Unlocks all pro features.") +@UnlockProCompatibility +@Version("0.0.1") +class UnlockProPatch : BytecodePatch( + listOf( + CheckProFingerprint + ) +) { + override fun execute(context: BytecodeContext): PatchResult { + val method = CheckProFingerprint.result!!.mutableMethod + method.addInstructions( + 0, + """ + const/4 v0, 0x1 + return v0 + """ + ) + + return PatchResultSuccess() + } +}