Skip to content

Commit

Permalink
fix(Relay for Reddit - Spoof client): Prevent OAuth login being disab…
Browse files Browse the repository at this point in the history
…led remotely
  • Loading branch information
oSumAtrIX committed Oct 5, 2023
1 parent a4145d2 commit a0aa2be
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -28,7 +31,10 @@ object SpoofClientPatch : AbstractSpoofClientPatch(
GetLoggedOutBearerTokenFingerprint,
GetRefreshTokenFingerprint
),
miscellaneousFingerprints = listOf(SetRemoteConfigFingerprint)
miscellaneousFingerprints = listOf(
SetRemoteConfigFingerprint,
RedditCheckDisableAPIFingerprint
)
) {
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
forEach {
Expand All @@ -44,7 +50,24 @@ object SpoofClientPatch : AbstractSpoofClientPatch(
}
}

override fun List<MethodFingerprintResult>.patchMiscellaneous(context: BytecodeContext) =
// Do not load remote config which disables OAuth login remotely
override fun List<MethodFingerprintResult>.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<BuilderInstruction21t>(checkIsOAuthRequestIndex).target
replaceInstruction(
checkIsOAuthRequestIndex,
BuilderInstruction10t(
Opcode.GOTO,
returnNextChain
)
)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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)
)

0 comments on commit a0aa2be

Please sign in to comment.