From 4b49e24ea7251ee7b722ed6a3545b31e4cd79cc1 Mon Sep 17 00:00:00 2001 From: josesilveiraa <85128820+josesilveiraa@users.noreply.github.com> Date: Sat, 26 Nov 2022 11:10:09 -0300 Subject: [PATCH] feat(citra): `premium-unlock` patch (#1115) Co-authored-by: oSumAtrIX --- .../annotations/PremiumUnlockCompatbility.kt | 7 ++++ .../fingerprints/PremiumUnlockFingerprint.kt | 7 ++++ .../misc/premium/patch/PremiumUnlockPatch.kt | 37 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/citra/misc/premium/annotations/PremiumUnlockCompatbility.kt create mode 100644 src/main/kotlin/app/revanced/patches/citra/misc/premium/fingerprints/PremiumUnlockFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/citra/misc/premium/patch/PremiumUnlockPatch.kt diff --git a/src/main/kotlin/app/revanced/patches/citra/misc/premium/annotations/PremiumUnlockCompatbility.kt b/src/main/kotlin/app/revanced/patches/citra/misc/premium/annotations/PremiumUnlockCompatbility.kt new file mode 100644 index 000000000..be23f1d38 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/citra/misc/premium/annotations/PremiumUnlockCompatbility.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.citra.misc.premium.annotations + +import app.revanced.patcher.annotation.Compatibility +import app.revanced.patcher.annotation.Package + +@Compatibility([Package("org.citra.citra_emu")]) +internal annotation class PremiumUnlockCompatbility \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/citra/misc/premium/fingerprints/PremiumUnlockFingerprint.kt b/src/main/kotlin/app/revanced/patches/citra/misc/premium/fingerprints/PremiumUnlockFingerprint.kt new file mode 100644 index 000000000..347c31a2d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/citra/misc/premium/fingerprints/PremiumUnlockFingerprint.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.citra.misc.premium.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object PremiumUnlockFingerprint : MethodFingerprint( + customFingerprint = { it.definingClass == "Lorg/citra/citra_emu/ui/main/MainActivity;" && it.name == "isPremiumActive" } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/citra/misc/premium/patch/PremiumUnlockPatch.kt b/src/main/kotlin/app/revanced/patches/citra/misc/premium/patch/PremiumUnlockPatch.kt new file mode 100644 index 000000000..10d4eebea --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/citra/misc/premium/patch/PremiumUnlockPatch.kt @@ -0,0 +1,37 @@ +package app.revanced.patches.citra.misc.premium.patch + +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.MethodFingerprintExtensions.name +import app.revanced.patcher.extensions.addInstructions +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patches.citra.misc.premium.annotations.PremiumUnlockCompatbility +import app.revanced.patches.citra.misc.premium.fingerprints.PremiumUnlockFingerprint + +@Patch +@Name("premium-unlock") +@Description("Unlocks premium functions.") +@PremiumUnlockCompatbility +@Version("0.0.1") +class PremiumUnlockPatch : BytecodePatch( + listOf(PremiumUnlockFingerprint) +) { + override fun execute(context: BytecodeContext): PatchResult { + val result = PremiumUnlockFingerprint.result ?: return PatchResultError("${PremiumUnlockFingerprint.name} not found") + + result.mutableMethod.addInstructions( + 0, + """ + const v0, 0x1 + return v0 + """ + ) + return PatchResultSuccess() + } +} \ No newline at end of file