fix(Infinity for Reddit - Spoof client): Support latest version

This commit is contained in:
oSumAtrIX 2023-08-28 20:20:04 +02:00
parent cae754d66c
commit 8a5311b1e6
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
4 changed files with 18 additions and 16 deletions

View File

@ -1,12 +1,17 @@
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.iface.ClassDef
import com.android.tools.smali.dexlib2.iface.Method
abstract class AbstractClientIdFingerprint(classTypeSuffix: String, methodName: String) : MethodFingerprint( /**
strings = listOf("NOe2iKrPPzwscA"), * Fingerprint for a method that has the client id hardcoded in it.
customFingerprint = custom@{ methodDef, classDef -> * The first string in the fingerprint is the client id.
if (!classDef.type.endsWith(classTypeSuffix)) return@custom false *
* @param customFingerprint A custom fingerprint.
methodDef.name == methodName * @param additionalStrings Additional strings to add to the fingerprint.
} */
) abstract class AbstractClientIdFingerprint(
customFingerprint: ((methodDef: Method, classDef: ClassDef) -> Boolean)? = null,
vararg additionalStrings: String
) : MethodFingerprint(strings = listOf("NOe2iKrPPzwscA", *additionalStrings), customFingerprint = customFingerprint)

View File

@ -1,6 +1,3 @@
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
object GetHttpBasicAuthHeaderFingerprint : AbstractClientIdFingerprint( object GetHttpBasicAuthHeaderFingerprint : AbstractClientIdFingerprint(additionalStrings = arrayOf("Authorization"))
"APIUtils;",
"getHttpBasicAuthHeader"
)

View File

@ -1,6 +1,5 @@
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
object LoginActivityOnCreateFingerprint : AbstractClientIdFingerprint( object LoginActivityOnCreateFingerprint : AbstractClientIdFingerprint(custom@{ methodDef, classDef ->
"LoginActivity;", methodDef.name == "onCreate" && classDef.type.endsWith("LoginActivity;")
"onCreate" })
)

View File

@ -25,6 +25,7 @@ class SpoofClientPatch : AbstractSpoofClientPatch(
) { ) {
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) { override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
forEach { forEach {
// First is index of the clientId string.
val clientIdIndex = it.scanResult.stringsScanResult!!.matches.first().index val clientIdIndex = it.scanResult.stringsScanResult!!.matches.first().index
it.mutableMethod.apply { it.mutableMethod.apply {
val oAuthClientIdRegister = getInstruction<OneRegisterInstruction>(clientIdIndex).registerA val oAuthClientIdRegister = getInstruction<OneRegisterInstruction>(clientIdIndex).registerA