Entwickler-Ecke

Windows API - Daten aus Arbeitspeicher einer anderen Anwendung lesen


glotzer - Di 22.12.09 17:13
Titel: Daten aus Arbeitspeicher einer anderen Anwendung lesen
ich hab ein programm mit caption "xyz" (es ist sichergestellt das das programm nur einmal ausgeführt wird)
mein program soll aus diesem programm daten auslesen
die adresse ist der wert im speicer bei adresse [beginn von xyz.exe] +5DD96 + 24
(alle daten liegen als hex zahl vor, mein ergebnis sollte aber menschenleslich sein, also dizimalzahl)
und dort will ich jetzt nen 4bytes integer lesen.

mein problem ist das ich mich noch nie richtig mit dem arbietsspeicher auseinandergesetzt hab, ich hab keine ahnung wie ich and die processId für ReadProcessMemory komm, und wie ich in delphi mit hex zahlen umgeh

könnt mir da bitte wer helfen?


Flamefire - Di 22.12.09 18:54

also
1)Hexzahlen:
In delphi wird das als $BADF00D dargestellt. Also mit $ davor
demzufolge strtoint('$'+hexStr); bzw inttohex(intval);
2)lesen aus speicher mittels openprocess, readprocessmemory, closehandle. in der reihenfolge
3)wenn du nicht weißt, wie du mit den Daten klarkommst: Ollydbg für den tiefen Blick. CheatEnginge zum Lesen für den flachen Blick

Rest ist fleißarbeit von deiner Seite!


BenBE - Di 22.12.09 18:55

Zwecks Hex-Zahlen: Im Source mit $ prefixen; ansonsten IntToHex vs. IntToStr.

Bzgl. ReadProcessMemory gibt's ne ganze Reihe beispiele hier im Forum. Die ProzessID bekommst du anhand des Fenster-Handles über nen gewissen Umweg, wenn Du GetWindowProcessThreadId (o.s.ä.) mit deinem Fenster-Handle aufrufst.


glotzer - Di 22.12.09 18:57

:) tausend mal danke, genau das hab ich gesucht

für alle die mal änliche probleme haben:
http://www.delphi-library.de/viewtopic.php?t=34077&highlight=openprocess
und google, habs grad mit den hilfen hier hinbekommen