Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Hex Daten? (https://www.delphipraxis.net/137990-hex-daten.html)

youuu 1. Aug 2009 17:20


Hex Daten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

wenn ich mit einen HexEditor z.B den Arbeistspeicher auslese, bekomm ich z.B. solche Daten angezeigt: Siehe anhang

Was genau bedeuten Sie?
Bzw. wie kann ich diese eigentlich übersetzen?

himitsu 1. Aug 2009 17:39

Re: Hex Daten?
 
Ja was sie bedeuten kommt auf das Programm an und welche Daten es an dieser Stelle grade liegen hat ...
also eine pauschale Aussage, was diese Bedeuten und wie man sie eventuell übersetzen kann, kann man nicht definieren.


Aber links hast du bei diesem Editor die Hexadezimaldarstellung der Bytes im RAM und rechts daneben die Ansicht in irgendeinem Zeichensatz (z.B. als Ansi).
und ganz links steht die Speicheradresse des ersten Bytes jeder Zeile.


Wenn man jetzt weiß was das gescannte Programm an dieser Stelle liegen hätte, dann könnte man es auch übersetzen/interpretieren.

youuu 1. Aug 2009 18:05

Re: Hex Daten?
 
Wie kann man herraus bekommen was das Programm dort abgelegt hat?

mkinzler 1. Aug 2009 18:07

Re: Hex Daten?
 
Wie meinst du "dort abgelegt"?

youuu 1. Aug 2009 18:07

Re: Hex Daten?
 
Zitat:

Zitat von himitsu

Wenn man jetzt weiß was das gescannte Programm an dieser Stelle liegen hätte, dann könnte man es auch übersetzen/interpretieren.

Das hatte ich gemeint.

himitsu 1. Aug 2009 18:19

Re: Hex Daten?
 
Ja also, wenn du weißt, was das Programm intern wie macht, dann ist es recht einfach, ansonsten (abgesehn die Daten sind sehr offensichtlich) ist es schwer rauszubekommen, was dort grade liegt.

Man geht da eher andersrum ... also man weiß von was man die Position wissen will und weiß womöglich wie dieses im Speicher aussieht und sucht dieses dann.

Es sind immerhin ein paar Millionen Byte im RAM eines Programmes unterwegs, da kann man garnicht (nur sehr schwer) rausbekommen was nun was zu bedeuten hat.

Aber um mal zu dem gezeigen Speicherausschnitt zu kommen, daß ist meißtens ein Speicerblock von Windows, wo es dem Programm z.B. mitteils mit welchen Parametern es gestartet wurde und wie der Block der Environment-Variablen aussieht, welche dem Programm mitgegeben wurden usw.


Ach ja, und denk blos nicht, daß etwas Gefundenes immer an der selben Stelle zu finden ist ... der Speicher ist (bis auf gewisse Ausnahmen und selbst diese haben nur eine Wunschadresse, wo sie hinwollen, wenn da noch Platz ist) dynamisch und sieht sozusagen jedesmal anders aus.

youuu 1. Aug 2009 18:59

Re: Hex Daten?
 
Ah ok, aber wie ist es hm Beispiel such. Ahja z.B. Das Programm Speichert z.B. eine Datei ab.

Wie soll ich im Arbeitsspeicher danach suchen ob nun wirklich etwas gespeichert wurde?

mael 1. Aug 2009 19:20

Re: Hex Daten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das wäre eine ausgezeichnete Frage für die Hilfe von HxD (http://www.delphipraxis.net/internal....php?p=1064573). Falls Du noch andere Fragen hast bzgl. HexEditoren wäre ich interessiert, man wird nämlich "betriebsblind" wenn man sowas schon länger verwendet.

Zum Thema:
Die Daten sind einfach nur eine Zahlenfolge (im Hexadezimalsystem) in der mittigen Spalte und Text in der rechten Spalte. Die Textspalte ist da weil häufig Text auch in Programmen oder binären Dateien vorkommen, wenn es allerdings kein Text ist ergibt die Textdarstellung wenig Sinn. Wenn man Glück hat erkennt man bei unkomprimierten Bildern z.B. einige Muster. Öffne z.B. eine BMP oder eine ICO-Datei.

Also, wenn du etwas im RAM-Editor öffnest weißt du automatisch dass es sich um ein Programm handelt das im PE-Format vorliegt (portable executable). Daraus ergibt sich die Struktur und welcher Teil sich wo befindet. In einem besseren Hexeditor (HxD kann das leider noch nicht), würde man also ein paar Navigationshilfen bekommen und wissen welcher Teil was bedeutet (sprich Datentyp und Wert).

Um eine Idee zu bekommen wie soetwas strukturiert aussieht gibt es z.B. Resource Hacker oder PE Resource Explorer. Letzteres Programm zeigt den ".rsrc" Abschnitt sowohl als Hexadezimalzahlen als auch strukturiert dar.

mael 1. Aug 2009 19:34

Re: Hex Daten?
 
Zitat:

Zitat von youuu
Ah ok, aber wie ist es hm Beispiel such. Ahja z.B. Das Programm Speichert z.B. eine Datei ab.

Wie soll ich im Arbeitsspeicher danach suchen ob nun wirklich etwas gespeichert wurde?

Sehr schwer. Das hängt vom Programm ab. Das hat wahrscheinlich irgendwo eine Variable Modified: Boolean die entsprechend gesetzt wird. Aber das kann jedes Programm machen wie es will.
Du könntest nach den Werten False(=0) und True(=1) suchen, aber das wird sehr sehr viele Ergebnisse liefern und daher schwer zu finden sein.
Dazu bräuchte man einen Debugger wie z.B. OllyDebug, der würde einem anzeigen, dass man z.B. die WinAPI WriteFile aufgerufen hat. Es ist dann sehr wahrscheinlich dass das Programm danach in einer Variable speichert das die Datei gespeichert wurde.

Was du aber machen kannst ist folgendes:

Mache ein neues Delphi-Projekt mit einer Form und zwei Buttons. Definiere eine globale Variable Modified: Boolean. In dem einen Button setzt Modified := True, in dem anderen Modified := False.
Starte das Programm und pausiere dann. Per Strg+F7 öffnet sich ein Debugfenster, dort kann man die Adresse von Modified bekommen, indem man "@Modified" eingibt.
Diese Adresse kann man im RAM-Editor verwenden (Gehe zu) um die Speicherstelle für Modified zu bekommen. Wenn du jetzt die Buttons abwechselnd drückst sollte man im RAM-Editor die Veränderungen sehen (eventuell F5 drücken).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz