diff --git a/patches/api/patches.api b/patches/api/patches.api index c8438af90..83f2197be 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1188,6 +1188,10 @@ public final class app/revanced/patches/stocard/layout/HideStoryBubblesPatchKt { public static final fun getHideStoryBubblesPatch ()Lapp/revanced/patcher/patch/ResourcePatch; } +public final class app/revanced/patches/strava/password/EnablePasswordLoginPatchKt { + public static final fun getEnablePasswordLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/strava/subscription/UnlockSubscriptionPatchKt { public static final fun getUnlockSubscriptionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/password/EnablePasswordLoginPatch.kt b/patches/src/main/kotlin/app/revanced/patches/strava/password/EnablePasswordLoginPatch.kt new file mode 100644 index 000000000..1d6a62569 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/strava/password/EnablePasswordLoginPatch.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.strava.password + +import app.revanced.patcher.Fingerprint +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.patch.bytecodePatch + +@Suppress("unused") +val enablePasswordLoginPatch = bytecodePatch( + name = "Enable password login", + description = "Re-enables password login after having used an OTP code.", +) { + compatibleWith("com.strava") + + execute { + fun Fingerprint.loadTrueInsteadOfField() = + method.replaceInstruction(patternMatch!!.startIndex, "const/4 v0, 0x1") + + logInGetUsePasswordFingerprint.loadTrueInsteadOfField() + emailChangeGetUsePasswordFingerprint.loadTrueInsteadOfField() + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt new file mode 100644 index 000000000..f5ce86f18 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt @@ -0,0 +1,18 @@ +package app.revanced.patches.strava.password + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.Opcode + +internal val logInGetUsePasswordFingerprint = fingerprint { + opcodes(Opcode.IGET_BOOLEAN) + custom { method, classDef -> + method.name == "getUsePassword" && classDef.endsWith("/RequestOtpLogInNetworkResponse;") + } +} + +internal val emailChangeGetUsePasswordFingerprint = fingerprint { + opcodes(Opcode.IGET_BOOLEAN) + custom { method, classDef -> + method.name == "getUsePassword" && classDef.endsWith("/RequestEmailChangeWithOtpOrPasswordResponse;") + } +}