mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-04-29 22:24:31 +02:00
feat(YouTube): drop support version v18.41.39
, v18.42.41
This commit is contained in:
parent
46a4ffe614
commit
f4f2d41236
@ -34,9 +34,7 @@ Example:
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@ -43,9 +43,7 @@ import org.w3c.dom.Element
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -28,9 +28,7 @@ import app.revanced.util.integrations.Constants.ADS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -43,9 +43,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -43,9 +43,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -47,9 +47,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -42,9 +42,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -38,9 +38,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import app.revanced.util.integrations.Constants.FULLSCREEN
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -49,9 +49,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -36,9 +36,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -34,9 +34,7 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -44,9 +44,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -43,9 +43,7 @@ import app.revanced.util.integrations.Constants.GENERAL
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -33,9 +33,7 @@ import app.revanced.util.integrations.Constants.GENERAL
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -41,9 +41,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -40,9 +40,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.integrations.Constants.COMPONENTS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -35,9 +35,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -38,9 +38,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -46,9 +46,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -33,9 +33,7 @@ import app.revanced.util.integrations.Constants.GENERAL
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -50,9 +50,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -44,9 +44,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.integrations.Constants.GENERAL
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -42,9 +42,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -42,9 +42,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -29,9 +29,7 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -29,9 +29,7 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -29,9 +29,7 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusIcon
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -33,9 +33,7 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusLabel
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -27,9 +27,7 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.resources.ResourceUtils.copyResources
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -29,9 +29,7 @@ import org.w3c.dom.Element
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -31,9 +31,7 @@ import kotlin.io.path.copyTo
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -36,9 +36,7 @@ import app.revanced.util.resources.ResourceUtils.copyXmlNode
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -35,9 +35,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -29,9 +29,7 @@ import kotlin.io.path.exists
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -35,9 +35,7 @@ import org.w3c.dom.Element
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -34,9 +34,7 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -40,9 +40,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -28,9 +28,7 @@ import app.revanced.util.integrations.Constants.MISC_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -43,9 +43,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -27,9 +27,7 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
],
|
||||
|
@ -36,9 +36,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -34,9 +34,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -39,9 +39,7 @@ import com.android.tools.smali.dexlib2.Opcode
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -44,9 +44,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -36,9 +36,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.util.integrations.Constants.MISC_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -44,9 +44,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
@ -69,10 +67,7 @@ object NewSplashAnimationPatch : BytecodePatch(
|
||||
*/
|
||||
WatchWhileActivityWithInFlagsFingerprint.result?.let {
|
||||
it.mutableMethod.apply {
|
||||
var targetIndex = getWide32LiteralIndex(45407550) + 3
|
||||
if (getInstruction(targetIndex).opcode == Opcode.MOVE_RESULT)
|
||||
targetIndex += 1
|
||||
|
||||
val targetIndex = getWide32LiteralIndex(45407550) + 3
|
||||
inject(targetIndex)
|
||||
}
|
||||
}
|
||||
|
@ -32,9 +32,7 @@ import org.w3c.dom.Element
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -33,9 +33,7 @@ import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -28,9 +28,7 @@ import app.revanced.util.resources.ResourceHelper.addTranslations
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -35,9 +35,7 @@ import app.revanced.util.integrations.Constants.NAVIGATION
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -34,9 +34,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -47,9 +47,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -35,9 +35,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -52,9 +52,7 @@ import org.w3c.dom.Element
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -42,9 +42,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -38,9 +38,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -31,9 +31,7 @@ import app.revanced.util.integrations.Constants.PLAYER
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -32,9 +32,7 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -39,9 +39,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -52,9 +52,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -41,9 +41,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -38,9 +38,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -37,9 +37,7 @@ import app.revanced.util.integrations.Constants.PLAYER
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -35,9 +35,7 @@ import app.revanced.util.integrations.Constants.INTEGRATIONS_PATH
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -41,9 +41,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -31,9 +31,7 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -46,9 +46,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -36,9 +36,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -41,9 +41,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -43,9 +43,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -40,9 +40,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -45,9 +45,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -50,9 +50,7 @@ import org.w3c.dom.Element
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -38,9 +38,7 @@ import app.revanced.util.integrations.Constants.SEEKBAR
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -5,14 +5,18 @@ import app.revanced.patcher.data.BytecodeContext
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
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.Patch
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||
import app.revanced.patcher.util.smali.ExternalLabel
|
||||
import app.revanced.patches.youtube.seekbar.tapping.fingerprints.SeekbarTappingFingerprint
|
||||
import app.revanced.patches.youtube.seekbar.tapping.fingerprints.SeekbarTappingReferenceFingerprint
|
||||
import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||
import app.revanced.util.integrations.Constants.SEEKBAR
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction35c
|
||||
import com.android.tools.smali.dexlib2.dexbacked.reference.DexBackedMethodReference
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction11n
|
||||
|
||||
@Patch(
|
||||
name = "Enable seekbar tapping",
|
||||
@ -35,41 +39,65 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
@Suppress("unused")
|
||||
object SeekbarTappingPatch : BytecodePatch(
|
||||
setOf(
|
||||
SeekbarTappingReferenceFingerprint,
|
||||
SeekbarTappingFingerprint
|
||||
)
|
||||
setOf(SeekbarTappingFingerprint)
|
||||
) {
|
||||
override fun execute(context: BytecodeContext) {
|
||||
SeekbarTappingReferenceFingerprint.result?.let {
|
||||
it.mutableMethod.apply {
|
||||
TappingLabel = """
|
||||
invoke-static {}, $SEEKBAR->enableSeekbarTapping()Z
|
||||
move-result v0
|
||||
if-eqz v0, :disabled
|
||||
invoke-virtual { p0, v2 }, ${getInstruction<ReferenceInstruction>(it.scanResult.patternScanResult!!.startIndex).reference}
|
||||
invoke-virtual { p0, v2 }, ${getInstruction<ReferenceInstruction>(it.scanResult.patternScanResult!!.endIndex - 1).reference}
|
||||
"""
|
||||
}
|
||||
} ?: throw SeekbarTappingReferenceFingerprint.exception
|
||||
|
||||
SeekbarTappingFingerprint.result?.let {
|
||||
it.mutableMethod.apply {
|
||||
val tapSeekIndex = it.scanResult.patternScanResult!!.startIndex + 1
|
||||
val tapSeekReference = getInstruction<BuilderInstruction35c>(tapSeekIndex).reference
|
||||
val tapSeekClass =
|
||||
context
|
||||
.findClass(((tapSeekReference) as DexBackedMethodReference).definingClass)!!
|
||||
.mutableClass
|
||||
val tapSeekMethods = mutableMapOf<String, MutableMethod>()
|
||||
|
||||
for (method in tapSeekClass.methods) {
|
||||
if (method.implementation == null)
|
||||
continue
|
||||
|
||||
val instructions = method.implementation!!.instructions
|
||||
// here we make sure we actually find the method because it has more than 7 instructions
|
||||
if (instructions.count() != 10)
|
||||
continue
|
||||
|
||||
// we know that the 7th instruction has the opcode CONST_4
|
||||
val instruction = instructions.elementAt(6)
|
||||
if (instruction.opcode != Opcode.CONST_4)
|
||||
continue
|
||||
|
||||
// the literal for this instruction has to be either 1 or 2
|
||||
val literal = (instruction as Instruction11n).narrowLiteral
|
||||
|
||||
// method founds
|
||||
if (literal == 1)
|
||||
tapSeekMethods["P"] = method
|
||||
else if (literal == 2)
|
||||
tapSeekMethods["O"] = method
|
||||
}
|
||||
|
||||
val pMethod = tapSeekMethods["P"]
|
||||
?: throw PatchException("tapSeekMethod not found")
|
||||
val oMethod = tapSeekMethods["O"]
|
||||
?: throw PatchException("tapSeekMethod not found")
|
||||
|
||||
val insertIndex = it.scanResult.patternScanResult!!.startIndex + 2
|
||||
|
||||
addInstructionsWithLabels(
|
||||
insertIndex,
|
||||
TappingLabel,
|
||||
ExternalLabel("disabled", getInstruction(insertIndex))
|
||||
insertIndex, """
|
||||
invoke-static {}, $SEEKBAR->enableSeekbarTapping()Z
|
||||
move-result v0
|
||||
if-eqz v0, :disabled
|
||||
invoke-virtual { p0, v2 }, ${oMethod.definingClass}->${oMethod.name}(I)V
|
||||
invoke-virtual { p0, v2 }, ${pMethod.definingClass}->${pMethod.name}(I)V
|
||||
""", ExternalLabel("disabled", getInstruction(insertIndex))
|
||||
)
|
||||
}
|
||||
} ?: throw SeekbarTappingFingerprint.exception
|
||||
|
@ -1,31 +0,0 @@
|
||||
package app.revanced.patches.youtube.seekbar.tapping.fingerprints
|
||||
|
||||
import app.revanced.patcher.extensions.or
|
||||
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
object SeekbarTappingReferenceFingerprint : MethodFingerprint(
|
||||
returnType = "Z",
|
||||
accessFlags = AccessFlags.PUBLIC or AccessFlags.PUBLIC,
|
||||
parameters = listOf("L"),
|
||||
opcodes = listOf(
|
||||
Opcode.INVOKE_VIRTUAL, // oMethodReference
|
||||
Opcode.RETURN,
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.IGET_BOOLEAN,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.RETURN,
|
||||
Opcode.INT_TO_FLOAT,
|
||||
Opcode.INT_TO_FLOAT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.IF_NEZ,
|
||||
Opcode.RETURN,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.INVOKE_VIRTUAL, // pMethodReference
|
||||
Opcode.RETURN
|
||||
),
|
||||
customFingerprint = { methodDef, _ -> methodDef.name == "onTouchEvent" }
|
||||
)
|
@ -33,9 +33,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -38,9 +38,7 @@ import app.revanced.util.integrations.Constants.SEEKBAR
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -68,9 +68,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -35,9 +35,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -47,9 +47,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -48,9 +48,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -40,9 +40,7 @@ import app.revanced.util.resources.ResourceHelper.setMicroG
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
@ -18,7 +18,6 @@ import app.revanced.patches.youtube.utils.playerresponse.PlayerResponsePatch
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.DislikeFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.LikeFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.RemoveLikeFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.SpoofAppVersionPatchFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.TextComponentAtomicReferenceFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.TextComponentAtomicReferenceLegacyFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints.TextComponentConstructorFingerprint
|
||||
@ -45,7 +44,6 @@ import com.android.tools.smali.dexlib2.iface.reference.Reference
|
||||
ReturnYouTubeDislikeOldLayoutPatch::class,
|
||||
ReturnYouTubeDislikeShortsPatch::class,
|
||||
SettingsPatch::class,
|
||||
SpoofAppVersionPatch::class,
|
||||
VideoIdPatch::class
|
||||
],
|
||||
compatiblePackages = [
|
||||
@ -65,9 +63,7 @@ import com.android.tools.smali.dexlib2.iface.reference.Reference
|
||||
"18.37.36",
|
||||
"18.38.44",
|
||||
"18.39.41",
|
||||
"18.40.34",
|
||||
"18.41.39",
|
||||
"18.42.41"
|
||||
"18.40.34"
|
||||
]
|
||||
)
|
||||
]
|
||||
@ -78,7 +74,6 @@ object ReturnYouTubeDislikePatch : BytecodePatch(
|
||||
DislikeFingerprint,
|
||||
LikeFingerprint,
|
||||
RemoveLikeFingerprint,
|
||||
SpoofAppVersionPatchFingerprint,
|
||||
TextComponentConstructorFingerprint
|
||||
)
|
||||
) {
|
||||
@ -196,23 +191,6 @@ object ReturnYouTubeDislikePatch : BytecodePatch(
|
||||
}
|
||||
} ?: throw TextComponentConstructorFingerprint.exception
|
||||
|
||||
if (SettingsPatch.upward1840) {
|
||||
SpoofAppVersionPatchFingerprint.result?.let {
|
||||
it.mutableMethod.apply {
|
||||
addInstructionsWithLabels(
|
||||
0, """
|
||||
sget-object v0, Lapp/revanced/integrations/settings/SettingsEnum;->INITIALIZED:Lapp/revanced/integrations/settings/SettingsEnum;
|
||||
invoke-virtual {v0}, Lapp/revanced/integrations/settings/SettingsEnum;->getBoolean()Z
|
||||
move-result v0
|
||||
if-nez v0, :initialized
|
||||
const-string v0, "18.39.41"
|
||||
return-object v0
|
||||
""", ExternalLabel("initialized", getInstruction(0))
|
||||
)
|
||||
}
|
||||
} ?: throw SpoofAppVersionPatchFingerprint.exception
|
||||
}
|
||||
|
||||
if (SettingsPatch.upward1834) {
|
||||
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
|
||||
PlayerResponsePatch.injectCall("$FILTER_CLASS_DESCRIPTOR->newPlayerResponseVideoId(Ljava/lang/String;Z)V")
|
||||
|
@ -1,20 +0,0 @@
|
||||
package app.revanced.patches.youtube.utils.returnyoutubedislike.general.fingerprints
|
||||
|
||||
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||
|
||||
/**
|
||||
* In YouTube v18.40.34+, |segmented_like_dislike_button.eml| is no longer used by some accounts (a/b tests).
|
||||
* https://github.com/ReVanced/revanced-patches/issues/2904
|
||||
*
|
||||
* I suspect this is due to a new type of SpannableString called 'RollingNumber' in YouTube's internal code.
|
||||
* No in-depth reverse engineering has been done on this yet.
|
||||
*
|
||||
* After installing the app for the first time, the app version is spoofed to v18.39.41 for about 500ms before the restart dialog is shown.
|
||||
* By doing this we can bypass these a/b tests being applied.
|
||||
*/
|
||||
object SpoofAppVersionPatchFingerprint : MethodFingerprint(
|
||||
customFingerprint = { methodDef, _ ->
|
||||
methodDef.definingClass == "Lapp/revanced/integrations/patches/misc/SpoofAppVersionPatch;"
|
||||
&& methodDef.name == "getVersionOverride"
|
||||
}
|
||||
)
|
@ -8,7 +8,9 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWith
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||
import app.revanced.patcher.patch.BytecodePatch
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
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.patches.youtube.utils.returnyoutubedislike.shorts.fingerprints.IncognitoFingerprint
|
||||
import app.revanced.patches.youtube.utils.returnyoutubedislike.shorts.fingerprints.ShortsTextViewFingerprint
|
||||
@ -31,23 +33,25 @@ object ReturnYouTubeDislikeShortsPatch : BytecodePatch(
|
||||
override fun execute(context: BytecodeContext) {
|
||||
ShortsTextViewFingerprint.result?.let {
|
||||
it.mutableMethod.apply {
|
||||
val patternResult = it.scanResult.patternScanResult!!
|
||||
val startIndex = it.scanResult.patternScanResult!!.startIndex
|
||||
|
||||
val isDisLikesBooleanIndex = getTargetIndexDownTo(startIndex, Opcode.IGET_BOOLEAN)
|
||||
val textViewFieldIndex = getTargetIndexDownTo(startIndex, Opcode.IGET_OBJECT)
|
||||
|
||||
val isDisLikesBooleanIndex =
|
||||
implementation!!.instructions.indexOfFirst { instruction ->
|
||||
instruction.opcode == Opcode.IGET_BOOLEAN
|
||||
}
|
||||
// If the field is true, the TextView is for a dislike button.
|
||||
val isDisLikesBooleanReference =
|
||||
getInstruction<ReferenceInstruction>(isDisLikesBooleanIndex).reference
|
||||
|
||||
val textViewFieldReference = // Like/Dislike button TextView field
|
||||
getInstruction<ReferenceInstruction>(patternResult.endIndex).reference
|
||||
getInstruction<ReferenceInstruction>(textViewFieldIndex).reference
|
||||
|
||||
// Check if the hooked TextView object is that of the dislike button.
|
||||
// If RYD is disabled, or the TextView object is not that of the dislike button, the execution flow is not interrupted.
|
||||
// Otherwise, the TextView object is modified, and the execution flow is interrupted to prevent it from being changed afterward.
|
||||
val insertIndex = patternResult.startIndex + 6
|
||||
val insertIndex = implementation!!.instructions.indexOfFirst { instruction ->
|
||||
instruction.opcode == Opcode.CHECK_CAST
|
||||
} + 1
|
||||
|
||||
addInstructionsWithLabels(
|
||||
insertIndex, """
|
||||
# Check, if the TextView is for a dislike button
|
||||
@ -100,6 +104,19 @@ object ReturnYouTubeDislikeShortsPatch : BytecodePatch(
|
||||
}
|
||||
}
|
||||
|
||||
private fun MutableMethod.getTargetIndexDownTo(
|
||||
startIndex: Int,
|
||||
opcode: Opcode
|
||||
): Int {
|
||||
for (index in startIndex downTo 0) {
|
||||
if (getInstruction(index).opcode != opcode)
|
||||
continue
|
||||
|
||||
return index
|
||||
}
|
||||
throw PatchException("Failed to find target method")
|
||||
}
|
||||
|
||||
private const val INTEGRATIONS_RYD_CLASS_DESCRIPTOR =
|
||||
"$UTILS_PATH/ReturnYouTubeDislikePatch;"
|
||||
}
|
||||
|
@ -7,22 +7,38 @@ object ShortsTextViewFingerprint : MethodFingerprint(
|
||||
returnType = "V",
|
||||
parameters = listOf("L", "L"),
|
||||
opcodes = listOf(
|
||||
Opcode.INVOKE_SUPER, // first instruction of method
|
||||
Opcode.IF_NEZ,
|
||||
Opcode.RETURN_VOID,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.CHECK_CAST,
|
||||
Opcode.SGET_OBJECT, // insertion point, must be after constructor call to parent class
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.CONST_4,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.CONST_4,
|
||||
Opcode.IF_EQ,
|
||||
Opcode.CONST_4,
|
||||
Opcode.IF_EQ,
|
||||
Opcode.RETURN_VOID,
|
||||
Opcode.IGET_OBJECT, // TextView field
|
||||
)
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.GOTO,
|
||||
Opcode.IGET,
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.IF_NEZ,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.IF_NE,
|
||||
Opcode.IGET,
|
||||
Opcode.AND_INT_LIT8,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.IF_NEZ,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.GOTO,
|
||||
Opcode.IGET,
|
||||
Opcode.AND_INT_LIT8,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.IF_NEZ,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.RETURN_VOID
|
||||
),
|
||||
customFingerprint = custom@{ _, classDef ->
|
||||
classDef.methods.count() == 3
|
||||
}
|
||||
)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user