Speicher eines Programms auslessen
-
Hi,
ich würde gerne von einem laufenden Programm den Arbeitsspeicher auslesen. D.h. Codesegment, BSS-Segment, Stack und Heap. Und zwar wenn möglich den virtuellen Speicher, denn mit /dev/mem kann ich zwar den gesamten Speicher auslesen, aber das dauert lang und man muss den richtigen Prozess und alles was dazugehört erst finden.
Momentan verwende ich den Gnu Debugger gdb, aber damit kann man ja nur einzelne Werte auslesen, was sehr umständlich ist.
Wenn möglich sollte das Programm unter Linux laufen.Mfg
DerBaer
-
Ich hab es nicht selber ausprobiert, aber die man-page von proc(5) schreibt:
/proc/[pid]/mem
This file can be used to access the pages of a process's memory through open(2), read(2), and lseek(2).
-
hm, danke erstmal, aber meine manpage erklärt nur, was es für Dateien gibt und nicht, wie ich die auslesen kann. Aber ich hab einfachc mal ein kleines Programm geschrieben, was mit open() und read() die Datei einliest und einfach auf stdout wieder ausgibt. Allerdings erhalte ich immer beim read den Fehler:
"No such process"
Allerdings gibt es diesen Prozess, sowie das entsprechende Verzeichnis + Datei und open() geht auch ohne Fehler.
-
DerBaer schrieb:
Aber ich hab einfachc mal ein kleines Programm geschrieben, was mit open() und read() die Datei einliest und einfach auf stdout wieder ausgibt. Allerdings erhalte ich immer beim read den Fehler:
"No such process"http://www.google.com/search?hl=en&q=proc+mem+"no+such+process" sagt, du musst vorher mit ptrace an den Prozess gehen, damit /proc/*/mem lesbar wird.