feat(YouTube): add support version v18.41.39

This commit is contained in:
inotia00 2023-10-27 11:49:15 +09:00
parent c89df5554c
commit 8d42314d30
106 changed files with 260 additions and 123 deletions

View File

@ -35,7 +35,8 @@ Example:
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
} }
], ],

View File

@ -39,8 +39,8 @@ object ComponentParserPatch : BytecodePatch(
""" """
invoke-static {v$stringBuilderRegister, v$identifierRegister, v$objectRegister}, $descriptor(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/Object;)Z invoke-static {v$stringBuilderRegister, v$identifierRegister, v$objectRegister}, $descriptor(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/Object;)Z
move-result v$stringBuilderRegister move-result v$stringBuilderRegister
if-nez v$stringBuilderRegister, :filter if-eqz v$stringBuilderRegister, :filter
""", ExternalLabel("filter", getInstruction(emptyComponentIndex)) """ + emptyComponentLabel, ExternalLabel("filter", getInstruction(insertIndex))
) )
} }
} }
@ -52,8 +52,8 @@ object ComponentParserPatch : BytecodePatch(
""" """
invoke-static {v$stringBuilderRegister}, $descriptor(Ljava/lang/StringBuilder;)Z invoke-static {v$stringBuilderRegister}, $descriptor(Ljava/lang/StringBuilder;)Z
move-result v$stringBuilderRegister move-result v$stringBuilderRegister
if-nez v$stringBuilderRegister, :filter if-eqz v$stringBuilderRegister, :filter
""", ExternalLabel("filter", getInstruction(emptyComponentIndex)) """ + emptyComponentLabel, ExternalLabel("filter", getInstruction(insertIndex))
) )
} }
} }

View File

@ -44,7 +44,8 @@ import org.w3c.dom.Element
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -29,7 +29,8 @@ import app.revanced.util.integrations.Constants.ADS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -44,7 +44,8 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -44,7 +44,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -48,7 +48,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -43,7 +43,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -39,7 +39,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import app.revanced.util.integrations.Constants.FULLSCREEN
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -50,7 +50,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -37,7 +37,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -35,7 +35,8 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -39,7 +39,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -44,7 +44,8 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -34,7 +34,8 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -42,7 +42,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -41,7 +41,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -40,7 +40,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -36,7 +36,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -47,7 +47,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -34,7 +34,8 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -43,7 +43,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -45,7 +45,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -43,7 +43,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -43,7 +43,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -30,7 +30,8 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -30,7 +30,8 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -30,7 +30,8 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -34,7 +34,8 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusLabel
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -28,7 +28,8 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -33,7 +33,8 @@ import app.revanced.util.resources.ResourceUtils.copyResources
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -30,7 +30,8 @@ import org.w3c.dom.Element
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -32,7 +32,8 @@ import kotlin.io.path.exists
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -37,7 +37,8 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -36,7 +36,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -30,7 +30,8 @@ import kotlin.io.path.exists
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -36,7 +36,8 @@ import org.w3c.dom.Element
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -35,7 +35,8 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -41,7 +41,8 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -29,7 +29,8 @@ import app.revanced.util.integrations.Constants.MISC_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -44,7 +44,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -28,7 +28,8 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

View File

@ -37,7 +37,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -35,7 +35,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -40,7 +40,8 @@ import com.android.tools.smali.dexlib2.Opcode
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -45,7 +45,8 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -11,7 +11,9 @@ import app.revanced.patches.youtube.misc.openlinksdirectly.fingerprints.OpenLink
import app.revanced.patches.youtube.misc.openlinksdirectly.fingerprints.OpenLinksDirectlyFingerprintSecondary import app.revanced.patches.youtube.misc.openlinksdirectly.fingerprints.OpenLinksDirectlyFingerprintSecondary
import app.revanced.patches.youtube.utils.settings.SettingsPatch import app.revanced.patches.youtube.utils.settings.SettingsPatch
import app.revanced.util.integrations.Constants.MISC_PATH import app.revanced.util.integrations.Constants.MISC_PATH
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Patch( @Patch(
name = "Enable open links directly", name = "Enable open links directly",
@ -35,7 +37,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]
@ -55,12 +58,15 @@ object OpenLinksDirectlyPatch : BytecodePatch(
).forEach { fingerprint -> ).forEach { fingerprint ->
fingerprint.result?.let { fingerprint.result?.let {
it.mutableMethod.apply { it.mutableMethod.apply {
val insertIndex = it.scanResult.patternScanResult!!.startIndex val insertIndex = implementation!!.instructions
val register = getInstruction<Instruction35c>(insertIndex).registerC .indexOfFirst { instruction ->
((instruction as? ReferenceInstruction)?.reference as? MethodReference)?.name == "parse"
}
val insertRegister = getInstruction<Instruction35c>(insertIndex).registerC
replaceInstruction( replaceInstruction(
insertIndex, insertIndex,
"invoke-static {v$register}, $MISC_PATH/OpenLinksDirectlyPatch;->enableBypassRedirect(Ljava/lang/String;)Landroid/net/Uri;" "invoke-static {v$insertRegister}, $MISC_PATH/OpenLinksDirectlyPatch;->enableBypassRedirect(Ljava/lang/String;)Landroid/net/Uri;"
) )
} }
} ?: throw fingerprint.exception } ?: throw fingerprint.exception

View File

@ -10,11 +10,20 @@ object OpenLinksDirectlyFingerprintPrimary : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("Ljava/lang/Object"), parameters = listOf("Ljava/lang/Object"),
opcodes = listOf( opcodes = listOf(
Opcode.RETURN_OBJECT,
Opcode.CHECK_CAST,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CHECK_CAST,
Opcode.RETURN_OBJECT,
Opcode.CHECK_CAST,
Opcode.INVOKE_STATIC, Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT, Opcode.MOVE_RESULT_OBJECT,
Opcode.RETURN_OBJECT, Opcode.RETURN_OBJECT,
Opcode.CHECK_CAST, Opcode.CHECK_CAST
Opcode.SGET, ),
Opcode.SGET_OBJECT customFingerprint = { methodDef, classDef ->
) methodDef.name == "a"
&& classDef.methods.count() == 3
}
) )

View File

@ -33,7 +33,8 @@ import app.revanced.util.integrations.Constants.MISC_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -45,7 +45,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import org.w3c.dom.Element
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -34,7 +34,8 @@ import com.android.tools.smali.dexlib2.util.MethodUtil
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -29,7 +29,8 @@ import app.revanced.util.resources.ResourceHelper.addTranslations
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -36,7 +36,8 @@ import app.revanced.util.integrations.Constants.NAVIGATION
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -35,7 +35,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -47,7 +47,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -36,7 +36,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -1,13 +1,10 @@
package app.revanced.patches.youtube.overlaybutton.download.pip.fingerprints package app.revanced.patches.youtube.overlaybutton.download.pip.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
object PiPPlaybackFingerprint : MethodFingerprint( object PiPPlaybackFingerprint : MethodFingerprint(
returnType = "Z", returnType = "Z",
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"),
opcodes = listOf( opcodes = listOf(
Opcode.INVOKE_INTERFACE, Opcode.INVOKE_INTERFACE,

View File

@ -53,7 +53,8 @@ import org.w3c.dom.Element
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -43,7 +43,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -39,7 +39,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -32,7 +32,8 @@ import app.revanced.util.integrations.Constants.PLAYER
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -33,7 +33,8 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -40,7 +40,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -6,6 +6,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWith
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
@ -52,7 +53,8 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]
@ -84,12 +86,11 @@ object HideFilmstripOverlayPatch : BytecodePatch(
FineScrubbingOverlayFingerprint.result?.let { FineScrubbingOverlayFingerprint.result?.let {
it.mutableMethod.apply { it.mutableMethod.apply {
val setOnClickListenerIndex = getIndex("setOnClickListener")
val jumpIndex = setOnClickListenerIndex + 3
val initialIndex = setOnClickListenerIndex - 1
if (SettingsPatch.upward1828) { if (SettingsPatch.upward1828) {
var insertIndex = it.scanResult.patternScanResult!!.startIndex + 2 var insertIndex = it.scanResult.patternScanResult!!.startIndex + 2
val jumpIndex = getTargetIndexUpTo(insertIndex, Opcode.GOTO, Opcode.GOTO_16)
val initialIndex = jumpIndex - 1
if (getInstruction(insertIndex).opcode == Opcode.INVOKE_VIRTUAL) if (getInstruction(insertIndex).opcode == Opcode.INVOKE_VIRTUAL)
insertIndex++ insertIndex++
@ -109,6 +110,10 @@ object HideFilmstripOverlayPatch : BytecodePatch(
) )
removeInstruction(insertIndex) removeInstruction(insertIndex)
} else { } else {
val setOnClickListenerIndex = getIndex("setOnClickListener")
val jumpIndex = setOnClickListenerIndex + 3
val initialIndex = setOnClickListenerIndex - 1
val insertIndex = getIndex("bringChildToFront") + 1 val insertIndex = getIndex("bringChildToFront") + 1
val insertRegister = val insertRegister =
getInstruction<TwoRegisterInstruction>(insertIndex).registerA getInstruction<TwoRegisterInstruction>(insertIndex).registerA
@ -204,6 +209,20 @@ object HideFilmstripOverlayPatch : BytecodePatch(
} }
} }
private fun MutableMethod.getTargetIndexUpTo(
startIndex: Int,
opcode1: Opcode,
opcode2: Opcode
): Int {
for (index in startIndex until implementation!!.instructions.size) {
if (getInstruction(index).opcode != opcode1 && getInstruction(index).opcode != opcode2)
continue
return index
}
throw PatchException("Failed to find hook method")
}
private fun MutableMethod.injectHook() { private fun MutableMethod.injectHook() {
addInstructionsWithLabels( addInstructionsWithLabels(
0, """ 0, """

View File

@ -42,7 +42,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -39,7 +39,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -38,7 +38,8 @@ import app.revanced.util.integrations.Constants.PLAYER
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -36,7 +36,8 @@ import app.revanced.util.integrations.Constants.INTEGRATIONS_PATH
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -42,7 +42,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -32,7 +32,8 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -7,16 +7,18 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.youtube.player.seekmessage.fingerprints.SeekEduContainerFingerprint import app.revanced.patches.youtube.player.seekmessage.fingerprints.SeekEduContainerFingerprint
import app.revanced.patches.youtube.player.seekmessage.fingerprints.SeekEduUndoOverlayFingerprint import app.revanced.patches.youtube.player.seekmessage.fingerprints.SeekEduUndoOverlayFingerprint
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.SeekUndoEduOverlayStub import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.SeekUndoEduOverlayStub
import app.revanced.patches.youtube.utils.settings.SettingsPatch import app.revanced.patches.youtube.utils.settings.SettingsPatch
import app.revanced.util.bytecode.getWideLiteralIndex
import app.revanced.util.integrations.Constants.PLAYER import app.revanced.util.integrations.Constants.PLAYER
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@ -45,7 +47,8 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]
@ -77,7 +80,11 @@ object SeekMessagePatch : BytecodePatch(
*/ */
SeekEduUndoOverlayFingerprint.result?.let { SeekEduUndoOverlayFingerprint.result?.let {
it.mutableMethod.apply { it.mutableMethod.apply {
val insertIndex = getWideLiteralIndex(SeekUndoEduOverlayStub) val seekUndoCalls = implementation!!.instructions.withIndex()
.filter { instruction ->
(instruction.value as? WideLiteralInstruction)?.wideLiteral == SeekUndoEduOverlayStub
}
val insertIndex = seekUndoCalls.elementAt(seekUndoCalls.size - 1).index
val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA
for (index in insertIndex until implementation!!.instructions.size) { for (index in insertIndex until implementation!!.instructions.size) {

View File

@ -43,7 +43,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -44,7 +44,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -41,7 +41,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -46,7 +46,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -51,7 +51,8 @@ import org.w3c.dom.Element
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -39,7 +39,8 @@ import app.revanced.util.integrations.Constants.SEEKBAR
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -36,7 +36,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -34,7 +34,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -39,7 +39,8 @@ import app.revanced.util.integrations.Constants.SEEKBAR
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -69,7 +69,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -36,7 +36,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -48,7 +48,8 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -49,7 +49,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -41,7 +41,8 @@ import app.revanced.util.resources.ResourceHelper.setMicroG
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -61,7 +61,8 @@ import com.android.tools.smali.dexlib2.iface.reference.Reference
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
] ]

View File

@ -48,7 +48,8 @@ import java.util.concurrent.TimeUnit
"18.37.36", "18.37.36",
"18.38.44", "18.38.44",
"18.39.41", "18.39.41",
"18.40.34" "18.40.34",
"18.41.39"
] ]
) )
], ],

Some files were not shown because too many files have changed in this diff Show More