diff --git a/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/extension/hooks/StartActivityInitHook.kt b/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/extension/hooks/StartActivityInitHook.kt index 558b24eba4..4e9e5c14c9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/extension/hooks/StartActivityInitHook.kt +++ b/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/extension/hooks/StartActivityInitHook.kt @@ -20,7 +20,7 @@ internal val startActivityInitHook = extensionHook( contextRegisterResolver = { method -> val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1) as OneRegisterInstruction - moveResultInstruction.registerA + "v${moveResultInstruction.registerA}" }, ) { opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Fingerprints.kt index 84e6d58766..ca1065faaf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Fingerprints.kt @@ -20,7 +20,7 @@ internal val homeActivityInitHook = extensionHook( contextRegisterResolver = { method -> val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1) as OneRegisterInstruction - moveResultInstruction.registerA + "v${moveResultInstruction.registerA}" }, ) { opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt index 3d7a1e4443..a53102f9e3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt @@ -7,7 +7,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.fingerprint import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.bytecodePatch -import app.revanced.util.exception +import app.revanced.util.matchOrThrow import com.android.tools.smali.dexlib2.iface.Method import java.net.URLDecoder import java.util.jar.JarFile @@ -77,24 +77,24 @@ fun sharedExtensionPatch( class ExtensionHook internal constructor( val fingerprint: Fingerprint, private val insertIndexResolver: ((Method) -> Int), - private val contextRegisterResolver: (Method) -> Int, + private val contextRegisterResolver: (Method) -> String, ) { operator fun invoke(extensionClassDescriptor: String) { - fingerprint.match?.mutableMethod?.let { method -> + fingerprint.matchOrThrow.mutableMethod.let { method -> val insertIndex = insertIndexResolver(method) val contextRegister = contextRegisterResolver(method) method.addInstruction( insertIndex, - "invoke-static/range { v$contextRegister .. v$contextRegister }, " + + "invoke-static/range { $contextRegister .. $contextRegister }, " + "$extensionClassDescriptor->setContext(Landroid/content/Context;)V", ) - } ?: throw fingerprint.exception + } } } fun extensionHook( insertIndexResolver: ((Method) -> Int) = { 0 }, - contextRegisterResolver: (Method) -> Int = { it.implementation!!.registerCount - 1 }, + contextRegisterResolver: (Method) -> String = { "p0" }, fingerprintBuilderBlock: FingerprintBuilder.() -> Unit, ) = ExtensionHook(fingerprint(block = fingerprintBuilderBlock), insertIndexResolver, contextRegisterResolver)