Viva la Vita

Die Idee ist simpel. Mit Emulatoren auf der PS Vita alte Spiele wie Super Mario und Pokemon Gold spielen zu können. Doch Sonys restriktives Verhalten macht es nahzu unmöglich Emulatoren auf der PS Vita zu installieren. Über viele Umwege, Bugs, Exploits und Tricks ist es dennoch möglich Peach zu retten und Pokemon zu fangen. Eine Geschichte über die vielen Umwege und Komplikationen einer eigentlich so einfachen Idee.

Die Vita und ihr Untergang

Die PS Vita war (und ist) einer der besten Handhelds, die je auf den Markt gekommen sind. Leider jedoch gibt es bis heute nur wenige gute Titel zum Spielen. Dennoch ist die Hardware unglaublich gut (Joysticks, großes Display, zwei (!) Touchscreens, gute Lautsprecher und sehr lange Akkulaufzeit) und eignet sich somit eigentlich perfekt für das Gerät, das man überall mit hin nimmt, um eine kurze Runde zu spielen.

Und obwohl man die alten PSP Spiele spielen kann, werden auch diese recht schnell alt. Dazu kosten Speicherkarten und auch die Spiele selbst sehr viel, wodurch die Konsole bei den Meisten früher oder später im Regal verstaubte.

Nun ist klar, dass Sony es nicht allzu einfach macht, Emulatoren zu installieren (hauptsächlich Copyright), aber selbst nachdem die Vita als legacy eingestuft wurde, gab es noch immer ein Entwicklerteam, das nur dafür zuständig war (und noch immer ist) keine Emulatoren möglich zu machen.


Es wird nicht mehr aktiv an der Konsole entwickelt, die Konsole ist quasi "tot".

Sony hat sich also aktiv darum gesorgt, dass es bloß nicht möglich wird, andere Spiele als die von Sony selbst zu spielen. Mittlerweile gibt es einige Tricks und Hilfen (namenhaft Rejuvenate und HENkaku), um Emulatoren auf der Vita zum laufen zu bekommen. Jedoch haben auch diese Limitierungen und gehen nur bis zu einer bestimmten Betriebssystem-Version, wodurch oft noch andere Wege gefunden werden müssen.

Für alle Versionen über 3.60 wurden seit Monaten keine Exploits mehr gefunden und es ist zu bezweifeln, ob überhaupt noch welche gefunden werden, da mittlerweile alle Wege gepatched wurden, die bekannt waren.

Das Ziel

Das Ziel ist klar. Emulatoren auf der Vita installieren und damit Spiele vom Gameboy Advanced oder ähnlichen Konsolen spielen können.

Dabei ist das Vorgehen wie folgt:

  • Zuerst muss ein Exploit geschaffen werden, um andere Daten, abgesehen von Spieledaten und Fotos, auf die Vita zu bekommen.
  • Über diesen installieren wir einen Homebrew Loader, quasi das Programm, über welches wir den gewollten Emulator auswählen und starten können.
  • Schließlich müssen wir noch die eigentlichen Emulatoren und Spiele auf den Handheld bekommen.

Das Ausnutzen von Schwachstellen in einem Programm, um mehr Möglichkeiten der Verwendung zu öffnen (z.B. Admin Rechte)

Selbst geschriebene Programme, die nicht vom Entwickler (hier Sony) stammen und auch nicht vom Entwickler gewollt sind (z.B. Linux auf einer PlayStation 3 installieren).

Im Prinzip ähnelt dieser Weg sehr dem jailbreaken eines iPhones oder dem rooten eines Android Gerätes. Wir schaffen uns erst vollen Zugang zum Gerät, damit wir alles installieren können, was wir wollen. Dann installieren wir ein Programm, auf dem wir die Emulatoren und schließlich Spiele spielen können. Da aber, wie schon eingehens erwähnt, Sony uns den Weg nicht ganz so einfach macht, müssen wir noch ein paar Tricks anwenden.

Der Weg dahin

Fangen wir simpel an. Bei der PSP konnte man noch das gesamte Spiel von der Konsole auf den PC ziehen, dann einfach die richtigen Dateien ändern und wieder zurück auf die PSP ziehen, und schon war der Homebrew fertig. Bei der Vita jedoch kann man nur noch Savegames zwischen PC und Vita schieben, was das Ganze um einiges komplizierter macht. Zwar können wir alle relevanten Daten in ein Savegame packen, aber wir brauchen noch immer eine Boot-Datei im Spiel selbst, damit der Homebrew auch ausgeführt wird. Wir werden den Homebrew Loader VHBL verwenden, der den nativen PSP Emulator der Vita verwendet.

Ein Homebrew Loader,welcher über den PSP Emulator läuft. Die Abkürzung steht für Vita Half-Byte Loader und ist ein Open Source Projekt.

Das heißt: Wir starten ein altes PSP Spiel, der PSP Emulator der Vita wird gestartet, dann starten wir VHBL und darüber können wir unsere Emulatoren starten. Dafür brauchen wir auf der Vita schon ein PSP Spiel, das auch exploitable ist, wo wir VHBL also auch wirklich verwenden können. Viele Spiele patched Sony recht schnell nach dessen Erscheinung, aber es gibt noch immer Spiele im Store, die es möglich machen.

Exploits wie HENkaku funktionieren, indem man eine Website aufruft, die einen Exploit im Webbrowser ausnutzen, wodurch der Homebrew Loader starten kann. Dies muss aber auch nach jedem Neustart gemacht werden und geht nur bis zu einer gewissen Version (3.60).

Da unsere Lösung aber permanent sein soll, müssen wir eben diese Boot-Datei irgendwie in bei den Spieledaten selbst einlagern, und nicht nur in einem Savegame.

Teil 1: Die Daten auf die Vita bekommen

Kümmern wir uns aber zuerst um die Daten, die wir in einem Savegame verstecken wollen. Zuerst brauchen wir überhaupt mal ein Savegame des Spiels, also starten wir einmal das Spiel, erstellen eine Sicherung im Spiel und laden sie auf den PC. Wenn es nur so einfach wäre..

Wie bekommen wir das Savegame auf den PC? Eigentlich mit Sonys eigenem CMA (Content Manager), dieser überprüft aber, ob die Vita auch auf der aktuellen Version ist. Gerade diese wollen wir ja aber NICHT haben, da all die Aktualisierungen seit mittlerweile knapp zwei Jahren keine neuen Funktionen mehr einbringen, aber nur unsere Wege zum Emulator erschweren.

Wir verwenden also einen anderen CMA, zum Beispiel OpenCMA oder QCMA, die nicht von Sony, aber von Usern selbst geschrieben wurden. Wenn aber der CMA nicht auf die Version prüft, macht das die Vita selbst, also müssen wir auch das umgehen. Der Vita kann man diese Aktion leider nicht unterbinden lassen, aber wir können ihre Verbindung zum Internet abfangen und so tun, als wären wir ein Aktualisierungsserver von Sony. Wir verwenden also einen Netzwerkspoofer, dann lassen wir die Vita in unserem Netzwerk über einen Proxy verbinden, der auf unseren PC führt und lassen die Vita wissen, dass sie auf der vermeintlich aktuellsten Version sei.

Jetzt können wir das Savegame endlich auf unseren PC ziehen. Dieses wird unter Dokumente/PS Vita/PSSAVEDATA/xxxx/yyyy/ abgespeichert, wobei das xxxx gerätespezifisch ist und yyyy die GameID des Spiels ist. Wir packen die VHBL-Daten als Zip-Datei mit dem Namen INSTALL.ZIP, damit die Boot-Datei die Daten später finden kann. Jetzt noch das Savegame wieder zurück auf die Vita spielen und Teil 1 ist fertig.

Teil 2: Der Email-Exploit

Wir wollen also die Boot-Datei im Spieleverzeichnis selbst ablegen, damit diese auch gestartet wird, wenn wir das Spiel starten und der Homebrew Loader geladen wird. Da dies aber nicht über die CMA geht, brauchen wir einen Exploit, um auf Bereiche des Filesystems Zugriff zu bekommen, den wir eigentlich nicht haben.

Dafür nehmen wir die Boot-Datei und benennen sie zuerst zu #0 um. Diese Datei hängen wir an eine Email an, die wir uns selbst senden. Hierfür muss die Email App auf der Vita eingerichtet sein, damit die Email auch wirklich ankommt. Jetzt der wichtige Part, der Betreff der Email. In diesen kommt das Verzeichnisziel, also der Ort, an dem die Datei abgelegt werden soll. Dieser baut sich so auf: ux0:pspemu/PSP/GAME/SpieleID/PBOOT.PBP Wobei SpieleID mit dem vorhin herausgefundenen String yyyy ausgetauscht werden muss.

Wenn wir die Email auf der Vita empfangen, wird die Vita die Datei #0 als Bild erkennen und nach unserer Aufforderung versuchen zu öffnen. Damit wird der Code in der Datei ausgeführt und die ganze Datei wird an dem im Betreff eingestellten Verzeichnis abgelegt. Wichtig ist, bei der Fehlermeldung nicht auf OK zu klicken, aber die App einfach zu schließen, da die Vita sonst alles revidieren würde.

Nun haben wir also unsere Boot-Datei und unseren sonstigen Dateien auf der Vita, jetzt muss die Installation nur noch ausgeführt werden.

Teil 3: Datenbank und Installation

Bevor wir den Homebrew Loader installieren können, muss die Datenbank erst neu aufgebaut werden. Mit HOME + POWER + R-TRIGGER kommen wir in den Recovery Mode, wo dies möglich ist. Damit werden alle Daten auch geladen, die Vita wird neu gestartet und eine Installation ist nun möglich!

[Sidenote: Beim Datenbankneuaufbau werden alle anderen alten Homebrew Installationen gelöscht!]

Wenn wir jetzt das Spiel wie immer starten, wird sich das erste Mal VHBL installieren (sieht aus wie eine Kommando-Zeile) und damit ist alles für das große Finale fertig!

Teil 4: Emulatoren und ROMs installieren

Wenn also der Homebrew Loader läuft, brauchen wir noch ein paar Homebrews, also die Emulatoren (und Spiele, sonst wäre es ja langweilig).

Die Emulatoren werden einfach auf den PC gedownloadet und mit QCMA (oder ähnlichen Programmen, wie bei dem Überspielen der VHBL Dateien) in den Ordner (PSP/Other) auf der Vita geladen. Mit dem integrierten Filebrowser von VHBL kann dann zu eben diesem Ordner gewechselt und die Emulatoren einfach ausgewählt und installiert werden.

Die ROMs übertragen wir genau so. Hierbei ist jedoch noch zu beachten, dass man alle ROMs in einen Ordner, benannt je nach Name des Emulators, laden sollte, da einige Emulatoren automatisch nach Ordnern mit eben diesen Namen suchen.


Read Only Memory, in diesen Dateien sind die Spiele selbst gespeichert. Der Name rüht daher, dass Spiele damals eben oft auf Cartridges ausgeliefert wurden, also nicht zum Neubeschreiben gedacht waren.

Bitte sei so fair und lade dir nur legale ROMs von Spielen herunter, die du schon besitzt.

Und damit sind wir durch! Neue Emulatoren und ROMs kann man auch nachträglich noch hinzufügen und VHBL sollte auch nach einem Neustart noch immer installiert und funktionabel sein.

Als Walkthrough

Und weil es so schön war, hier noch mal der chronologische Ablauf dieses Unterfangens:
  1. Vorbereitung
    1. QCMA installieren, Email auf der Vita einrichten
    2. Überprüfen, ob die Vita wirklich auf maximal Version 3.52 ist und ob ein PSP Spiel installiert ist, welches auch wirklich exploitable ist (Mehr Informationen dazu hier)
    3. Dieses Spiel mindestens einmal starten und ein Savegame erstellen
  2. Backup: Ein komplettes Backup der Vita erstellen, für den Fall, dass etwas schief geht
  3. VHBL installieren
    1. Die richtige Version von VHBL downloaden (siehe Link)
    2. Den Homebrew einmal entpacken und wieder als ZIP verpacken (WICHTIG: hierbei die Einstellungen "no compression" auswählen und die Datei INSTALL.ZIP nennen)
    3. Bevor wir QCMA verwenden können, müssen wir einen Netzwerkspoofer verwenden, damit die Vita glaubt, sie sei auf der aktuellsten Version
      1. Den Spoofer starten
      2. Auf der Vita einen Proxy mit den Daten aus dem Spoofer einstellen
    4. Das Savegame des PSP Spieles per QCMA auf den PC ziehen
    5. Dieses sollte nun unter Dokumente/PS Vita/PSSAVEDATA/xxxx/yyyy/ zu finden sein (xxxx und yyyy sind hier spezifisch für die Vita und das Spiel, sollten aber einfache Strings aus Buchstaben und Zahlen sein)
    6. In diesem Ordner sollten diese Dateien liegen:
      • ICON0.PNG
      • PIC1.PNG
      • DATA.BIN
      • PARAMS.SFO
    7. Hierzu wird nun die INSTALL.ZIP gelegt und dann wieder QCMA das gesamte Savegame auf die Vita gezogen
  4. FailMail-Emailexploit
    1. Die Datei PBOOT.PBP (siehe Link) umbenennen zu #0
    2. Nun schreiben wir uns eine Email, bei welcher die #0 als Anhang mit dabei ist
    3. Der Betreff muss so aufgebaut sein: ux0:pspemu/PSP/GAME/SpieleID/PBOOT.PBP
      1. Hierbei ist die SpieleID der yyyy String aus dem vorherigen Teil
    4. Email senden und auf der Vita öffnen
    5. Die Vita wird #0 als Bild erkennen, auf das Bildicon klicken, dann öffnet sich eine Fehlermeldung, hier aber NICHT auf OK klicken, die Email-App einfach schließen
  5. Datenbank neu aufbauen lassen
    1. Das Recovery Menu kann über HOME + POWER + R-TRIGGER erreicht werden
  6. Wenn nun das PSP Spiel gestartet wird, sollte VHBL sich das erste mal installieren
  7. Emulatoren installieren
    1. Emulatoren bzw. Homebrews auf PC downloaden
    2. Diese auf dem PC unter den Savegames (irgendwo bei Dokumente/PS Vita/...) ablegen
    3. per QCMA auf die Vita spielen, also auf der Vita unter Saved Data (PSP/Other) die Emulatoren auswählen
    4. Nach der Übertragung VHBL starten, mit dem Dateiexplorer zu dem Ordner /PSP/SAVEDATA/ wechseln, den gewollten Emulator auswählen und installieren, fertig!
    5. ROMs sollten dann alle zusammen in einen Ordner gelegt werden, welcher dann genau wie ein Emulator übertragen wird
  8. Mario spielen

Links

Fazit und Ausblick

Sony macht es einem nahezu unmöglich, seine Vita so zu verwenden, wie man möchte. Das an sich ist kein unbekanntes Verhalten, jedoch gibt sich Sony hier noch mehr Mühe als alle anderen Firmen.

Während nahezu alle Exploits wenige Wochen nach dem Erscheinen direkt wieder aus dem Store genommen werden und noch immer Updates erscheinen, die all dies nur noch schwieriger machen, vermindern sich die Chancen auf eine erfolgreiche Homebrew Installation immer weiter.

Während die Installation von Emulatoren unter 3.52 gerade noch so möglich war, musste man für Versionen 3.52-3.60 schon bei jedem Start der Vita das ganze Prozedere von neu machen (hier jedoch mit HENkaku, wodurch das Aufrufen einer Website mit der Vita schon genügte), und seit 3.61+ gibt es keine bekannten Wege mehr.

Ob es all den Aufwand wirklich wert war? Vielleicht. Vielleicht auch nicht. Dennoch hat es einen riesen Spaß gemacht, irgendwelchen abstrusen Wege zu gehen, in der Hoffnung, dass es doch irgendwann mal funktioniert. Zumindest hat meine Vita jetzt wieder einen Grund, um in die Hand genommen zu werden.

Und so bleibt nur noch eins zu sagen: Update bloß NIE eine Vita!

Christopher Katins
Christopher Katins
Doktorand & HCI Researcher