From a710f05bb46156e66ca56aa4731e1028f459c414 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sun, 8 Oct 2023 02:56:30 +0200 Subject: [PATCH] fix(Infinity for Reddit - Spoof client): Set user-agent for OAuth requests to fix login --- .../infinityforreddit/api/SpoofClientPatch.kt | 20 ++++++++++++++++++- .../SetWebViewSettingsFingerprint.kt | 7 +++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/fingerprints/SetWebViewSettingsFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/SpoofClientPatch.kt index 5a2a7e968..ea1378dfb 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/SpoofClientPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/SpoofClientPatch.kt @@ -1,14 +1,17 @@ package app.revanced.patches.reddit.customclients.infinityforreddit.api 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.replaceInstruction import app.revanced.patcher.fingerprint.method.impl.MethodFingerprintResult 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.Constants.OAUTH_USER_AGENT import app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints.GetHttpBasicAuthHeaderFingerprint import app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints.LoginActivityOnCreateFingerprint +import app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints.SetWebViewSettingsFingerprint import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( @@ -32,7 +35,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Suppress("unused") object SpoofClientPatch : AbstractSpoofClientPatch( "infinity://localhost", - listOf(GetHttpBasicAuthHeaderFingerprint, LoginActivityOnCreateFingerprint) + clientIdFingerprints = listOf(GetHttpBasicAuthHeaderFingerprint, LoginActivityOnCreateFingerprint), + userAgentFingerprints = listOf(SetWebViewSettingsFingerprint) ) { override fun List.patchClientId(context: BytecodeContext) { forEach { @@ -48,4 +52,18 @@ object SpoofClientPatch : AbstractSpoofClientPatch( } } } + + override fun List.patchUserAgent(context: BytecodeContext) { + first().let { result -> + val insertIndex = result.scanResult.stringsScanResult!!.matches.first().index + + result.mutableMethod.addInstructions( + insertIndex, + """ + const-string v0, "$OAUTH_USER_AGENT" + invoke-virtual {p1, v0}, Landroid/webkit/WebSettings;->setUserAgentString(Ljava/lang/String;)V + """ + ) + } + } } diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/fingerprints/SetWebViewSettingsFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/fingerprints/SetWebViewSettingsFingerprint.kt new file mode 100644 index 000000000..c9e015c27 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/fingerprints/SetWebViewSettingsFingerprint.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object SetWebViewSettingsFingerprint : MethodFingerprint( + strings= listOf("https://www.reddit.com/api/v1/authorize.compact") +) \ No newline at end of file