2017-12-01 9 views
0

Ich versuche, den Speicher des Prozesses auszugeben und den anderen Teil, wie Codepage, Schutzseite, Stapel und Heap zu unterscheiden. Ich kann den Prozessspeicher abladen, indem ich einen zusätzlichen Systemaufruf abrufe, und in diesem Systemaufruf benutze ich memmove, um den Prozessspeicher in meinen Pufferspeicher auszugeben. Dann drucke den Puffer in meiner Benutzerebenenfunktion. Aber ich kann den unterschiedlichen Teil dieser Erinnerung nicht herausfinden. Jetzt ist meine embryonale Idee, einige spezielle Zeiger zu finden, die die Grenze dieser Teile zeigen. Aber ich bin verwirrt, was Zeiger tun können? Oder ich sollte versuchen, die Größe dieses Teils zu berechnen und zu drucken (nächster Teil ist Code/Guard-Seite)? Ich kann sicherstellen, dass es eine Tabelle mit 4k Seiten für die Wachtelseitentabelle gibt, aber ich weiß nicht, wie man die Größe anderer Teile wie Codepage oder Stapel bekommt.Wie können wir verschiedene Teile des Prozessspeichers unterscheiden?

Ich möchte auch meine Benutzer-Level-Funktion können anderen Prozess Speicher Dump geben die PID als Parameter Aber ich bin verwirrt, wie man beginnt. Wie kann ich die Seitentabelle eines anderen Prozesses finden und sie in meine Kernel-Level-Dump-Funktion eingeben?

+1

suchen Sie nach Elf-Format. – Stargateur

+0

Ich versuche etwas Ähnliches zu erreichen. Können Sie näher erläutern, wie Sie mit memove den Prozessspeicher in meinen Pufferspeicher ausgelagert haben? Musstest du walkpgdir benutzen? Könnten Sie bitte die Schritte auflisten oder diesen Teil des Codes einfügen? –

Antwort

0

Das Problem, dem Sie gegenüberstehen, ist, dass Speicher Speicher ist. Ein Prozess kann mehrere Heaps und mehrere Stacks haben. Sie sehen nur wie Erinnerung aus.

Auf einigen Systemen können Sie die ausführbare Datei untersuchen, um zu ermitteln, wie die Anwendung im Speicher strukturiert ist. Moderne Ladevorgänge randomisieren jedoch häufig das Laden eines Prozesses in den Speicher.

Verwandte Themen