zurück zur Homepage

cHexShow

Download von cHexShow V1.0

Bei cHexShow handelt es sich um einen Hex-Editor im klassischen Sinn. Nutzen des Programms ist es primär, Dateien beliebiger Natur in hexadazimaler Byte-Darstellung zu betrachten oder zu manipulieren.

Dieser Text soll bei der Verwendung des Programm helfen. Dabei werden die einzelnen Funktionen kapitelweise erläutert:

  1. Portabilität und Minimalismus
  2. Das Datei-Menü
  3. Das Bearbeiten-Menü
  4. Das Hilfe-Menü und Hinweise zum Programm
  5. Darstellung
  6. Such-Funktion
  7. Konvertierung
  8. CodePages
  9. Optionen
  10. Editieren einer Datei
  11. Bit-Manipulation
  12. Tastenkürzel
  13. Versionen

Portabilität und Minimalismus

Um das Programm zu verwenden, wird nur die Datei cHexShow.exe benötigt. Es erfolgt keine Installationsroutine und es werden keine Einträge in der Registry vorgenommen. Auch ist es irrelevant, auf welchem Datenträger es liegt, es kann problemlos von Diskette oder CD-ROM gestartet werden.

Bei Programmende sowie bei Änderungen an CodePages wird eine Datei cHexShow.ini angelegt. In dieser werden sich Standort und Größe des Programms gemerkt, um beim nächsten Öffnen das Fenster wieder wie beim letzten Schließen darzustellen. Auch werden hier die Einstellungen der Programmoptionen und alle CodePages gespeichert. Diese Datei ist für den eigentlichen Programmablauf jedoch prinzipiell unnötig.

cHexShow arbeitet minimalistisch: Es benötigt relativ wenig Speicher für den Programmcode auf dem Datenträger (Version V1.0 ist nur knapp 50kB groß). Im Arbeitsspeicher wird zwar immer die gesamte geöffnete Datei vorgehalten, jedoch kein zusätzlicher Speicherplatz für weitere dynamische Daten verwendet. Es arbeitet ohne jegliche Threads und somit auch für den Prozessor ressourcenfreundlich.


Das Datei-Menü

Im Datei-Menü gibt es die obligatorischen Punkte, welche sich auch über Shortcuts ansprechen lassen:

  • <Strg-O> Öffnen...
    Öffnet eine Datei. Es kann immer nur eine Datei gleichzeitig geöffnet werden. Wird eine neue Datei geöffnet, obwohl die zur Zeit offene Datei abgeändert worden ist, so wird vor dem Öffnen der neuen Datei gefragt, ob man die alte Datei speichern möchte.

  • <Strg-S> Speichern
    Speichert eine Datei, in der Änderungen gemacht wurden.

  • <Strg-I> Informationen...
    Gibt dem Benutzer verschiedene Informationen über die Datei an. Neben der Länge, den Attributen, dem Namen und dem Pfad erhält man eine kleine Statistik über die Häufigkeit der Bytes in der Datei, was für verschiedene Zwecke hilfreich sein kann. Zusätzlich werden auch Wahrscheinlichkeitswerte darüber angegeben, ob es sich um eine ASCII- oder EBCDIC-Datei handelt. Diese Werte werden an Hand der Anzahl der Buchstaben und Ziffern innerhalb einer Datei festgelegt.

  • <Strg-Q> Beenden
    Beendet das Programm. Falls die gerade offene Datei verändert wurde und der entsprechende Punkt in den Optionen aktiviert ist, wird vor dem eigentlichen Schließen des Programm danach gefragt, ob die Datei gespeichert werden soll.


Das Bearbeiten-Menü

Der zweite Menü-Punkt ist in folgende Punkte unterteilt, die sich wiederum über Tastenkürzel ansprechen lassen:

  • <Strg-F> Suchen...
    Die Suchfunktion ermöglicht es in der geöffneten Datei nach Zeichenfolgen zu suchen.
    Für nähere Informationen siehe Such-Funktion.

  • <Strg-G> Gehe zu Adresse...
    Dieser Punkt erlaubt die freie Positionierung der Darstellung. Anstatt dahin zu scrollen, wo man gerade hin möchte, kann man hiermit zu einer genauen Adresse springen. Die Angabe der Adresse kann hexadezimal oder dezimal erfolgen. Weiterhin kann die Adresse relativ oder absolut angegeben werden. Bei einer relativen Adressangabe kann auch mittels einer negativen Angabe rückwärts gesprungen werden.

  • <Strg-K> Konvertierung und Kodierung...
    Will man eine Text-Datei zwischen ASCII- und EBCDIC-Code konvertieren, so wird dies in diesem Unterdialog ermöglicht.
    Weiterhin kann man hier eine Datei Verschlüsseln.
    Für nähere Informationen siehe Konvertierung.

  • <Strg-C> CodePage-Editor...
    In diesem Dialog lassen sich CodePages verwalten und editieren.
    Für nähere Informationen siehe CodePages.

  • <Strg-A> Optionen-Dialog
    Legt verschiedene Optionen zur Darstellung und zum Verhalten des Programms fest.
    Für nähere Informationen siehe Optionen.


Das Hilfe-Menü und Hinweise zum Programm

Im Hilfe-Menü gibt es zwei Unterdialoge:

  1. Der erste Dialog behandelt die Shortcuts (Tastenkürzel), mit denen das Programm bedient werden kann.

  2. Der zweite Dialog informiert in aller Kürze über das Programm. Hierzu sei soviel gesagt:

  3. Das Programm befindet sich in der Entwicklung und wird stetig weiter entwickelt. Für alle Schäden oder Probleme, die mit der Nutzung des Programms entstehen wird nicht gehaftet! Es wurde jedoch mit viel Sorgfalt entwickelt und wird vom Programmierer selbst täglich verwendet.

    Sollten Fragen zum Programm bestehen oder aber Anmerkungen gemacht werden wollen, Fehler gemeldet oder Sonderwünsche angebracht werden, sollen diese an folgende Adresse gesandt werden:

    whitedragon@chris-soft.de

    Die private Nutzung des Programms ist kostenlos. Sollte jemand das Programm allerdings exzessiv nutzen, so kann er mich gerne fragen, ob er mir ein Geschenk machen darf. Meine Wunschliste für Bücher ist lang!

    Bei gewerbliche Nutzung bitte ich um Anfrage der jeweiligen Firma bzw. des jeweiligen Amts. Auch hierfür bitte obige Mailadresse verwenden.


Darstellung

Die Darstellung einer Datei beginnt grundsätzlich in der ersten Spalte mit der Adresse der jeweilig dargestellten Zeile. Adressen werden im hexadezimalen Format XXXX:XXXX dargestellt, wobei der Doppelpunkt nur der Übersicht dient und keine weitere Bedeutung hat. Neben der Adresse erfolgt die Anzeige der Datei in hexadezimaler Schreibweise.

Mit der Taste <F5> kann die hexadezimale Darstellung geändert werden. Man hat die Wahl zwischen

  • Zwischenraum zwischen den einzelnen Bytes (Voreinstellung),

  • Zwischenraum nach je zwei Bytes,

  • Zwischenraum nach je vier Bytes oder

  • keine Zwischenräume zwischen den Bytes.

Je nach Einstellung kann es bis zu zwei weitere Spalten geben. Diese beiden stellen die Datei in ASCII- oder EBCDIC-Ansicht dar. Mit der Taste <F7> lässt sich die ASCII-Spalte ein- und ausschalten. Ebenso verhält es sich mit <F8> für die EBCDIC-Spalte.

Alle diese Einstellungen lassen sich auch über die Optionen festlegen.


Such-Funktion

Die Suchfunktion ist neben der eigentlichen Anzeige und Manipulation der Daten eine zentrale Funktion von cHexShow. Zunächst einmal lässt sich mit den Voreinstellungen wie in einem normalen Editor wie Notepad oder Word nach Zeichenketten suchen.

Man erreicht die Such-Funktion entweder über das Menü Bearbeiten oder den Shortcut <STRG-F>.

Die Suche kann vorwärts (in der Datei nach unten) oder rückwärts (nach oben) erfolgen.

Möchte man die letzte Suche wie eingegeben wiederholen, kann die <F3>-Taste verwendet werden. Um die Suche in beide Richtungen zu ermöglichen, kann mit der <F4>-Taste in die entgegengesetzte Richtung gesucht werden. Auf diese Weise kann man jederzeit zu einem vorherigen Fundort zurück springen.

Hat man eine EBCDIC-Datei geöffnet und möchte nach Zeichenketten suchen, so kann man auch dies, indem die entsprechende Funktion angewählt wird. Die eingegebenen Zeichen werden dann als EBCDIC-Zeichen interpretiert.

Die Suche nach Folgen von hexadezimalen Ziffern (0..9, a..f, A..F) ist ebenfalls möglich. Gesucht wird hier nicht nur an Byte-Grenzen, sondern auch an Halbbyte-Grenzen. In der Dateidarstellung 7c f3 11 6a 87 26 a2 wird die Suche nach 6a also an zwei Stellen fündig werden, nämlich im vierten und sechsten/siebten Byte.


Konvertierung

Aus verschiedenen Gründen wurden Konvertierungen realisiert, die auch zur Kodierung und Dekodierung von Dateien verwendet werden können. Teilweise sind diese Algorithmen sogar explizit für diesen Zweck implementiert.

Der Unterschied zwischen Konvertierung und Kodierung ist folgender:
Konvertierung bedeutet das Umsetzen eines Zeichensatzes in einen anderen. Bringt man beispielsweise einen Text aus dem ASCII- in das EBCDIC-Format, so findet eine Konvertierung statt. Auch die Veränderung aller Klein- in Großbuchstaben kann als Konvertierung bezeichnet werden.
Unter einer Kodierung ist hier die umkehrbare Veränderung des Textes gemeint. Dies kann mittels der Exklusiv-Oder-Transformation und einem Passwort stattfinden oder aber mit einer reversiblen (umkehrbaren) CodePage. Weitere Kodierungstechniken sind geplant.

Streng genommen versteht man normalerweise auch unter einer Konvertierung eine Form der Kodierung. Hier jedoch werden nur die Formen von Kodierung als solche bezeichnet, die wieder umkehrbar sind!

Der Konvertierungsdialog ist über das Menü Bearbeiten oder das Tastenkürzel <Strg-K> erreichbar.

Folgende Konvertierungen und Kodierungen sind bisher implementiert:

  • ASCII nach EBCDIC
    Alle Zeichen werden ins EBCDIC-Alphabet übertragen.

  • EBCDIC nach ASCII
    Alle Zeichen werden ins ASCII-Alphabet übertragen.

  • XOR-Kodierung
    Exklusiv-Oder-Verknüpfung mit einem anzugebenden String.

  • Verwendung einer CodePage
    Alle im Programm verfügbaren CodePages können zur Kodierung oder Konvertierung genutzt werden. In der Liste der Konvertierngstechniken werden die CodePages durch spitze Klammern (<> oder <<>>) gekennzeichnet, wobei die reversiblen CodePages durch doppelte spitze Klammern charakterisiert werden und die nicht umkehrbaren durch einfache.
    Nur bei den reversiblen CodePages ist die Möglichkeit angegeben, die Kodierung mehrfach stattfinden zu lassen.

Auf folgende Punkte sei hier noch hingewiesen:

Die XOR-Kodierung macht sich selbst wieder rückgängig und kann so zum Kodieren und Dekodieren verwendet werden.

Die Konvertierung zwischen ASCII und EBCDIC ist innerhalb der sichtbaren Zeichen umkehrbar. Binärdaten können auf diese Weise jedoch nicht kodiert werden, da eine eindeutige Dekodierung aller 256 Zeichen nicht möglich ist!


CodePages

CodePages werden dafür verwendet, um Texte bzw. ganz allgemein Daten von einem Byte-Format in ein anderes zu bringen. Eines der häufigsten Beispiele ist die Konvertierung zwischen ASCII- und EBCDIC-Texten.

cHexShow beinhaltet einen eigenen CodePage-Editor mit dessen Hilfe beliebige eigene CodePages angelegt werden können. Eine Verwendung dieser zur Kodierung einer Datei ist ebenfalls möglich. Der CodePage-Editor wird über das Bearbeiten-Menü oder die Taste <STRG-C> aufgerufen.

Die eingegebenen oder geladenen CodePages merkt sich cHexShow in der Datei cHexShow.ini.

Im Folgenden wird nun die Verwendung des CodePage-Editors erläutert:

Zuoberst befindet sich einen aufklappbare Liste, in der alle dem Programm bekannten CodePages aufgelistet sind. Man kann in dieser Liste eine CodePage zum Editieren wählen.

Darunter befinden sich drei Buttons "Importieren", "Exportieren" und "Neu erstellen":

  • Mittels der Import- und Export-Funktion lassen sich CodePages in eine eigene Datei auslagern oder daraus heraus laden. Auf diese Weise ist ein Austausch von CodePages mit anderen Personen möglich.

  • Will man eine CodePage neu erstellen, so wird man nach einem Namen für die neue CodePage gefragt. Im Anschluss daran wird eine Identitäts-CodePage angelegt. Dies bedeutet, dass zunächst einmal jedes Byte sich selbst zugeordnet wird. (Die Verwendung dieser CodePage hätte keinerlei Änderung der Daten zu Folge.) Diese neu angelegte CodePage lässt sich nach Belieben verändern.

Die untere Hälfte des CodePage-Editors dient dem Verändern der aktuell angewählten CodePage, wobei es mit den beiden Check-Boxen "Eingabe im Quell-Code-Bereich" und "Eingabe im Ziel-Code-Bereich" möglich ist, die Art der Eingabe zu beeinflussen.
Die Eingabe im Ziel-Code-Bereich ist die eher übliche: Man wählt einen Quell-Code, dem man einen Ziel-Code zuordnen möchte und tut dies. Anschließend drückt man "Code übernehmen" oder die <Enter>-Taste. Automatisch wird man zum nächsten Quell-Code weitergeleitet um dessen Ziel-Code einzugeben.
Die Eingabe im Quell-Code-Bereich verläuft genau umgekehrt und wird eher selten verwendet. Man wählt hier den Ziel-Code, dem man einen Quell-Code zuordnen möchte und wird nach Übernahme zum nächsten Ziel-Code weiter geleitet.

Die Check-Box "CodePage reversibel halten" sorgt dafür, dass die Verwendung der CodePage umkehr bleibt, die Zuordnung zwischen Quell- und Ziel-Code also in beide Richtungen eindeutig ist. Diese Check-Box wird bei der Wahl einer CodePage gesetzt oder gelöscht, kann aber auch vom User vor oder während der Editierens verändert werden. Wird eine CodePage bei gewählter Check-Box verändert, so tauscht das Programm die Zuordnungen so aus, dass die CodePage umkehrbar bleibt.


Optionen

Mit <Strg-A> kann man den Optionen-Dialog aufrufen, welcher folgende Möglichkeiten bietet:

  • <ESC> verlässt das Programm
    Ist diese Option angewählt kann man mittels der Escape-Taste das Programm verlassen.

  • Beim Beenden/Öffnen nach Speichern fragen
    Mit dieser Option kann man sichergehen, dass eine Dateiänderung nicht verloren geht, falls das Programm geschlossen wird.

  • Farbige Darstellung der verschiedenen Spalten
    Hierdurch ist es möglich, die Unterscheidung von Adressangabe, Hex, ASCII und EBCDIC auch farblich zu erhalten.

  • Beim Öffnen auf ASCII/EBCDIC prüfen
    Durch diese Option kann man veranlassen, dass das Programm beim Öffnen einer Datei prüft, ob es sich um eine ASCII- oder eine EBCDIC-Datei handelt. Dies geschieht durch eine einfache Statistik. Je nach Ergebnis selbiger werden die ASCII- oder die EBCDIC-Spalte dargestellt.

  • Immer mit ASCII-Spalte öffnen
    Immer mit EBCDIC-Spalte öffnen

    Ist die vorherige Option nicht gelöscht werden die angegebenen Spalten beim Öffnen einer Datei dargestellt.

  • Hex-Darstellung
    Diese aufklappbare Liste entspricht der Wahl der Hex-Darstellung mit Hilfe der <F5>-Taste (siehe Darstellung).


Editieren einer Datei

cHexShow arbeitet mit verschiedenen Modi. Bei jedem Programmstart befindet sich das Programm im Darstellungsmodus. In diesem kann man sich mit den Cursor-Tasten (rechts, links, hoch, runter, Pos1, Ende, SeiteHoch, SeiteRunter) in der Darstellung frei bewegen.

Mit der Taste <Einfügen> kann man den Modus wechseln. Die Reihenfolge ist wie folgt:

Darstellungsmodus >> Überschreibmodus >> Einfügemodus >> Darstellungsmodus

Der Überschreibmodus bietet die Möglichkeit die Datei zu editieren. Dies kann in der Hex-Darstellung sowie auch in der ASCII- oder EBCDIC-Spalte erfolgen. Änderungen in der Hex-Spalte funktionieren nur mit den bekannten hexadezimalen Ziffern 0-9 und a-f. In der ASCII- und EBCDIC-Spalte jedoch kann jedes beliebige sichtbare Zeichen eingegeben werden.

Im Einfügemodus können Hex-Zeichen (in der Hex-Darstellung) oder ganze Zeichen in ASCII- und EBCDIC-Spalte) in die Datei eingefügt werden, ähnlich einem Text-Editor. Beim Einfügen von Hex-Ziffern ist allerdings das Folgende zu beachten: Auf dem höherwertigen Halbbyte erzeugt eine Hex-Ziffer das Einfügen eines neuen Bytes. Niederwertige Halbbyte hingegen werden einfach überschrieben. Anders gesagt: Beim Einfügen von Halbbytes werden nachfolgende Bytes immer nur komplett verschoben. Es erfolgt keine Vermischung der Bytes.

Mit <Zurück> oder <Entfernen> können in beiden Editiermodi hexadezimale Ziffern oder Zeichen gelöscht werden. Auch hier gilt wieder, dass immer nur komplette Bytes gelöscht werden.


Bit-Manipulation

Mit der <F2>-Taste wird der Bit-Modus eingeschaltet. Dieser ist allerdings im Darstellungsmodus nicht sichtbar, nur in den Editiermodi. Wird der Bit-Modus aktiviert, wird bei eingeschaltetem Darstellungsmodus der Überschreibmodus eingeschaltet.

Der Bit-Modus stellt sich als ein kleiner Kasten dar, der immer unter bzw. über dem Cursor zu sehen ist. Dargestellt werden die Bits des Bytes, welches unter dem Cursor ist.

Der Bit-Modus besitzt ebenfalls einen Darstellungs- und zwei Editiermodi. Wie man bei der eigentlichen Darstellung mit der <Einfügen>-Taste zwischen den einzelnen Modi hin und her wechseln kann, so kann dies auch im Bit-Modus mit der <F2>-Taste geschehen:

kein Bit-Modus >> Darstellungsmodus >> Editiermodus >> kein Bit-Modus

Befindet sich der Cursor in der Hex-Spalte und ist gleichzeitig der Bit-Darstellungsmodus aktiviert, so wird zusätzlich das aktuelle Halbbyte durch ein Invertieren der entsprechenden Bits gekennzeichnet.

Im Darstellungsmodus verhält sich der Bit-Kasten einfach nur wie ein Anhängsel des Cursors. Man kann nach Belieben in der Datei umherwandern und der Kasten wandert mit. Im Editiermodus der Bit-Darstellung können die einzelnen Bits editiert werden. Gültige Zeichen sind selbstverständlich nur 0 oder 1, wobei der eingestellte Überschreib- oder Einfüge-Modus gültig ist. Im Einfüge-Modus werden die Bits bei der Bit-Eingabe rechts rausgeworfen.

Die Cursor-Steuerung ist im Bit-Modus leicht verändert. Mit rechts/links bewegt sich der Cursor über die einzelnen Bits und erst beim Überschreiten des ersten oder letzten Bits bewegt man sich ein Byte weiter. Mit hoch/runter bewegt man sich nun nicht zeilen-, sondern byteweise. Und mit Seite-Hoch/-Runter bewegt man sich nun zeilenweise.


Tastenkürzel

Im Folgenden sind alle möglichen Tastenkürzel mit kurzer Beschreibung angegeben:

<F1> Aufruf des Hilfe-Dialogs mit allen Tastenkürzeln.
<F2> Bit-Anzeige und -Manipulation.
<F3> Weiter suchen.
<F4> Suchen in entgegengesetzter Richtung.
<F5> Ändern der blockweisen Hex-Darstellung.
<F6> Anzeige-Zeichensatz wählen.
<F7> ASCII-Spalte ein-/ausschalten.
<F8> EBCDIC-Spalte ein-/ausschalten.
<Insert> Wechsel zwischen Darstellungs-, Überschreib- oder Einfüge-Modus.
<STRG-A> Aufruf des Dialogs mit den Optionen.
<STRG-C> Aufruf des Dialogs zur Verwaltung der CodePages.
<STRG-F> Aufruf der Such-Funktion.
<STRG-G> "Gehe zu Adresse"-Dialog.
<STRG-K> Konvertierung und Kodierung.
<STRG-O> Öffnen einer Datei.
<STRG-S> Abspeichern der Datei, wenn sie geändert wurde.

Versionen

16.12.2003, V1.0

  • Farbige Darstellung:
    Zur besseren Unterscheidung kann die gesamte Darstellung nun farbig erfolgen. Diese kann in den Optionen eingestellt werden. Default ist schwarz/weiß-Darstellung.

    • Adressen bleiben schwarz dargestellt.
    • Die Hex-Darstellung wird blau.
    • ASCII-Zeichen werden rot dargestellt.
    • EBCDIC-Zeichen sind grün.
  • CodePage-Editor:
    Es können nun zusätzlich zu ASCII und EBCDIC beliebig viele andere Code-Tabellen (CodePages) aufgebaut werden.

  • Konvertierungen:
    Jede CodePage kann zur Konvertierung von Dateien verwendet werden.
    Sind diese CodePages reversibel aufgebaut, lassen sie sich auch zur (mehrfachen) Kodierung beliebiger Dateien verwenden.

13.12.2003, V0.9

  • Verbesserung der "Gehe zu Adresse"-Funktion:

    • Neben der hexadezimalen Eingabe ist nun auch eine dezimale Eingabe zulässig.
    • Zusätzlich kann die Angabe der Adresse nicht mehr nur absolut, sondern auch relativ erfolgen. Auf diese Weise kann man auch innerhalb der Datei rückwärts springen.

  • Verbesserung der Bit-Anzeige/-Manipulation:

    • Die Anzeige ist nun anschaulicher und benötigt weniger Platz bei gleicher Qualität.
    • Kleine Anzeigefehler wurden ausgemerzt.

12.12.2003, V0.8

Die erste Version wurde mit V0.8 festgelegt, um anzuzeigen, dass sich das Programm noch in der Entwicklungsphase befindet.

zurück zur Homepage