
Eine Implementierung von baton drop (CVE-2022-21894) für armv7 (MSM8960)
Da der Fix von policyhax (aka golden key) tatsächlich auf Qualcomm-Systemen funktioniert, habe ich ein funktionierendes, aber als Ersatzteile verkauftes Dell XPS 10 aufgetrieben, um baton drop auf MSM8960 zu portieren.
Hier ist das Ergebnis.
Extrahieren Sie image.7z auf Ihr GPT fat32-formatiertes USB-Gerät, kopieren Sie Ihre unsignierte EFI-Boot-Anwendung nach \boot.efi, booten Sie Ihr MSM8960 Windows RT-Gerät damit, viel Spaß.
Der gesamte Payload-Quellcode (einschließlich divide.obj aus der MS CRT, den stage2 benötigt) ist enthalten. Verwenden Sie zum Bauen eine MSVC-Cross-Compiler-Eingabeaufforderung. Führen Sie make_cert.bat aus, um ein selbstsigniertes Zertifikat zu erstellen, build_mcupdate.bat, um stage1 zu bauen, build_stage2.bat, um stage2 zu bauen, build_boot.bat, um das Hello-World-boot.efi zu bauen.
0xA000_0000. Er könnte wahrscheinlich später gesetzt werden, wenn man baton drop nur für einen UMCI-Jailbreak verwenden möchte (wenn baton drop ausgenutzt wird, zeigt das Menü für erweiterte Optionen die Option nointegritychecks an); denken Sie daran, dass bei win8.x die Ausnutzung erfordert, dass osdevice ein mit BitLocker verschlüsseltes Volume mit gesetztem Key-Flag-Bit 0 ist (kann manuell gesetzt werden, wie im Fall von payload.vhd, ist aber normalerweise für VMK gesetzt, das durch TPM mit Secure Boot zur Integritätsprüfung versiegelt ist).
0xC000_0000 funktioniert, damit baton drop eine Nutzlast lädt, aber in einer Dual-Boot-Situation dazu führen würde, dass NT nicht bootet.hal.dll wurde gepatcht, um mcupdate.dll zu seinen Importen hinzuzufügen, und selbstsigniert.mcupdate.dll lädt efiesp:\stage2.dll und efiesp:\boot.efi, beschafft alle Zeiger, die stage2 benötigt, und ruft den Einstiegspunkt von stage2 auf.BlpArchSwitchContext auf, um zurück zum Firmware-Kontext zu wechseln und EFI-Dienste aufzurufen