From e18a9bcb50705d374ccbf03cd6ab9a140a2f23ec Mon Sep 17 00:00:00 2001 From: Aunali321 <48486084+Aunali321@users.noreply.github.com> Date: Thu, 3 Aug 2023 21:46:30 +0530 Subject: [PATCH] feat(Lightroom): Add `Unlock premium` patch (#2740) Co-authored-by: oSumAtrIX --- .../annotations/UnlockPremiumCompatibility.kt | 8 ++++++ .../fingerprint/HasPurchasedFingerprint.kt | 18 +++++++++++++ .../misc/premium/patch/UnlockPremiumPatch.kt | 27 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/lightroom/misc/premium/annotations/UnlockPremiumCompatibility.kt create mode 100644 src/main/kotlin/app/revanced/patches/lightroom/misc/premium/fingerprint/HasPurchasedFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/lightroom/misc/premium/patch/UnlockPremiumPatch.kt diff --git a/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/annotations/UnlockPremiumCompatibility.kt b/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/annotations/UnlockPremiumCompatibility.kt new file mode 100644 index 000000000..1c03bff62 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/annotations/UnlockPremiumCompatibility.kt @@ -0,0 +1,8 @@ +package app.revanced.patches.lightroom.misc.premium.annotations + +import app.revanced.patcher.annotation.Compatibility +import app.revanced.patcher.annotation.Package + +@Compatibility([Package("com.adobe.lrmobile")]) +@Target(AnnotationTarget.CLASS) +internal annotation class UnlockPremiumCompatibility diff --git a/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/fingerprint/HasPurchasedFingerprint.kt b/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/fingerprint/HasPurchasedFingerprint.kt new file mode 100644 index 000000000..a56881fd0 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/fingerprint/HasPurchasedFingerprint.kt @@ -0,0 +1,18 @@ +package app.revanced.patches.lightroom.misc.premium.fingerprint + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import org.jf.dexlib2.AccessFlags +import org.jf.dexlib2.Opcode + +object HasPurchasedFingerprint : MethodFingerprint( + returnType = "Z", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, + strings = listOf("isPurchaseDoneRecently = true, access platform profile present? = "), + opcodes = listOf( + Opcode.SGET_OBJECT, + Opcode.CONST_4, + Opcode.CONST_4, + Opcode.CONST_4, + ) +) diff --git a/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/patch/UnlockPremiumPatch.kt b/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/patch/UnlockPremiumPatch.kt new file mode 100644 index 000000000..ccd59536b --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/patch/UnlockPremiumPatch.kt @@ -0,0 +1,27 @@ +package app.revanced.patches.lightroom.misc.premium.patch + +import app.revanced.extensions.toErrorResult +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +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.lightroom.misc.premium.annotations.UnlockPremiumCompatibility +import app.revanced.patches.lightroom.misc.premium.fingerprint.HasPurchasedFingerprint + +@Patch +@Name("Unlock premium") +@Description("Unlocks premium features.") +@UnlockPremiumCompatibility +class UnlockPremiumPatch : BytecodePatch(listOf(HasPurchasedFingerprint)) { + override fun execute(context: BytecodeContext): PatchResult { + // Set hasPremium = true. + HasPurchasedFingerprint.result?.mutableMethod?.replaceInstruction(2, "const/4 v2, 0x1") + ?: throw HasPurchasedFingerprint.toErrorResult() + + return PatchResultSuccess() + } +} \ No newline at end of file