Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
So, 22. Januar 2006, 00:00

Nintendo DS und Linux

Abb. 4: Health Screen

Kai Lauterbach

Abb. 4: Health Screen

Passthrough/xxxMe

Passthrough - Was?

Die so genannte Passthrough-Methode wird benötigt, da das DS-BIOS die Kommunikation zwischen der DS-Card und dem DS verschlüsselt. Dies verhindert das Ausführen von nicht verschlüsseltem Code. Die Verschlüsselung wurde noch nicht geknackt, und es existiert noch keine bekannte Backdoor. Die Passthrough-Hardware protokolliert die meiste Zeit die Kommunikation zwischen den beiden Komponenten, dem NDS und der DS-Card. Wenn der Header von der Karte zum NDS übertragen wird, was meist nach einem Reset (Z.B. beim Einschalten des NDS) der DSCard geschieht, wird dieser entweder ersetzt oder modifiziert. Die Veränderung besteht darin, dass die ARM7 Execute-Adresse (die Adresse, an der der auszuführende Code abgelegt ist) auf 0x80000C0 gesetzt wird, was die Adresse des GBA-Cardslots ist. Zudem wird die Prüfsumme im Header angepasst. Mit dieser Methode kann ARM9-Code nicht direkt ausgeführt werden, da das BIOS die Priorität auf die ARM7-CPU setzt. Die ARM9-CPU wird mit einer kleinen Schleife beschäftigt, die mit dem folgenden Code unterbrochen werden kann:

*(volatile uint32 *)0x027FFE24 = 0x02004000;

PassMe

Abb. 5: PassMe

Kai Lauterbach

Abb. 5: PassMe

Abb. 6: PassMe mit NDS-Spiel

Kai Lauterbach

Abb. 6: PassMe mit NDS-Spiel

Abb. 11: JTAG-Belegung

Kai Lauterbach

Abb. 11: JTAG-Belegung

Diese Variante (Abbildung 5) besteht aus einer Platine, auf der ein Chip aufgelötet ist. Dieser CPLD ist meist von der Firma XilinX. Die Platine wird zwischen den NDS und dem NDS Game platziert (Abbildung 6).

Durch diesen Aufbau bedient sich der PassMe der Passthrough-Technik. Der PassMe wird über eine JTag-Schnittstelle (Abbildung 11) programmiert (durch die Verwendung eines CPLD der Firma XilinX muss zum Programmieren die von XilinX kostenlos bereitgestellte Entwicklungssoftware verwendet werden), welcher meist aus einem parallelen Kabel besteht.

Der PassMe kann, je nach Bedarf, um eine USB-, USB 2.0-, Bluetooth- oder RS232-Schnittstelle erweitert werden (Abbildung 8, 9 und 10).

Abb. 8: Verbindungspunkte für die serielle Schnittstelle

Kai Lauterbach

Abb. 8: Verbindungspunkte für die serielle Schnittstelle

Abb. 9: PassMe mit serieller Schnittstelle

Kai Lauterbach

Abb. 9: PassMe mit serieller Schnittstelle

Abb. 10: PassMe mit USB-Schnittstelle

Kai Lauterbach

Abb. 10: PassMe mit USB-Schnittstelle

WifiMe

Hierbei wird auf einem Rechner mit einer WLAN-Karte ein NDS-Host emuliert. Dieser emulierte Host sendet Pakete, die für das Bestehen des Host benötigt werden. Auf dem Client-DS wird über die Nintendo-Firmware der emulierte Host ausgewählt. Nach der Abfrage, ob das Programm geladen werden soll, werden weitere Pakete vom Host übertragen, die den Header des zu übertragenden Programmes enthalten. Hier wird wieder die Execute-Adresse so gesetzt, dass sie auf den GBA-Kartenslot zeigt. Daraufhin wird der der NDS-Code aus dem eingelegten Speichermedium geladen. Die Kommunikation zwischen zwei unveränderten NDS geschieht normalerweise über eine mit 1024 Bit verschlüsselte Verbindung. Bis jetzt wurde diese Verschlüsselung nicht gehackt. Die Paket-Daten, die zwischen den kommunizierenden NDS übertragen werden, sind in einem Nintendo-spezifischen proprietären Format aufgebaut und sogar je nach Spiel unterschiedlich. Allein der IEEE 802.11-Header in den Paketen ist standardisiert. Im Moment ist ein WifiMe nur mit Windows XP möglich, da keine freie und dokumentierte Software existiert. Es gibt ein Projekt, dsmultiboot, für Linux. Dieses Projekt kann jedoch noch keine eigene Software booten lassen.

FlashMe

Beim FlashMe wird die Firmware des NDS durch eine modifizierte Version ersetzt. Dazu muss SL1 (Abbildung 3) überbrückt werden und das Flashprogramm über einen xxxMe ausgeführt werden. Die neue Firmware kann nun direkt NDS-Code aus dem GBA-Slot starten, falls dort welcher gefunden wird. Mit den neuen Firmware werden sämtliche Sicherheitsmechanismen deaktiviert, die ein Ausführen von nicht Nintendo-zertifizierter Software verhindern soll.

PassMe2

Abb. 7: PassMe2

Kai Lauterbach

Abb. 7: PassMe2

In den letzten beiden Firmware-Versionen des Nintendo DS wurden verschiedene Vorkehrungen getroffen, um die Passthrough-Methoden unmöglich zu machen. Daraufhin wurde der PassMe2 entwickelt, der diese Mechanismen umgeht (Abbildung 7). Der PassMe2 ist im Gegensatz zu dem ersten PassMe unflexibel, was an der im folgendem Text beschriebenen neuen Funktionsweise liegt. Nachdem der NDS eingeschaltet worden ist, wird zwischen dem NDS und dem NDS-Game bzw. der Gamecard, wie bei dem ersten PassMe, zunächst der Header ausgetauscht. Nach der Authentifizierung leitet der PassMe2 den NDS auf einen SWI-Call in die 4 MB RAM des NDS um, in das die Daten des eingelegten Spiels bereits geladen worden sind. Dieser SWI-Call springt dann in das SRAM auf dem GBA-Port. Das ist der Grund, warum der PassMe2 für ein spezielles Spiel programmiert sein muss. Im SRAM der eingelegten GBA-Flashkarte steht dann die Adresse des GBA-Ports, zu der dann gesprungen wird. Auf dem eingelegten Speichermedium, der GBA-FlashCard, ist der eigene Code abgelegt.

Zusatzhardware

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Newsletter
Neue Nachrichten