Hauptspeicher auslesen

Herakles

Profifragensteller
Moin!

Ich würde gerne spasseshalber mal den Inhalt meines Hauptspeichers auslesen. Etwa so, wie das in der buggy-Firefox-Version mal ging.

Ne Idee, wie man das anstellt, oder gibts da vielleicht sogar schon ein Tool für, möglicherweise mit Opensource, so dass man sich mal ansehen kann, wie sowas funktioniert?

Herakles
 
Unter DOS könnte es gehen :D.
Aber ich denke das so etwas unter Modernen Betriebssystemen nicht möglich sein sollte.
Denn wenn der Prozessor im Protected Mode ist, dann kann doch jedes Programm nur auf seinem eigenen Adressraum zugreifen.
 
Das funktioniert höchstens als Kernelmodul. Wie tschepe schon sagte, aktuelle Betriebssysteme (job, timesharing, multiprogramming Fähigkeiten vorrausgesetzt) verbieten im Userland den Prozess. Und letztendlich macht es auch nicht viel Sinn.
Du siehst von jedem Prozess dann halt die Registerinhalte und seine verschiedenen Segmente im Hauptspeicher, und das wars dann soweit schon
 
Könntest auch einen Coredump des Kernels provozieren und dann versuchen daraus Daten auszulesen.
Aber wie du aus dieser Datei dann Informationen rausholst, weiss ich auch nicht ;-)
 
Moin!

Wie geil alle anderen sagen "Das geht schon aus Sicherheitsgründen nicht" und dann kommt so eine wahnsinnig einfache Lösung zustande, die auch noch (teilweise) funktioniert. Lustig!

Naja, wie auch immer. Ich hab das jetzt mal ausprobiert und ich kann den Inhalt in der Tat auslesen, allerdings schmiert der Prozess irgendwann ab. Ich habe ca. 3 Minuten lang 100% Prozessorauslastung und dann schliesst sich das wahlweise Eterm- oder xterm-Fenster von selbst. Ein Versuch, den Inhalt in eine Datei umzuleiten, klappt soweit scheinbar ganz gut. Es entsteht zunächst mit voller Festplattenlast eine Datei von Größe des Hauptspeichers, danach geht die Festplattenlast auf die Hälfte zurück und die Datei wird immer noch größer (über 600MB, obwohl ich nur 512MB Hauptspeicher habe).

woran mag dieser Spaß liegen? Ich meine, man kanns natürlich dann einfach abbrechen, wenn man sieht, dass sich die Plattenlast verändert und man hat dann sein ergebnis, ok. Aber woran mag das denn wohl liegen?

Schliesst sich die nächste Frage an: mit welchem Editor kann man so eine große Datei editieren?

Herakles
 
Zuletzt bearbeitet:
Herakles schrieb:
Ein Versuch, den Inhalt in eine Datei umzuleiten, klappt soweit scheinbar ganz gut. Es entsteht zunächst mit voller Festplattenlast eine Datei von Größe des Hauptspeichers, danach geht die Festplattenlast auf die Hälfte zurück und die Datei wird immer noch größer (über 600MB, obwohl ich nur 512MB Hauptspeicher habe).

woran mag dieser Spaß liegen?

swap?
 
Ok... swap klingt einleuchtend, hatte nich darüber nachgedacht, dass swap auch beim Zugriff auf /dev/mem gelesen wird.

Jetzt wollte ich aber gerne wirklich den Inhalt des erfolgreicherweise ausgelesenen Speichers wirklich mal anschauen. Um die ganze Datei etwas kleiner zu bekommen, hab ich mal versucht, ein Wort rauszufiltern, weil offenbar alle Editoren irgendwie streiken.

Code:
# cat /dev/mem | grep "toll" > test
cat: stdout: Broken pipe

Was macht man denn wohl dagegen oder welcher Editor kann denn wirklich so grosse Dateien editieren?



Herakles
 
Code:
elessar@loki: ~> ll /dev/mem                                                    (07.07.05 16:20:29)
crw-r-----  1 root  kmem  248,   0 Jul  7 15:10 /dev/mem
Sicherheitsgründe? Wen das auf deinem Rechner jemand auslesen kann, dann hast du ganz andere Probleme. Ausserdem müssen /dev/mem und /dev/io auch erstmal aktiviert werden.

Anzeigen solltest du solch große Dateien mit hd(1) können. Zum editieren solltest du die Datei evtl vorher mit split(1) in kleinere chunks aufteilen.

[Edit]
Nachtrag:
editieren is ein Problem, da die Datei ja gepuffert wird.
Wenn man jetzt aber seinen Hauptspeicher im Hauptspeicher puffert...
Du brauchst auf alle Fälle viel Swap und solltest hierdran gedreht haben:
Code:
options         MAXDSIZ=(1024UL*1024*1024)      # Maximum Application Size Limit
options         DFLDSIZ=(768UL*1024*1024)       # Default Application Size Limit
Das hier sind schon veränderte Werte, default 768MB, max 1024MB.
Regulierbar entweder über diese Kernel options oder über
Code:
#kern.dfldsiz=""                # Set the initial data size limit
#kern.maxdsiz=""                # Set the max data size
in /boot/loader.conf.
Unter FreeBSD, hab ich jetzt einfach mal als gegeben angenommen.
 
Zuletzt bearbeitet:
Zurück
Oben