
Una implementación de baton drop (CVE-2022-21894) para armv7 (MSM8960)
Dado que la corrección de policyhax (también conocido como golden key) realmente funciona en sistemas Qualcomm, conseguí un Dell XPS 10 funcional pero vendido por piezas para portar baton drop a MSM8960.
Aquí está el resultado.
Extrae image.7z a tu dispositivo USB formateado en GPT fat32, copia tu aplicación de arranque EFI sin firmar a \boot.efi, arranca tu dispositivo Windows RT MSM8960 con él y disfruta.
Todo el src del payload (incluyendo divide.obj de MS CRT, que stage2 requiere), está incluido. Para compilar, usa un símbolo del sistema de compilador cruzado MSVC. Ejecuta make_cert.bat para crear un certificado autofirmado, build_mcupdate.bat para compilar stage1, build_stage2.bat para compilar stage2, build_boot.bat para compilar el boot.efi de hola mundo.
0xA000_0000. Probablemente podría establecerse más adelante si quisieras usar baton drop solo para un jailbreak de UMCI (al explotar baton drop, el menú de opciones avanzadas muestra la opción nointegritychecks); recuerda que en la explotación de win8.x se requiere que osdevice sea un volumen cifrado con BitLocker con el bit 0 de la bandera de clave establecido (puede establecerse manualmente como es el caso de payload.vhd, pero normalmente se establece para VMK sellado por TPM con arranque seguro para validación de integridad).
0xC000_0000 funciona para que baton drop cargue un payload, pero en una situación de doble arranque provocaría que NT no arranque.hal.dll ha sido parcheado para añadir mcupdate.dll a sus imports, y está autofirmado.mcupdate.dll carga efiesp:\stage2.dll y efiesp:\boot.efi, obtiene todos los punteros que stage2 necesita y llama al punto de entrada de stage2.BlpArchSwitchContext para volver al contexto de firmware y llamar a los servicios EFI