Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Hauptspeicher auslesen

(Anonym) / 7 Antworten / Baumansicht Nickles

Kennt jemand ein Programm, mit dem man den Inhalt des gesamten Hauptspeichers unter Windows in char-Zeichen auslesen kann. Ich habe versucht es in C zu programmieren, aber Windows läßt den Zugriff nicht zu. vereinfacht ungefähr so:
char *p = NULL;
while(1)
printf("%c", *(p++));

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Hauptspeicher auslesen“
Optionen

Naja...einen expliziten Null Pointer erzeugen, und ihn dann dereferenzieren...

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Naja...einen expliziten Null Pointer erzeugen, und ihn dann dereferenzieren...“
Optionen

Tut mir Leid, ich weiß leider nicht wo der Zeiger wirklich hinzeigt, wenn ich ihn auf NULL setze. Muss doch irgendeine Speicheradresse sein, oder nicht und von da will ich ihn weiter auslesen.
Erklär' es mir doch bitte, du Programmieras.

bei Antwort benachrichtigen
Anonym (Anonym) „Tut mir Leid, ich weiß leider nicht wo der Zeiger wirklich hinzeigt, wenn ich...“
Optionen

Sorry...ich dachte, der Begriff Nullpointer ist ein Begriff ...

Also: Die Speichrstelle "0" bzw. meist der gesammte Bereich von
0-1024 ist ein Besonderer. In ihn darf kein Programm schreiben,
oder versuchen ihn zu lesen.

Neben anderen Gründen ist das für einen Programmierer recht
Praktisch, da er Fehler in seinen Programmem (=nicht oder
fehlerhaft initialisierte Zeiger) bemerkt.

mfg. j.

Ps: Wenn Du dich für solche Dinge interessiert. Hast Du schon
mal über Unix/Linux nachgedacht ? Wenn ich den Hauptspeicher
auslesen will, öffne ich einfach die Datei /proc/kcore mittels
"fopen" :)

bei Antwort benachrichtigen
(Anonym) Anonym „Sorry...ich dachte, der Begriff Nullpointer ist ein Begriff ... Also: Die...“
Optionen

An der Stelle Werbung für Linux/Unix zu machen ist wohl mehr als deplaziert. Ich bin mir ganz sicher das Windows dafür eine API-Funktion bereit stellt. Schau doch mal in der MSDN nach.(Ich schaue auch noch mal nach, dauert aber 1-2 Tage)

bei Antwort benachrichtigen
Anonym (Anonym) „An der Stelle Werbung für Linux/Unix zu machen ist wohl mehr als deplaziert....“
Optionen

Warum deplaziert ? Da ist jemand, der etwas ueber die Interna
von Speicherverwaltung und elementarer C-Programmierung lernen
möchte. Meiner Meinung nach, ist das mit Linux gut mögich, da es
ein sehr einfaches Modell verwendet und gut Dokumentiert ist.

Das beste Beispiel lieferst Du selbst:

"Ich schau mal bei MSDN nach, dauert aber 1-2 Tage" und Du scheinst
jemand zu sein, der schon ein gewisses Vorwissen mitbringt. Meinst
Du nicht, dass das einen Neuling überfordert ?

mfg. "use the right tool for the job" - j.

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „An der Stelle Werbung für Linux/Unix zu machen ist wohl mehr als deplaziert....“
Optionen

diese typen müssen ihr os immer und überall wie sauerbier anbieten, auch wenn es mal voll am thema vorbeigeht.

bei Antwort benachrichtigen
thomas woelfer (Anonym) „Hauptspeicher auslesen“
Optionen

man kann unter windows kein anwendungsprogramm schreiben das den kompletten hauptspeicher auslesen kann. das hat verschiedene gute gruende, der wichtigste davon ist eine sicherheitsfrage:


mit einer solchen funktion waere es moeglich, das ein programm die inhalte eines anderen programmes auslesen koennte. im wesentlichen bedeutet das, das es auch moeglich waere, das ein programm das im kontext eines anwenders mit einem 'user' oder 'gast' account, die daten eines gleichzeitig laufenden programmes mit 'admin' oder 'system' account auslesen koennte. das waere ein ganz massives sicherheitsleck.

nun ist es aber so, das du mit deiner methode auch gar nicht den 'komplette' hauptspeicher bekommen wuerdest: vielmehr bekommst du nur den addressraum der deiner anwendung zugeordnet ist. dieser wird fuer anwendungen normalisiert: alle anwendungen haben einen virtuellen adressraum der immer bei '0' beginnt.

den kann man aber auch nicht komplett auslesen - hier greift jays erklaerung.


WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen