feat: integrations patch

This commit is contained in:
oSumAtrIX 2022-04-12 20:59:06 +02:00
parent ca3a70f2a4
commit 19c0b0d194
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4
2 changed files with 56 additions and 1 deletions

View file

@ -4,6 +4,7 @@ import app.revanced.patcher.patch.Patch
import app.revanced.patches.ad.VideoAds import app.revanced.patches.ad.VideoAds
import app.revanced.patches.interaction.EnableSeekbarTapping import app.revanced.patches.interaction.EnableSeekbarTapping
import app.revanced.patches.layout.* import app.revanced.patches.layout.*
import app.revanced.patches.misc.Integrations
/** /**
* Index contains all the patches and should be imported when using this library. * Index contains all the patches and should be imported when using this library.
@ -21,6 +22,7 @@ object Index {
::HideReels, ::HideReels,
::HideSuggestions, ::HideSuggestions,
::OldQualityLayout, ::OldQualityLayout,
::EnableSeekbarTapping ::EnableSeekbarTapping,
::Integrations
) )
} }

View file

@ -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()
}
}