Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Speicheradressen eines Programms finden (https://www.delphipraxis.net/79947-speicheradressen-eines-programms-finden.html)

TurboMartin 31. Okt 2006 16:47


Speicheradressen eines Programms finden
 
Hallo DP :hi: :hi: :hi: :spin2: !
Ich hab jetzt mal eine ganz schwere Frage:
Wie kann ich von einem laufendem Programm alle Speicherplätze im RAM als TPointer bekommen? :gruebel:
Ich hoffe dass es auch ohne Kernelmode geht. Außerdem soll es unter Win9x und Win Me laufen. :zwinker:

OldGrumpy 31. Okt 2006 16:50

Re: Speicheradressen eines Programms finden
 
*Was genau* willst Du tun? :roll: :gruebel: :wiejetzt:

TurboMartin 31. Okt 2006 16:52

Re: Speicheradressen eines Programms finden
 
Also, ich möchte, dass beim Klick auf einen Programmeintrag, z.B. in einer Listbox, in einer anderen Listbox dann alle Speicheradressen von diesem Programm stehen.

OldGrumpy 31. Okt 2006 17:04

Re: Speicheradressen eines Programms finden
 
Für Windows 2000 aufwärts hätte ich jetzt sogar fertigen Code dafür zur Hand, aber nicht für 98 ;) Ich entwickel schon länger nix mehr was auch unter 9x laufen muss (und bin recht froh darüber) :)

Ausserdem solltest Du Dich auf die Anzeige von Speicherbereichen beschränken, die Anzeige aller benutzten Adressen ist eine Endlositeration, da Du für jede Adresse in der Listbox Speicher belegen musst, der dann mit angezeigt werden muss, was wiederum mehr Speicherbedarf für die Listbox bedeutet, der wiederum... Und dann ist der Speicher irgendwann voll und Dein Windows macht die Grätsche ;)

TurboMartin 31. Okt 2006 17:06

Re: Speicheradressen eines Programms finden
 
Falls es nicht sowas wie DeviceIoControl aus der NtosKrln.exe nimmt kannst du es mal posten. :wink:

Axxus 31. Okt 2006 17:09

Re: Speicheradressen eines Programms finden
 
Gib ma bitte den code für win 2000 und XP her vll kann ich den in meinen prog einbauen wer en schönes tool

Axxus

OldGrumpy 31. Okt 2006 17:12

Re: Speicheradressen eines Programms finden
 
Wozu brauch ich denn DeviceIoControl um belegten Speicher festzustellen? :) Dazu gibts VirtualQuery, bei passenden Userrechten sogar prozessübergreifend mit VirtualQueryEx. Und zum Lesen reicht ReadProcessMemory, wiederum halt an die Userrechte gekoppelt. Aber das ist auch sinnvoll, da kein Normaluser an den Eingeweiden rumfummeln sollte :D Ich hab mich aus praktischen Erwägungen bei der Feststellung auf die einzelnen Pages beschraenkt, da der Memory Manager eh nicht mit kleineren Einheiten als einer Page für die Allokierung arbeitet. Entweder ne Page ist da oder halt nicht :) Wer es noch genauer haben will, kann ja gerne die entsprechenden Kernelstrukturen parsen, dazu war ich bisher zu faul weil ichs noch nie gebraucht hab :)

Edit: Die passenden Bücher zur Speicherverwaltung unter 9x stehen bei mir zwar im Regal, aber die Zeit ist wohl echt vorbei, für manche Sachen ists ja ganz nett, weil man unter Umständen weniger Aufwand treiben muss, aber ich entwickel trotzdem lieber auf den NT-basierten Systemen, die APIs sind viel umfangreicher und man muss nicht so oft tricksen um etwas zu erreichen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz