HEX-Code bzw. Assembler (Null Bytes)
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
abrutschen
assembler
code
datum
editor
engineering
ersten blick
gesamten programm
illegalen bereich
kleine sachen
leichtigkeit
lizenz
programm
programmcode
quellcode
richtigen daten
string
url
vergessen
welt
-
Ich habe mal so eine kleine Frage und zwar habe ich ein kleines Hallo Welt Programm in C++ geschrieben. Nun habe ich dieses Programm mit einem Hex-Editor (zeigt auch Assembler an) geöffnet und wollte mal so paar kleine Sachen ausprobieren. Den String Hallo Welt kann ich mit leichtigkeit ändern aber nur wenn der neue String in den bereich passt Also genug bytes vorhanden sind. Der Editor bietet mir nun an dazwischen null-bytes einzufügen d.h. ich kann länger Strings hineinsetzen doch dannach funktioniert das programm nicht. Woran liegt das? und wie kann man Länger Strings einfügen ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
stef264 schrieb:
Das liegt daran, dass es sich um ein compiliertes Programm handelt, bei dem die Länge des Datensegments beispielsweise im Header gespeichert wird.
d.h. ich kann länger Strings hineinsetzen doch dannach funktioniert das programm nicht. Woran liegt das?
Du darfst auch die Offsets der Strings nicht ändern, auch nicht der Variablen nach dem String, sonst findet das Programm nicht mehr die richtigen Daten. Die Offsets dazu sind übrigens im gesamten Programm verteilt in den Assembler-Befehlen gespeichert... das zu ändern ist nicht das Einfachste.
stef264 schrieb:
2 Varianten:
und wie kann man Länger Strings einfügen?
1) vergessen und im Quellcode ändern, das ist wohl das Sinnvollste und Einfachste, wenn du den Quellcode hast
2) du disassemblierst das Programm in Code und Daten, änderst die Daten, veränderst den Programmcode und trägst die neuen Offsets überall ein und speicherst beides zusammen wieder als Programm ab. -
2 Varianten:
1) vergessen und im Quellcode ändern, das ist wohl das Sinnvollste und Einfachste, wenn du den Quellcode hast
2) du disassemblierst das Programm in Code und Daten, änderst die Daten, veränderst den Programmcode und trägst die neuen Offsets überall ein und speicherst beides zusammen wieder als Programm ab.
Danke für die schnelle Antwort. werde mich für lösung 2 entscheiden da ich grade ein bisschen reverse engineering lerne und das ein gute übung ist.
MFG Stef -
Hallo stef264,
darf man Fragen, welcher Hex-Editor das ist? Vor Jahren hatte ich mal so einen für die Konsole mit dem man auch Patchen (Assembler Befehle austauschen) konnte. Aber ich finde einfach nichts vernünftiges mehr.
Beitrag zuletzt geändert: 14.6.2012 22:09:53 von darkpandemic -
http://www.wxhexeditor.org/ Der hier.. finde den echt gut aber ist noch in der Beta.
-
Hallo stef264,
Der Editor sieht auf den ersten Blick ganz ordentlich aus.
Da werde ich wohl mal schauen, was sich damit so alles anstellen lässt.
Herzlichen Dank. -
Ich möchte nur kurz anmerken, daß das Reverse-Engineering leicht in den illegalen Bereich abrutschen kann, wenn du Programme analysieren willst, deren Lizenz genau das untersagt...
-
Hier wäre IDA angemessener als ein einfacher Hex Editor. Weiterhin ist es absolut nicht illegal sein eigenes Programm zu reversen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage