UDPIH ist ein Exploit für die Wii U, welcher ein Versäumnis beim Parsen der USB-Deskriptoren ausnutzt, um unsignierten Code kurz nach dem Starten der Konsole auszuführen. In Verbindung mit dem Wii U Recovery Menu ideal zum Unbricking von bspw. Coldboot-Haxchi-Bricks!
Erklärung
Mit diesen Deskriptoren stellen USB-Geräte verschiedene Informationen über sich selbst bereit – bspw. die USB-Version, die Hersteller- und Produkt-ID, usw. Zuerst werden beim Start die Geräte-Deskriptoren vom USB-Host-Stack gelesen; anschließend folgen die Konfigurations-Deskriptoren. Diese Deskriptoren haben keine feste Größe, sondern lege diese selbst in einem vorgegebenen Feld fest. Zudem müssen einige Felder zusätzlich byte-geswapped werden, da diese nur in Little Endian vorliegen, aber in Big Endian benötigt werden.
Nintendo hat es versäumt, zu prüfen, ob die angegebene Größe der tatsächlichen Größe entspricht, was einen "out-of-bounds" Byteswap ermöglicht. Der Blogbeitrag von GaryOderNichts geht tiefer ins Detail.
Verwendung
Um den Bug auszunutzen, muss man also ein Gerät besitzen, welches USB-Geräte und somit beliebige USB-Deskriptoren emulieren kann. Die populärsten sind zweifelsohne der Raspberry Pi Pico, Pico 2 und der Raspberry Pi Zero, die alle sehr günstig zu haben sind. Eine genaue Anleitung stellt GaryOderNichts auf GitHub zur Verfügung – kurz gesagt muss der Pi Pico geflashed und beim Pi Zero ein Kernel-Modul integriert werden. Das Steam Deck funktioniert auch, benötigt aber noch ein paar zusätzliche Schritte. Eine hackbare Nintendo Switch funktioniert ebenfalls.
Anschließend muss das Recovery Menu auf die SD-Karte der Wii U platziert und beim Start der Konsole (beim "Wii U" Logo) das USB-Gerät (Pi, Switch, …) eingesteckt werden.
Hinweise
- Kein anderes USB-Gerät darf verbunden sein
- Verwende nur die vorderen USB-Ports
- Falls der Standby-Modus aktiviert ist, ziehe vorher den Stecker und stecke die Wii U erneut an