Skip to content

Commit

Permalink
fix(relayforreddit/change-oauth-client-id): change client id instead …
Browse files Browse the repository at this point in the history
…of developer key (#2508)

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
  • Loading branch information
gudmunduro and oSumAtrIX committed Jun 27, 2023
1 parent a62f9d7 commit 4befb44
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprint

import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint

object GetClientIdFingerprint : MethodFingerprint(
strings = listOf("AIzaSyCTQfRx9fHnDpfcfiI5pmwyGUBjDVTNvX8")
abstract class AbstractClientIdFingerprint(string: String) : MethodFingerprint(
strings = listOfNotNull("dj-xCIZQYiLbEg", string),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints

object GetLoggedInBearerTokenFingerprint : AbstractClientIdFingerprint("authorization_code")
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints

object GetLoggedOutBearerTokenFingerprint : AbstractClientIdFingerprint("https://oauth.reddit.com/grants/installed_client")
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints

object GetRefreshTokenFingerprint : AbstractClientIdFingerprint("refresh_token")
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints

object LoginActivityClientIdFingerprint : AbstractClientIdFingerprint("&duration=permanent")
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,43 @@ package app.revanced.patches.reddit.customclients.relayforreddit.api.patch
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
import app.revanced.patcher.data.BytecodeContext
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.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patches.reddit.customclients.AbstractChangeOAuthClientIdPatch
import app.revanced.patches.reddit.customclients.ChangeOAuthClientIdPatchAnnotation
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetClientIdFingerprint
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetLoggedInBearerTokenFingerprint
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetLoggedOutBearerTokenFingerprint
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.LoginActivityClientIdFingerprint
import app.revanced.patches.reddit.customclients.relayforreddit.api.fingerprints.GetRefreshTokenFingerprint
import org.jf.dexlib2.iface.instruction.OneRegisterInstruction

@ChangeOAuthClientIdPatchAnnotation
@Compatibility([Package("free.reddit.news"), Package("reddit.news")])
class ChangeOAuthClientIdPatch : AbstractChangeOAuthClientIdPatch(
"dbrady://relay", Options, listOf(GetClientIdFingerprint)
"dbrady://relay",
Options,
listOf(
LoginActivityClientIdFingerprint,
GetLoggedInBearerTokenFingerprint,
GetLoggedOutBearerTokenFingerprint,
GetRefreshTokenFingerprint
)
) {
override fun List<MethodFingerprintResult>.patch(context: BytecodeContext): PatchResult {
first().mutableMethod.replaceInstruction(0, "const-string v0, \"$clientId\"")
forEach {
val clientIdIndex = it.scanResult.stringsScanResult!!.matches.first().index
it.mutableMethod.apply {
val clientIdRegister = getInstruction<OneRegisterInstruction>(clientIdIndex).registerA

it.mutableMethod.replaceInstruction(
clientIdIndex,
"const-string v$clientIdRegister, \"$clientId\""
)
}
}

return PatchResultSuccess()
}
Expand Down

0 comments on commit 4befb44

Please sign in to comment.