Allgemeines 21.970 Themen, 148.291 Beiträge

Datenrettung aus RAM?

dl7awl / 10 Antworten / Flachansicht Nickles

Eine Rubrik "Datenrettung" oder "Tools" gibt es wohl nicht; bitte ggf. in die nächst passende Rubrik verschieben!

Schon öfter stand ich vor dem Problem, dass durch eine unüberlegte Handlung, einen Absturz oder ähnliches plötzlich der soeben eingegebene Text weg war, bevor er abgespeichert bzw. abgeschickt werden konnte. Besonders ärgerlich: man weiß, irgendwo in einem RAM-Buffer steht er wahrscheinlich noch, mein Text, aber ich komm nicht ran. Dabei ist es ganz egal, mit welchem Programm man zugange war, Hauptsache man macht danach nichts anderes und der Computer bleibt eingeschaltet.

Ist jemandem ein (Windows-)Tool bekannt, mit dem man den RAM-Inhalt wieder zu fassen bekommt?

Zu DOS-Zeiten war's relativ einfach, da hatte ich sowas mal selbst geschrieben. Es muss ja auch möglichst klein sein, um möglichst wenig vom Arbeitsspeicher zu überschreiben. Meine damalige 29-Byte-Assembler-Lösung namens ramimage.com (hoffentlich wird das hier richtig dargestellt):


0100 1E PUSH DS
0101 33D2 XOR DX,DX
0103 BB0100 MOV BX,0001
0106 B90040 MOV CX,4000
0109 B440 MOV AH,40
010B CD21 INT 21
010D 58 POP AX
010E 050004 ADD AX,0400
0111 8ED8 MOV DS,AX
0113 3D00A0 CMP AX,A000
0116 72E8 JB 0100
0118 B8004C MOV AX,4C00
011B CD21 INT 21

Mit dem Aufruf ramimage >datei konnte ich dann den relevanten Teil des Arbeitsspeichers in eine Datei retten und darin anschließend in Ruhe nach dem verlorenen Text suchen. Hat meistens geklappt und mir oft geholfen.

Nur für Windows ist mir sowas noch nicht begegnet - dürfte dort wegen des virtuellen Speichermodells auch nicht ganz so trivial sein, allerdings auch nicht unmöglich. Weiß jemand was?

Gruß, Manfred
bei Antwort benachrichtigen
dl7awl Borlander „ Also trotz Ruhezustand sollte es kein Problem sein ein anders OS zu booten, das...“
Optionen

Hi Borlander!

"Wieso nicht? Wer sagt denn, daß der Text in einem Stück im Speicher liegen muß? Keiner, das kann das Programm, oder die zugrunde liegenden Bibliotheken machen wie sie es wollen."

Schon klar, einen "Rechtsanspruch" auf Klartext gibt es nicht. ;-) Trotzdem hielt ich es nicht für abwegig, mit einer gewissen Wahrscheinlichkeit darauf zu hoffen, dass der Eingabebuffer anhand seiner letzten Inhalte zu erkennen sein müsste - wenn nicht als fortlaufender zusammenhängender Text, dann als String-Array oder Zeiger-Array auf Strings oder ähnliches. Hätte mir ja schon gereicht. Aber das war eben nicht der Fall. Mit Abstand die meisten Teile meines Textes tauchten nirgendwo auf.

Ich glaube nach nochmaligem Nachdenken zu wissen, welchem ganz anderen Denkfehler wir beide aufgesessen sind: Gesichert wird in der hiberfil.sys ja ausschließlich der pyhsikalische Speicher, aber das Programm "sieht" bekanntlich nur logischen virtuellen Speicher mit einem linearen Adressraum, der weit größer als der physikalische Speicher sein kann. Bei so einem Speichermodell weiß man nie, was gerade im physikalischen RAM und was in der Auslagerungsdatei steht. Das ist Sache der Speicherverwaltung und aus Sicht des Programms völlig transparent. Das führt buchstäblich zu fast "zufälligen" RAM-Inhalten, die nahezu beliebig verwürfelt sein können. Das könnte deren "Konfusität" und Nutzlosigkeit erklären. Wenn das stimmt, war bereits die Ausgangs-Idee, so genial einfach sie auch schien, leider schon im Ansatz ungeeignet... ;-(

Schönen Gruß,

Manfred

P.S.: Eigentlich hatte ich ja auch schon im Eingangsposting erwähnt, dass es wegen des virtuellen Speichermodells wohl nicht ganz trivial sei, aber dann habe ich den Gedanken doch wieder aus den Augen verloren und mich auf die falsche Fährte locken lassen...

bei Antwort benachrichtigen