feat(YouTube): add support version v18.38.44, v18.39.41

This commit is contained in:
inotia00 2023-10-19 10:43:05 +09:00
parent d303dd4ab0
commit 88dedec168
110 changed files with 463 additions and 196 deletions

View File

@ -32,7 +32,9 @@ Example:
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
}
],

View File

@ -41,7 +41,9 @@ import org.w3c.dom.Element
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -26,7 +26,9 @@ import app.revanced.util.integrations.Constants.ADS_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -36,7 +36,9 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -30,7 +30,9 @@ import app.revanced.util.integrations.Constants.PATCHES_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -30,7 +30,9 @@ import app.revanced.util.integrations.Constants.PATCHES_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -41,7 +41,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -41,7 +41,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -45,7 +45,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -40,7 +40,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -36,7 +36,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import app.revanced.util.integrations.Constants.FULLSCREEN
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -47,7 +47,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -32,7 +32,9 @@ import app.revanced.util.integrations.Constants.PATCHES_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -37,7 +37,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -41,7 +41,9 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -31,7 +31,9 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -39,7 +39,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -30,7 +30,9 @@ import app.revanced.util.integrations.Constants.PATCHES_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -38,7 +38,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -37,7 +37,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -31,7 +31,9 @@ import app.revanced.util.integrations.Constants.PATCHES_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -33,7 +33,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -19,7 +19,9 @@ import app.revanced.util.bytecode.getStringIndex
import app.revanced.util.integrations.Constants.GENERAL
import app.revanced.util.integrations.Constants.PATCHES_PATH
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Patch(
name = "Hide mix playlists",
@ -43,7 +45,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]
@ -108,6 +112,7 @@ object MixPlaylistsPatch : BytecodePatch(
val insertIndex = methodInstructions.indexOfFirst { instruction ->
instruction.opcode == Opcode.INVOKE_INTERFACE
&& (instruction as? ReferenceInstruction)?.reference.toString().contains("[B")
}
val freeIndex = it.scanResult.patternScanResult!!.startIndex - 1

View File

@ -31,7 +31,9 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -40,7 +40,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -43,7 +43,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -33,7 +33,9 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -40,7 +40,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -37,7 +37,9 @@ import app.revanced.util.integrations.Constants.GENERAL
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -27,7 +27,9 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -27,7 +27,9 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -27,7 +27,9 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -31,7 +31,9 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusLabel
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -25,7 +25,9 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -30,7 +30,9 @@ import app.revanced.util.resources.ResourceUtils.copyResources
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -27,7 +27,9 @@ import org.w3c.dom.Element
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -29,7 +29,9 @@ import kotlin.io.path.exists
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -34,7 +34,9 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -33,7 +33,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -27,7 +27,9 @@ import kotlin.io.path.exists
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -33,7 +33,9 @@ import org.w3c.dom.Element
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -32,7 +32,9 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -26,7 +26,9 @@ import app.revanced.util.integrations.Constants.MISC_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -44,7 +44,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -25,7 +25,9 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
],

View File

@ -34,7 +34,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -32,7 +32,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -38,7 +38,9 @@ import com.android.tools.smali.dexlib2.Opcode
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -42,7 +42,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -32,7 +32,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -30,7 +30,9 @@ import app.revanced.util.integrations.Constants.MISC_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -42,7 +42,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -28,7 +28,9 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -26,7 +26,9 @@ import app.revanced.util.resources.ResourceHelper.addTranslations
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -33,7 +33,9 @@ import app.revanced.util.integrations.Constants.NAVIGATION
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -32,7 +32,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -13,7 +13,9 @@ import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.Pi
import app.revanced.patches.youtube.navigation.navigationbuttons.fingerprints.PivotBarShortsButtonViewFingerprint
import app.revanced.patches.youtube.utils.fingerprints.PivotBarCreateButtonViewFingerprint
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.ImageOnlyTab
import app.revanced.patches.youtube.utils.settings.SettingsPatch
import app.revanced.util.bytecode.getWideLiteralIndex
import app.revanced.util.integrations.Constants.NAVIGATION
import app.revanced.util.pivotbar.InjectionUtils.REGISTER_TEMPLATE_REPLACEMENT
import app.revanced.util.pivotbar.InjectionUtils.injectHook
@ -42,7 +44,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]
@ -94,12 +98,12 @@ object NavigationButtonsPatch : BytecodePatch(
*/
parentResult.mutableMethod.apply {
val insertIndex = implementation!!.instructions.let {
val scanStart = parentResult.scanResult.patternScanResult!!.endIndex
val scanStart = getWideLiteralIndex(ImageOnlyTab)
scanStart + it.subList(scanStart, it.size - 1).indexOfFirst { instruction ->
instruction.opcode == Opcode.INVOKE_STATIC
instruction.opcode == Opcode.INVOKE_VIRTUAL
}
}
} + 2
injectHook(CREATE_BUTTON_HOOK, insertIndex)
}

View File

@ -33,7 +33,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -49,7 +49,9 @@ import org.w3c.dom.Element
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -40,7 +40,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -36,7 +36,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -29,7 +29,9 @@ import app.revanced.util.integrations.Constants.PLAYER
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -30,7 +30,9 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -37,7 +37,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -50,7 +50,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -38,7 +38,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -36,7 +36,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import app.revanced.util.integrations.Constants.PLAYER
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -33,7 +33,9 @@ import app.revanced.util.integrations.Constants.INTEGRATIONS_PATH
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -3,5 +3,8 @@ package app.revanced.patches.youtube.player.playerbuttonbg.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object PlayerPatchFingerprint : MethodFingerprint(
customFingerprint = { methodDef, _ -> methodDef.definingClass == "Lapp/revanced/integrations/patches/layout/PlayerPatch;" && methodDef.name == "hidePlayerButton" }
customFingerprint = { methodDef, _ ->
methodDef.definingClass == "Lapp/revanced/integrations/patches/layout/PlayerPatch;"
&& methodDef.name == "hidePlayerButton"
}
)

View File

@ -39,7 +39,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -29,7 +29,9 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -35,7 +35,9 @@ import app.revanced.util.integrations.Constants.PLAYER
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -9,6 +9,7 @@ import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.youtube.player.speedoverlay.fingerprints.SpeedOverlayConfigFingerprint
import app.revanced.patches.youtube.player.speedoverlay.fingerprints.SpeedOverlayHookAlternativeFingerprint
import app.revanced.patches.youtube.player.speedoverlay.fingerprints.SpeedOverlayHookFingerprint
import app.revanced.patches.youtube.player.speedoverlay.fingerprints.YouTubeTextViewFingerprint
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch
@ -42,7 +43,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]
@ -51,6 +54,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
object SpeedOverlayPatch : BytecodePatch(
setOf(
SpeedOverlayConfigFingerprint,
SpeedOverlayHookAlternativeFingerprint,
SpeedOverlayHookFingerprint,
YouTubeTextViewFingerprint
)
@ -71,7 +75,12 @@ object SpeedOverlayPatch : BytecodePatch(
}
} ?: throw SpeedOverlayConfigFingerprint.exception
SpeedOverlayHookFingerprint.result?.let {
val speedOverlayHookResult =
SpeedOverlayHookFingerprint.result
?: SpeedOverlayHookAlternativeFingerprint.result
?: throw SpeedOverlayHookFingerprint.exception
speedOverlayHookResult.let {
it.mutableMethod.apply {
val insertIndex = implementation!!.instructions.indexOfFirst { instruction ->
instruction.opcode == Opcode.CMPL_FLOAT
@ -80,12 +89,12 @@ object SpeedOverlayPatch : BytecodePatch(
addInstructions(
insertIndex, """
invoke-static {v$insertRegister}, $INTEGRATIONS_CLASS_DESCRIPTOR->getSpeed(F)F
move-result v$insertRegister
"""
invoke-static {v$insertRegister}, $INTEGRATIONS_CLASS_DESCRIPTOR->getSpeed(F)F
move-result v$insertRegister
"""
)
}
} ?: throw SpeedOverlayHookFingerprint.exception
}
YouTubeTextViewFingerprint.result?.let {
it.mutableMethod.apply {

View File

@ -0,0 +1,57 @@
package app.revanced.patches.youtube.player.speedoverlay.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.Opcode
object SpeedOverlayHookAlternativeFingerprint : MethodFingerprint(
returnType = "V",
opcodes = listOf(
Opcode.IGET_OBJECT,
Opcode.CHECK_CAST,
Opcode.INVOKE_VIRTUAL,
Opcode.IGET_OBJECT,
Opcode.CHECK_CAST,
Opcode.IGET_OBJECT,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.IGET_OBJECT,
Opcode.CHECK_CAST,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
Opcode.IGET_OBJECT,
Opcode.CHECK_CAST,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
Opcode.GOTO,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.IPUT_OBJECT,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CHECK_CAST,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IGET,
Opcode.CMPL_FLOAT,
Opcode.IF_GEZ,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.IGET_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.RETURN_VOID
),
customFingerprint = { methodDef, _ -> methodDef.name == "run" }
)

View File

@ -39,7 +39,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -41,7 +41,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -39,7 +39,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -43,7 +43,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -48,7 +48,9 @@ import org.w3c.dom.Element
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -37,7 +37,9 @@ import app.revanced.util.integrations.Constants.SEEKBAR
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -33,7 +33,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -31,7 +31,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -37,7 +37,9 @@ import app.revanced.util.integrations.Constants.SEEKBAR
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -32,7 +32,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -66,7 +66,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -8,15 +8,18 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.youtube.shorts.shortscomponent.fingerprints.BottomNavigationBarAlternativeFingerprint
import app.revanced.patches.youtube.shorts.shortscomponent.fingerprints.BottomNavigationBarFingerprint
import app.revanced.patches.youtube.shorts.shortscomponent.fingerprints.RenderBottomNavigationBarFingerprint
import app.revanced.patches.youtube.shorts.shortscomponent.fingerprints.SetPivotBarFingerprint
import app.revanced.patches.youtube.utils.fingerprints.PivotBarCreateButtonViewFingerprint
import app.revanced.util.integrations.Constants.SHORTS
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
object ShortsNavigationBarPatch : BytecodePatch(
setOf(
BottomNavigationBarAlternativeFingerprint,
BottomNavigationBarFingerprint,
PivotBarCreateButtonViewFingerprint,
RenderBottomNavigationBarFingerprint
@ -56,6 +59,23 @@ object ShortsNavigationBarPatch : BytecodePatch(
val insertIndex = it.scanResult.patternScanResult!!.endIndex
val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA
addInstructions(
insertIndex, """
invoke-static {v$insertRegister}, $SHORTS->hideShortsPlayerNavigationBar(Landroid/view/View;)Landroid/view/View;
move-result-object v$insertRegister
"""
)
}
} ?: BottomNavigationBarAlternativeFingerprint.result?.let {
it.mutableMethod.apply {
val targetIndex = it.scanResult.patternScanResult!!.endIndex + 3
val insertIndex =
if (getInstruction(targetIndex).opcode == Opcode.IF_EQZ)
targetIndex
else
targetIndex + 1
val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA
addInstructions(
insertIndex, """
invoke-static {v$insertRegister}, $SHORTS->hideShortsPlayerNavigationBar(Landroid/view/View;)Landroid/view/View;

View File

@ -0,0 +1,19 @@
package app.revanced.patches.youtube.shorts.shortscomponent.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object BottomNavigationBarAlternativeFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("Landroid/view/View;", "Landroid/os/Bundle;"),
opcodes = listOf(
Opcode.IGET_OBJECT,
Opcode.IGET_OBJECT,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL
),
strings = listOf("r_pfvc", "ReelWatchPaneFragmentViewModelKey")
)

View File

@ -33,7 +33,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -45,7 +45,9 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
"18.34.38",
"18.35.36",
"18.36.39",
"18.37.36"
"18.37.36",
"18.38.44",
"18.39.41"
]
)
]

View File

@ -5,44 +5,28 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object NewFlyoutPanelOnClickListenerFingerprint : MethodFingerprint(
object NewVideoQualityChangedFingerprint : MethodFingerprint(
returnType = "L",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("L"),
opcodes = listOf(
Opcode.IGET, // Video resolution (human readable).
Opcode.IGET_OBJECT,
Opcode.IGET_BOOLEAN,
Opcode.IGET_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_DIRECT,
Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.GOTO,
Opcode.CONST_4,
Opcode.IF_NE,
Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.IGET,
Opcode.AND_INT_LIT8,
Opcode.IF_EQZ,
Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.IF_NEZ,
Opcode.NEW_INSTANCE,
Opcode.INVOKE_DIRECT,
Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.NEW_INSTANCE,
Opcode.CONST_16,
Opcode.INVOKE_DIRECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.NEW_INSTANCE
)
)

View File

@ -5,14 +5,9 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.ImageOnlyTab
import app.revanced.util.bytecode.isWideLiteralExists
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object PivotBarCreateButtonViewFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
opcodes = listOf(
Opcode.MOVE_OBJECT,
Opcode.INVOKE_DIRECT_RANGE, // unique instruction anchor
),
customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(ImageOnlyTab) }
)

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