From 92d78576f033dd7155c80cb08d5911048b06c36c Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 30 Dec 2022 05:13:28 +0100 Subject: [PATCH] fix(tasker/unlock-license): resolve fingerprint correctly --- .../fingerprints/CheckLicenseFingerprint.kt | 9 +----- .../unlock/patch/UnlockLicensePatch.kt | 30 +++++-------------- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/tasker/license/unlock/fingerprints/CheckLicenseFingerprint.kt b/src/main/kotlin/app/revanced/patches/tasker/license/unlock/fingerprints/CheckLicenseFingerprint.kt index 566a8389..737ef26a 100644 --- a/src/main/kotlin/app/revanced/patches/tasker/license/unlock/fingerprints/CheckLicenseFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/tasker/license/unlock/fingerprints/CheckLicenseFingerprint.kt @@ -1,14 +1,7 @@ package app.revanced.patches.tasker.license.unlock.fingerprints import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import org.jf.dexlib2.Opcode object CheckLicenseFingerprint : MethodFingerprint( - strings = listOf("just(IsLicensedResult(true))"), - opcodes = listOf( - Opcode.GOTO, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_VIRTUAL - ) + strings = listOf("Can't check license") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/tasker/license/unlock/patch/UnlockLicensePatch.kt b/src/main/kotlin/app/revanced/patches/tasker/license/unlock/patch/UnlockLicensePatch.kt index 458a4cc0..58e678dd 100644 --- a/src/main/kotlin/app/revanced/patches/tasker/license/unlock/patch/UnlockLicensePatch.kt +++ b/src/main/kotlin/app/revanced/patches/tasker/license/unlock/patch/UnlockLicensePatch.kt @@ -5,16 +5,12 @@ 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.instruction +import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.Patch import app.revanced.patches.tasker.license.unlock.annotations.UnlockLicenseCompatibility import app.revanced.patches.tasker.license.unlock.fingerprints.CheckLicenseFingerprint -import org.jf.dexlib2.iface.instruction.FiveRegisterInstruction -import org.jf.dexlib2.iface.instruction.ReferenceInstruction -import org.jf.dexlib2.iface.reference.MethodReference -import org.jf.dexlib2.immutable.instruction.ImmutableInstruction35c @Patch @Name("unlock-license") @@ -26,21 +22,11 @@ class UnlockLicensePatch : BytecodePatch( CheckLicenseFingerprint ) ) { - override fun execute(context: BytecodeContext) = CheckLicenseFingerprint.result?.let { result -> - val patchIndex = result.scanResult.patternScanResult!!.endIndex - - with(result.mutableMethod.instruction(patchIndex) as FiveRegisterInstruction) { - ImmutableInstruction35c( - opcode, - registerCount, - registerC, - 0, // registerE is 1, registerD is now 0 instead of 1 bypassing the license verification - registerE, - registerF, - registerG, - (this as ReferenceInstruction).reference as MethodReference - ) - } - PatchResultSuccess() - } ?: CheckLicenseFingerprint.toErrorResult() + override fun execute(context: BytecodeContext) = CheckLicenseFingerprint + .result + ?.mutableMethod + // Return the method early, which prompts the user with a non dismissible dialog, when the trial period is over. + ?.addInstruction(0, "return-void") + ?.let { PatchResultSuccess() } + ?: CheckLicenseFingerprint.toErrorResult() } \ No newline at end of file