online: 2
Rekord: 57

Last update:
2005/04/20

Home
Übergeordnete Seite
Search:
Suche starten
In English, please!

CFX Hacking

Die optimale Art den Casio CFX zu hacken

Es gibt grundsätzlich 2 Möglichkeiten, den Casio CFX zu hacken:

  • Die eine wäre, dazu nur den Rechner selbst zu benutzen, und dabei diverse Bugs des Casio Betriebssystems bei der Speicherverwaltung auszunutzen, die dafür sorgen, dass sich zwei Speicherbereiche im RAM (etwa der Speicher einer Matrix und der Grafikspeicher, oder der Speicher eines Programms und der Speicher für dynamische Graphen) überlappen. Auf diese Weise können dann z.B. über den Programmeditor die Speicherinhalte der dynamischen Graphen, oder durch das Umschalten in den Grafikmodus die Speicherinhalte der Matrizen eingesehen werden. Ein Beispiel für diese Art des Hackens ist das sogenannte eXtended Matrix System (XMS), das auf den meisten Casio CFX Hacking - Sites dokumentiert ist.
  • Für die zweite Möglichkeit dagegen benötigt man einen PC, ein Linkkabel und einen Hex - Editor, man kann dann das RAM Image des Taschenrechners in Form eines Backups auf den PC übertragen und als Hexdump im Hex Editor studieren. Ein paar Kenntnisse in Assemblerprogrammierung sollte man dazu allerdings haben, weil man mit Hexdumps sonst wahrscheinlich wenig anzufangen weiß.
Die 1. Möglichkeit halte ich für wenig sinnvoll, weil Daten auf diese Weise zwar "eingelesen" werden können, aber man eigentlich gar nichts damit anfangen kann. Was man sieht sind nur wirre Folgen von Zeichen und Befehlen im Programmeditor oder ein Durcheinander von Pixeln im Grafikmodus. Genaue Speicherinhalte oder Adressen sind aber nicht ermittelbar, und es sind daher auch keine Rückschlüsse irgendwelcher Art über die Struktur der Daten im Speicher des Casio CFX oder über die Art der Speicherverwaltung möglich. Von "Hacken" kann in dem Sinne also eigentlich überhaupt nicht die Rede sein.

Als unbekehrbarer Assembler - Programmierer mit einer ausgeprägten Vorliebe für Hexdumps bevorzuge ich daher natürlich die 2. Methode, die sehr effizient ist (denn schließlich habe ich auf diese Weise ja jede Menge über Struktur der Daten im RAM und über die interne Arbeitsweise des Rechners herausgefunden). Und das geht so:




  1. Übertrage zunächst ein komplettes Backup vom GTR zum PC und speichere es in einer Datei. Das Backup enthält das RAM - Image des Rechners, also den kompletten Inhalt des Speichers des GTR zur Zeit, als das Backup übertragen wurde.

  2. Öffne die Datei mit einem beliebigen Texteditor (dazu reicht bereits das Windows Word Pad aus). Hast du zur Übertragung die Software Casio FA-123 von Casio verwendet, wird das Backup als .CAT - Datei gespeichert und hat folgendes Format:


%Header Record
Format:MEM
Communication SW:0
Data Type:BU
Capacity:32770
Data Name:Backup
Group Name:
Model:ZX933
Option:001000000000FFFFFFFFFFFFFFFF
%Data Record
04000000000000510000000000002301
01510000000000002301700000000000
...
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA

%End

Bei der genau 64K langen Zeichenkolonne zwischen der %Data Record und der %End - Deklaration handelt es sich um den Hexdump des RAM Images, also um die hexadezimale Darstellung der Speicherinhalte, wobei die ersten beiden Zeichen (im Beispiel 04) das erste Byte im Speicher, und die letzten beiden (im Beispiel AA) das letzte darstellen. Darum ist der Hexdump mit 64K Zeichen auch genau doppelt so groß wie der 32KB RAM des Rechners. Kopiere nun den gesamten Hexdump.

Achtung: zwar gibt die Capacity - Deklaration in der Datei 32770 Bytes an, aber das ist egal: das RAM Image beinhaltet IMMER GENAU 32KB (also 32768 Bytes) bzw. GENAU 64KB (65536 Bytes) bei Rechnern mit größerem RAM Chip. Es spielt auch keine Rolle, dass der Rechner nach einem Reset nur 30677 Bytes als frei anzeigt: der RAM ist trotzdem 32KB groß, aber 2091 Bytes sind für die Speicherverwaltung reserviert.

  • Öffne einen Hex - Editor (ohne Werbung machen zu wollen, aber hier kann ich nur Stefan Fleischmann´s WinHex empfehlen, das mir bisher wirklich sehr gute Dienste geleistet hat) und füge den Hexdump mit der Option "ASCII Hex" ein. Dass du diese Option verwendest ist wichtig, denn sonst interpretiert der Hex - Editor die Zeichenfolge nicht als Folge hexadezimaler Werte, die in eine Folge von Bytes zu konvertieren ist (z.B. 414243 in ABC), sondern direkt als Folge von Bytes ohne zu konvertieren (414243 z.B. wird dann als Hexdump 343134323433 ausgegeben), vernünftiges Arbeiten mit dem RAM Image wäre dadurch unmöglich. Achte also unbedingt darauf, dass du diese oder eine ähnliche Option, falls du einen anderen Hex - Editor benutzt, verwenden musst - wenn das Image eines 32KB RAMs bis zur Adresse FFFF anstatt 7FFF reicht, hast du offensichtlich irgend was falsch gemacht.

    Beachte außerdem, dass du eben NICHT die komplette Backup - Datei in den Hex - Editor laden darfst, sondern NUR den Hexdump!
  • Nun zeigt dir der Hexeditor von jedem Byte im RAM des Casio CFX die genaue Adresse sowie den genauen Speicherinhalt in hexadezimaler Form und als Zeichen an, und du kannst das RAM Image deines Rechners ganz genau analysieren!

    Um möglichst effizient an Informationen über die Struktur von Daten im RAM oder das Speichermanagement des Casio CFX zu gelangen, ist es außerdem hilfreich, am Taschenrechner immer nur Kleinigkeiten zu ändern und die entsprechenden RAM Images miteinander zu vergleichen (z.B. das Image eines resetteten GTR und das eines Rechners, bei dem nach dem Reset der Variablen A ein bestimmter Wert zugewiesen wurde).
    Es ist im Übrigen auch möglich, manipulierte RAM Images zurück auf den Rechner zu überspielen, indem man die oben beschriebene Prozedur einfach umkehrt.

    Copyright (C) 2004 by Marco Kaufmann