Skip to content

Commit

Permalink
feat: integrations patch
Browse files Browse the repository at this point in the history
  • Loading branch information
oSumAtrIX committed Apr 12, 2022
1 parent ca3a70f commit 19c0b0d
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/main/kotlin/app/revanced/patches/Index.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import app.revanced.patcher.patch.Patch
import app.revanced.patches.ad.VideoAds
import app.revanced.patches.interaction.EnableSeekbarTapping
import app.revanced.patches.layout.*
import app.revanced.patches.misc.Integrations

/**
* Index contains all the patches and should be imported when using this library.
Expand All @@ -21,6 +22,7 @@ object Index {
::HideReels,
::HideSuggestions,
::OldQualityLayout,
::EnableSeekbarTapping
::EnableSeekbarTapping,
::Integrations
)
}
53 changes: 53 additions & 0 deletions src/main/kotlin/app/revanced/patches/misc/Integrations.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package app.revanced.patches.misc

import app.revanced.patcher.cache.Cache
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.or
import app.revanced.patcher.patch.Patch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patcher.smali.asInstructions
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.immutable.ImmutableMethod
import org.jf.dexlib2.immutable.ImmutableMethodImplementation

class Integrations : Patch("integrations-patch") {
override fun execute(cache: Cache): PatchResult {
val map = cache.methodMap["integrations-patch"]
val implementation = map.method.implementation!!
val count = implementation.registerCount - 1

implementation.addInstructions(
map.scanData.endIndex,
"""
invoke-static {v$count}, Lpl/jakubweg/StringRef;->setContext(Landroid/content/Context;)V
sput-object v$count, Lapp/revanced/integrations/Globals;->context:Landroid/content/Context;
""".trimIndent().asInstructions()
)

val classDef = map.definingClassProxy.resolve()
classDef.methods.add(
ImmutableMethod(
classDef.type,
"getAppContext",
null,
"Landroid/content/Context;",
AccessFlags.PUBLIC or AccessFlags.STATIC,
null,
null,
ImmutableMethodImplementation(
1,
"""
invoke-static { }, Lapp/revanced/integrations/Globals;->getAppContext()Landroid/content/Context;
move-result-object v0
return-object v0
""".trimIndent().asInstructions(),
null,
null
)
).toMutable()
)
return PatchResultSuccess()
}
}

0 comments on commit 19c0b0d

Please sign in to comment.