fix(Relay - Spoof client): Restore OAuth login
This commit is contained in:
parent
f355dbf1d2
commit
96e01f7a7b
|
@ -14,9 +14,11 @@ abstract class AbstractSpoofClientPatch(
|
||||||
private val redirectUri: String,
|
private val redirectUri: String,
|
||||||
private val clientIdFingerprints: List<MethodFingerprint>,
|
private val clientIdFingerprints: List<MethodFingerprint>,
|
||||||
private val userAgentFingerprints: List<MethodFingerprint>? = null,
|
private val userAgentFingerprints: List<MethodFingerprint>? = null,
|
||||||
|
private val miscellaneousFingerprints: List<MethodFingerprint>? = null
|
||||||
) : BytecodePatch(buildSet {
|
) : BytecodePatch(buildSet {
|
||||||
addAll(clientIdFingerprints)
|
addAll(clientIdFingerprints)
|
||||||
userAgentFingerprints?.let(::addAll)
|
userAgentFingerprints?.let(::addAll)
|
||||||
|
miscellaneousFingerprints?.let(::addAll)
|
||||||
}) {
|
}) {
|
||||||
var clientId by stringPatchOption(
|
var clientId by stringPatchOption(
|
||||||
"client-id",
|
"client-id",
|
||||||
|
@ -56,10 +58,12 @@ abstract class AbstractSpoofClientPatch(
|
||||||
|
|
||||||
clientIdFingerprints.executePatch { patchClientId(context) }
|
clientIdFingerprints.executePatch { patchClientId(context) }
|
||||||
userAgentFingerprints.executePatch { patchUserAgent(context) }
|
userAgentFingerprints.executePatch { patchUserAgent(context) }
|
||||||
|
miscellaneousFingerprints.executePatch { patchMiscellaneous(context) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Patch the client ID. The fingerprints are guaranteed to be in the same order as in [clientIdFingerprints].
|
* Patch the client ID.
|
||||||
|
* The fingerprints are guaranteed to be in the same order as in [clientIdFingerprints].
|
||||||
*
|
*
|
||||||
* @param context The current [BytecodeContext].
|
* @param context The current [BytecodeContext].
|
||||||
*
|
*
|
||||||
|
@ -67,10 +71,19 @@ abstract class AbstractSpoofClientPatch(
|
||||||
abstract fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext)
|
abstract fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Patch the user agent. The fingerprints are guaranteed to be in the same order as in [userAgentFingerprints].
|
* Patch the user agent.
|
||||||
|
* The fingerprints are guaranteed to be in the same order as in [userAgentFingerprints].
|
||||||
*
|
*
|
||||||
* @param context The current [BytecodeContext].
|
* @param context The current [BytecodeContext].
|
||||||
*/
|
*/
|
||||||
// Not every client needs to patch the user agent.
|
// Not every client needs to patch the user agent.
|
||||||
open fun List<MethodFingerprintResult>.patchUserAgent(context: BytecodeContext) {}
|
open fun List<MethodFingerprintResult>.patchUserAgent(context: BytecodeContext) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Patch miscellaneous things such as protection measures.
|
||||||
|
* The fingerprints are guaranteed to be in the same order as in [miscellaneousFingerprints].
|
||||||
|
*
|
||||||
|
* @param context The current [BytecodeContext].
|
||||||
|
*/
|
||||||
|
open fun List<MethodFingerprintResult>.patchMiscellaneous(context: BytecodeContext) { }
|
||||||
}
|
}
|
|
@ -1,16 +1,14 @@
|
||||||
package app.revanced.patches.reddit.customclients.relayforreddit.api
|
package app.revanced.patches.reddit.customclients.relayforreddit.api
|
||||||
|
|
||||||
import app.revanced.patcher.data.BytecodeContext
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprintResult
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprintResult
|
||||||
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
||||||
import app.revanced.patcher.patch.annotation.Patch
|
import app.revanced.patcher.patch.annotation.Patch
|
||||||
import app.revanced.patches.reddit.customclients.AbstractSpoofClientPatch
|
import app.revanced.patches.reddit.customclients.AbstractSpoofClientPatch
|
||||||
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetLoggedInBearerTokenFingerprint
|
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.*
|
||||||
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetLoggedOutBearerTokenFingerprint
|
|
||||||
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetRefreshTokenFingerprint
|
|
||||||
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.LoginActivityClientIdFingerprint
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
|
||||||
@Patch(
|
@Patch(
|
||||||
|
@ -31,7 +29,8 @@ object SpoofClientPatch : AbstractSpoofClientPatch(
|
||||||
GetLoggedInBearerTokenFingerprint,
|
GetLoggedInBearerTokenFingerprint,
|
||||||
GetLoggedOutBearerTokenFingerprint,
|
GetLoggedOutBearerTokenFingerprint,
|
||||||
GetRefreshTokenFingerprint
|
GetRefreshTokenFingerprint
|
||||||
)
|
),
|
||||||
|
miscellaneousFingerprints = listOf(SetRemoteConfigFingerprint)
|
||||||
) {
|
) {
|
||||||
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
|
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
|
||||||
forEach {
|
forEach {
|
||||||
|
@ -46,4 +45,8 @@ object SpoofClientPatch : AbstractSpoofClientPatch(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun List<MethodFingerprintResult>.patchMiscellaneous(context: BytecodeContext) =
|
||||||
|
// Do not load remote config which disables OAuth login remotely
|
||||||
|
first().mutableMethod.addInstructions(0, "return-void")
|
||||||
}
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
|
||||||
|
object SetRemoteConfigFingerprint : MethodFingerprint(
|
||||||
|
strings = listOf("reddit_oauth_url"),
|
||||||
|
parameters = listOf("Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;")
|
||||||
|
)
|
Loading…
Reference in a new issue