ubuntuusers.de

Wozu HEX-Editoren?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

roal

Avatar von roal

Anmeldungsdatum:
26. November 2005

Beiträge: 323

Wofür ist ein HEX-Editor gut?

Im Screenshot von Bless habe ich so eine .so Datei darin gesehen Also eine Engine. Wie soll man aber nur mit Hexadezimalzahlen etwas programmieren können. Das kapier ich nicht.
Ist mehr eine Verständnisfrage?

LeoManiac

Anmeldungsdatum:
3. Mai 2005

Beiträge: 756

Ich denke das ist nur eine Veränständnisfrage.
Hex-Editoren kann man zb. sehr gut gebrauchen um ein eigenes Dateiformat zu entwicklen oder ein anderes zu entschlüsseln, Header Informationen oder sonstiges auslesen.
Wenn du dich damit mal befassen willst hier gibts ne Menge Dokumentationen über verschiedene Dateiformate http://www.wotsit.org/

Das ist aber nur ein Anwendungsfall von vielen.

ps: Viele Dateiformate bestehen einfach nur aus kurzen Bit-Sequenzen die für Parameter stehen die wiederrum von bestimmten Bit-Reihenfolge getrennt sind und zwischendurch evl. sogar Klartext um das zu bearbeiten bietet sich ein Hex Editor einfach an damit kannst die komplette Datei Byte für Byte (also 00-FF) bearbeiten.
Einige Internetprotokolle sind übrigens genauso aufgebaut um halt Traffic zu sparen bzw. bei Dateien Speicherplatz.

lilith2k3

Avatar von lilith2k3

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 2999

Wohnort: OS

Wofür ist ein HEX-Editor gut?

um binärdateien lesen, verändern und wieder schreiben zu können.
grundsätzlich kann man zwischen binär und textdateien unterscheiden.
während in den letzteren sich die genutzten symbole auf den ASCII-Bereich der tastaturzeichen (salopp formuliert) beschränken, liegen die symbole in binärdateien nicht ausschließlich im ascii-format vor.
beispielsweise kann man ein beliebiges binärprogramm mit einem hexeditor nach ASCII-zeichen absuchen und diese bequem durch andere ersetzen.

darüber hinaus kann man auch direkt daten manipulieren - stell dir folgendes vor:
ein programm zählt von 255 an rückwärts. der betreffende code im hex-format wird an der stelle, wo die zählvariable ihren ursprungswert "255" die zeichenfolge "FF" anzeigen. tauscht du nun "FF" gegen "0F" aus, so zählt das programm nur noch von 15 an rückwärts.

in früheren zeiten gabs beispielsweise die sog. "action-replays", hardware, die u.a. einen hexeditor integriert hatte. spielte man sein lieblingsspiel, so konnte man zu beginn angeben, wieviel "lives" vorhanden waren. anschließend ließ man sich einmal ableben und gab die neue anzahl an leben an. machte man das ein-zweimal war es möglich mittels action-replay herauszufinden, an welcher speicheradresse die zählvariable für die leben waren. man konnte dann bequem mit dem mitgelieferten hex-editor die speicherstelle beliebig füllen.

selbstverständlich kann man damit auch "programmieren". wobei programmieren hier eher im sinne von datenmanipulation gemeint ist - ein programm schreibt man eigentlich nicht.
wenn du eine höhere programmiersprache wie beispielsweise C hast, so hast du einen für menschen leicht verständlichen code, der wiederum für die maschine "unlesbar" ist. dieser code wird meist in assembler-code umgewandelt. assembler ist eine zwar für den menschen immer noch lesbare form des programmcodes, allerdings eher nach den bedürfnissen des rechners gestrickt.
das assemblerprogramm wird dann in binär-code übersetzt, was für den menschen kaum, aber für den rechner prima lesbar ist.
den umgekehrten weg, binärprogramme wieder lesbar zu machen, also in assembler umzuwandeln nennt man disassemblieren.
so kann man beispielsweise die funktion eines programmes analysieren, von dessen aufbau man vorher nicht die leiseste ahnung hatte.
das wird häufig beim sogenannten "reverse engineering" genutzt; eine technik die es erlaubt, die funktionsweise eines programmes quasi im nachhinein -nachdem es im binärcode vorliegt- aufzuschlüsseln und zu verändern.
kennt man nun z.b. die bytefolge im programm und weiß wie ein assembler seine befehle in bytefolgen übersetzt, so kann man mittels hexeditor die "befehle" die durch die bytefolge codiert werden, ersetzen.

beliebt ist das beispielsweise beim sog. "cracken" von programmen, wo der "cracker" herauszufinden sucht, an welcher programmstelle die abfrage für den kopierschutz steht, die er einfach aus dem programm entfernt und durch eine harmlose befehlsfolge ersetzt.

roal

(Themenstarter)
Avatar von roal

Anmeldungsdatum:
26. November 2005

Beiträge: 323

Ahaa! Jetzt kapier ichs. Danke!
Ich kann mir es zwar nicht vorstellen mit hexdezimal was umzuschreiben, aber gut - wer's braucht!

LeoManiac

Anmeldungsdatum:
3. Mai 2005

Beiträge: 756

Naja du hast hier 2 klassische Anwendungsgebiete genannt bekommen.

Gut ok zum alltagsgebrauch eines Programmierers gehörts es nicht. Aber nehmen mir mal an du müsstes aus einen Programm welches du gerade entwickelst unmengen an Daten speichern. Das Problem das ganze als reinen ASCII mit Parametername und Wert zu speichern aber das würde unmengen an Speicherplatz fressen also musst du dir eine kürzere Schreibweise ausdenken und dazu wäre Bimärcode gerade zu Ideal. Und da ist so ein Hex-Editor zum Debuggen auch nicht gerade unpraktisch 😉

dlewando

Avatar von dlewando

Anmeldungsdatum:
4. Juli 2006

Beiträge: 382

gibt's einen hex-editor unter gnome? ich müßte mal ne vmware binärdatei editieren, weil dort ein falscher pfad drin gespeichert ist ...
@roal: siehste, jetzt hast du einen 3. anwendungsfall ☺

edit: habe "ghex" gefunden

Antworten |