diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/SpoofClientPatch.kt index 690e1786..1606817c 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/SpoofClientPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/SpoofClientPatch.kt @@ -9,6 +9,9 @@ import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.reddit.customclients.AbstractSpoofClientPatch import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.* +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction10t +import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21t import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( @@ -28,7 +31,10 @@ object SpoofClientPatch : AbstractSpoofClientPatch( GetLoggedOutBearerTokenFingerprint, GetRefreshTokenFingerprint ), - miscellaneousFingerprints = listOf(SetRemoteConfigFingerprint) + miscellaneousFingerprints = listOf( + SetRemoteConfigFingerprint, + RedditCheckDisableAPIFingerprint + ) ) { override fun List.patchClientId(context: BytecodeContext) { forEach { @@ -44,7 +50,24 @@ object SpoofClientPatch : AbstractSpoofClientPatch( } } - override fun List.patchMiscellaneous(context: BytecodeContext) = - // Do not load remote config which disables OAuth login remotely + override fun List.patchMiscellaneous(context: BytecodeContext) { + // Do not load remote config which disables OAuth login remotely. first().mutableMethod.addInstructions(0, "return-void") + + // Prevent OAuth login being disabled remotely. + last().let { + val checkIsOAuthRequestIndex = it.scanResult.patternScanResult!!.startIndex + + it.mutableMethod.apply { + val returnNextChain = getInstruction(checkIsOAuthRequestIndex).target + replaceInstruction( + checkIsOAuthRequestIndex, + BuilderInstruction10t( + Opcode.GOTO, + returnNextChain + ) + ) + } + } + } } \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/fingerprints/RedditCheckDisableAPIFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/fingerprints/RedditCheckDisableAPIFingerprint.kt new file mode 100644 index 00000000..fc0cee33 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/fingerprints/RedditCheckDisableAPIFingerprint.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import com.android.tools.smali.dexlib2.Opcode + +object RedditCheckDisableAPIFingerprint : MethodFingerprint( + strings = listOf("Reddit Disabled"), + opcodes = listOf(Opcode.IF_EQZ) +) \ No newline at end of file