Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
22.05.2012, 14:12:51
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  WinAPI Forum
| | |-+  In den Speich anderer Prozesse eingreifen
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: In den Speich anderer Prozesse eingreifen  (Gelesen 2497 mal)
JustBest
Gast
« am: 26.04.2002, 16:14:52 »

Ich möchte ein Programm schreiben, mit dem man den speicher eines anderen Programmes nach Werten durchsuchen kann, ein problem, was ich dafür zuerst lösen müsste ist, dass ich ermitteln muss welchen teil im speicher dass fragliche Programm für sich reserviert hat.

Oder fängt das Offset immer mit $000001 an wenn ich den Prozess mit OpenProcess geöffnet habe?

Und mein zweites Problem ist es wie ich herrausfinde ob es sich bei der Zahl im Speicher um eine zahl handelt, und wieviele Byts für diese Zahl reserviert sind, da ich sonnst ja immer nur Zahlen mit einem maximalen wert von 255 habe.


Wie euch an meinen fragen ja aufgefallen sein dürfte, bin ich noch nicht sehr sicher was den direkten zugriff auf den Arbeitsspeicher angeht und würde mich desshalb auch sehr über ein Tutorial oder einen allgemeinen Text freuen, der sich mit der funktionsweise des Speichers auseinandersetzt.
Gespeichert
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« Antworten #1 am: 27.04.2002, 07:53:31 »

Vielleicht helfen dir mal diese zwei Funktionen weiter:

Aus der SDK:

GetProcessWorkingSetSize

Zitat
\"The GetProcessWorkingSetSize function retrieves the minimum and maximum working set sizes of the specified process.  

The \"working set\" of a process is the set of memory pages currently visible to the process in physical RAM memory. These pages are resident and available for an application to use without triggering a page fault\"
ReadProcessMemory

Zitat
ReadProcessMemory This function reads memory in a specified process. The entire area to be read must be accessible, or the operation fails
.

Unter [a href="http://www.tamaracka.com" target="_blank"]www.tamaracka.com[/a] solltest du auch Beispiele finden.
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
JustBest
Gast
« Antworten #2 am: 27.04.2002, 18:48:23 »

Die finktion hatte ich nicht gefunden, allerdings verstehe ich sie auch nicht so ganz. Ist der max. Wert der aktuell benutzte oder der min Wert oder keiner von beiden? Ist die Angabe in Byte ?

Was bewirken die VirtualAlloc bzw VirtualAllocEx ??? Ich steig durch die Hilfe nicht durch, schätze aber, dass sie auch was mit meinem Problem zu tun haben.
Gespeichert
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« Antworten #3 am: 28.04.2002, 06:31:54 »

Die Funktion VirtualAllocEx reserviert Speicher in einem anderen Prozess.


Leider ist aber VirtualAllocEx unter 95/98/Me nicht verfübar. Dort muss man
mit CreateFileMapping ein "memory mapped file" erzeugen.

Hab mal dieses Beispiel gefunden.
Es durchsucht u.a. den Speicher eines
anderen Prozesses:
[a href="http://216.101.185.148/scripts/isapi.dll/article?id=4D73295B&article=2496532" target="_blank"]http://216.101.185.148/scripts/isapi.dll/a...article=2496532[/a]
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
JustBest
Gast
« Antworten #4 am: 28.04.2002, 11:21:33 »

Der link ist tot, da gibt es kein beispiel und auf der Seite hab ich auch keins gefunden.

Aber mit GetProcessWorkingSetSize komm ich immernoch nicht ganz klar, bis jetzt mach isch es so, dass ich mit einer for-schleife ( Das ende ist der max. Wert von GetProcessWorkingSetSize) die ReadProcessMemory funktion aufrufe und als adresse den aktuellen wert der Zaählervariablen i nehme (und mit ptr zu einer addresse mache ). allerdings ist das tierisch langsam und ich kann immer nur ein byte einlesen, denn wenn ich mehr einlesen würde, würdemn sich die werte ja überschneiden.   Ich bin für jede Hilfe dankbar und für jedes Beispil doppelt dankbar.

Bei durchsuchen der Hilfe bin ich außerdem auf VirtualQuery und VirtualQueryEx gestoßen, was kann man damit anfangen, und wie benutzte ich sie, für die Hilfe bin ich mal wieder zu blöd.
Gespeichert
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« Antworten #5 am: 28.04.2002, 12:10:18 »

Zitat
Der link ist tot,

Probier diesen:

[a href="http://groups.google.com/groups?q=readprocessmemory+group:borland.public.delphi.*&hl=en&selm=3ac2fc9e_2%40dnews&rnum=10" target="_blank"]http://groups.google.com/groups?q=readproc...40dnews&rnum=10[/a]

und diesen:

[a href="http://groups.google.com/groups?q=VirtualQueryEx++group:borland.public.delphi.*&hl=en&selm=ab19fsoife6lemj7e4fro7geim4sf4fj19%404ax.com&rnum=3" target="_blank"]http://groups.google.com/groups?q=VirtualQ...04ax.com&rnum=3[/a]
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
JustBest
Gast
« Antworten #6 am: 28.04.2002, 12:35:02 »

Danke, ich werd mal versuchen da durch zu steigen, auch wenn das auf den ersten Blick ohne Kommentare sehr kompliziert aussieht.
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS