BenBE hat ja schon einiges erklärt. Ich will noch ein paar Sachen hinzufügen.
Falls Du HxD verwendest bitte nimm die Version von meiner Webseite mh-nexus.de/hxd/ (Beta oder Stable, egal). In der Version die ich im Forum vorgestellt habe, habe ich gerade einen Fehler gefunden.
Der Arbeitsspeicher(=RAM) enthält alle Daten die manipuliert oder analysiert werden sollen, also Daten auf die man Operationen anwendet bzw. Zustände abfragt. Eine Operation kann eine Addition wie
a := a + b; sein und eine Analyse/Abfrage kann sowas sein wie:
if a > 2 then ... Im Arbeitsspeicher werden also Zwischenergebnisse und die Variablen gespeichert.
Festplatten (und ähnliche Speicher) werden verwendet um die Ergebnisse solcher Operationen/Abfragen dauerhaft zu speichern und wenn nötig wieder zu laden, Arbeitsspeicher dagen um mit den Daten zu arbeiten.
Nun etwas konkreter. Unter Betriebssystemen wie Windows wird zwischen zwei Arten von Arbeitsspeichern unterschieden: Physikalischer und virtueller Arbeitsspeicher.
Der physikalische Arbeitsspeicher entspricht dem Arbeitsspeicher wie er als Hardware im Computer verbaut ist. Der virtuelle Arbeitsspeicher wird dagegen verwendet um Programmen vorzugauckeln sie hätten den gesamten Arbeitsspeicher für sich allein.
D.h. jedes Programm unter Windows hat 4GB virtuellen Arbeitspeicher von dem ein Teil vom Betriebssystem verwendet wird und der Rest dem Programm zur Verfügung steht. Wie das im Detail funktioniert führt jetzt zu weit, Stichwort: Auslagerungsdatei.
Wenn Du jetzt in HxD

ein Programm öffnest wird der gesamte virtuelle Arbeitsspeicher des gewählten Programms angezeigt. Die linke (blaue) Spalte gibt die Position (=Offset) im virtuellen Arbeitsspeicher des geöffneten Programms an. Die mittlere Spalte ist der Inhalt des Arbeitsspeichers als Folge von Bytes dargestellt und die rechte Spalte zeigt das gleiche an, aber anstatt als Zahlenfolge als Zeichenfolge, also als Text.
Was verwirrend sein kann, ist daß alle Zahlen im hexadezimalen Format dargestellt werden. Im Dezimalsystem (=Zehnersystem) gibt es die Ziffern 0-9. Im Hexadezimalsystem (=Sechzehnersystem) die Ziffern 0-9 und A-F. Um zwischen den zwei Zahlensystem zu wechseln kann man z.B. den Windows-Taschenrechner verwenden. Die hexadezimale Darstellung wird aus praktischen Gründen verwendet. Siehe Wikipedia für Details.
Ein Hexeditor hat also vom Hexadezimalsystem seinen Namen: Hex(adezimal)-Editor.
Kurz gesagt: Der RAM-Editor vom HxD zeigt Dir den virtuellen Arbeitsspeicher von einem Programm als Folge von Bytes bzw. in Textdarstellung. Schreib mal ein Programm in Delphi und laß es eine Meldung ausgeben.
Z.B.: Mach ein neues Projekt in Delphi, doppelklicke auf die Form und ersetzte
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormCreate(Sender: TObject); begin
end; |
durch
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormCreate(Sender: TObject); var s: string; begin s := 'Beliebiger Testtext'; ShowMessage(s); ShowMessage(Format('%p', [@s[1]])); end; |
. Nachdem das Programm gestartet wurde (F9) kannst Du es im RAM-Editor von HxD öffnen (Suche nach sowas wie Project1.exe) und mit der Suchenfunktion (Datentyp: Text-string) nach
| Zitat: |
| Beliebiger Testtext |
suchen. D.h. irgendwo im virtuellen Arbeitsspeicher von deinem Programm steht dieser Text. Es kann sein daß er mehrfach vorkommt. Eines dieser Vorkommen wird die gleiche Adresse haben wie im zweiten Dialog angezeigt.
Falls Du weitere Fragen hast, beantworte ich die gerne.
[EDIT]Paar Schreibfehler korrigiert und Anleitung für Beispielprogramm verdeutlicht.[/EDIT]