feat(youtube): support version 18.15.40
This commit is contained in:
+1
-1
@@ -9,5 +9,5 @@ object ComponentContextParserFingerprint : MethodFingerprint(
|
||||
Opcode.IPUT_OBJECT,
|
||||
Opcode.NEW_INSTANCE
|
||||
),
|
||||
strings = listOf("LoggingProperties are not in proto format")
|
||||
strings = listOf("Component was not found %s because it was removed due to duplicate converter bindings")
|
||||
)
|
||||
+10
-6
@@ -10,7 +10,6 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve
|
||||
import app.revanced.patcher.patch.BytecodePatch
|
||||
import app.revanced.patcher.patch.PatchResult
|
||||
import app.revanced.patcher.patch.PatchResultError
|
||||
import app.revanced.patcher.patch.PatchResultSuccess
|
||||
import app.revanced.patcher.patch.annotations.DependsOn
|
||||
import app.revanced.patcher.util.smali.ExternalLabel
|
||||
@@ -22,6 +21,7 @@ import app.revanced.patches.youtube.misc.litho.filter.fingerprints.ReadComponent
|
||||
import org.jf.dexlib2.iface.instruction.Instruction
|
||||
import org.jf.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import org.jf.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import org.jf.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
|
||||
@DependsOn([IntegrationsPatch::class])
|
||||
@Description("Hooks the method which parses the bytes into a ComponentContext to filter components.")
|
||||
@@ -44,15 +44,15 @@ class LithoFilterPatch : BytecodePatch(
|
||||
val insertHookIndex = result.scanResult.patternScanResult!!.endIndex
|
||||
val builderMethodDescriptor = instruction(builderMethodIndex).descriptor
|
||||
val emptyComponentFieldDescriptor = instruction(emptyComponentFieldIndex).descriptor
|
||||
// Register is overwritten right after it is used for this patch, therefore free to clobber.
|
||||
val clobberedRegister = instruction(insertHookIndex).oneRegister
|
||||
// Register is overwritten right after it is used in this patch, therefore free to clobber.
|
||||
val clobberedRegister = instruction(insertHookIndex - 1).twoRegisterA
|
||||
|
||||
@Suppress("UnnecessaryVariable")
|
||||
// The register, this patch clobbers, is previously used for the StringBuilder,
|
||||
// later on a new StringBuilder is instantiated on it.
|
||||
val stringBuilderRegister = clobberedRegister
|
||||
|
||||
val identifierRegister = instruction(ReadComponentIdentifierFingerprint.patternScanEndIndex).oneRegister
|
||||
val identifierRegister = instruction(ReadComponentIdentifierFingerprint.patternScanEndIndex).oneRegisterA
|
||||
|
||||
addInstructions(
|
||||
insertHookIndex, // right after setting the component.pathBuilder field,
|
||||
@@ -69,7 +69,7 @@ class LithoFilterPatch : BytecodePatch(
|
||||
listOf(ExternalLabel("not_an_ad", instruction(insertHookIndex)))
|
||||
)
|
||||
}
|
||||
} ?: return PatchResultError("Could not find the method to hook.")
|
||||
} ?: return ComponentContextParserFingerprint.toErrorResult()
|
||||
|
||||
return PatchResultSuccess()
|
||||
}
|
||||
@@ -81,8 +81,12 @@ class LithoFilterPatch : BytecodePatch(
|
||||
val Instruction.descriptor
|
||||
get() = (this as ReferenceInstruction).reference.toString()
|
||||
|
||||
val Instruction.oneRegister
|
||||
val Instruction.oneRegisterA
|
||||
get() = (this as OneRegisterInstruction).registerA
|
||||
|
||||
val Instruction.twoRegisterA
|
||||
get() = (this as TwoRegisterInstruction).registerA
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user