Seite 2 von 2

Re: Speicheradresse auslesen

Verfasst: Montag 29. Oktober 2012, 14:59
von lackschuh
jerch hat geschrieben:@lackschuh:
Dein Frage ist unverständlich. Wenn Du wissen willst, wie man an das Processhandle nach Programmneustart kommt - dafür gibts verschiedene Funktionen in der Win-API (z.B. EnumProcesses oder ..zensiert..)
Hallo

Ich hab mich wieder ein paar Abende mit dem Obgenannten beschäftigt...

Mit EnumProcessModulesEx bekomme ich nur bei 32-bit Programmen den Processhandle. Bei 64-bit Programmen geht es nicht. Solitär ist wohl ein 64-bit Programm, da ich Win 7 Uiltimate x64 habe.

Um an die dynamische Speicheradresse zukommen, welche die Punkte speichert, muss ich die Basis-Adresse von solitaire.exe haben/bekommen. Zu dieser addiere ich wie auf dem Bild 0xBAFA8.

Re: Speicheradresse auslesen

Verfasst: Montag 29. Oktober 2012, 15:28
von jerch
@lackschuh:
Bin mir nicht sicher, was Du eigentlich suchst, EnumProcessModulesEx gibt keine Processhandles zurück sondern Modulehandles eines Prozesses. Und da gibts tatsächlich Probleme, wenn Du versucht von 32bit auf 64bit und vice versa zuzugreifen. Ein Processhandle liefert Dir z.B. OpenProcess.

Re: Speicheradresse auslesen

Verfasst: Montag 29. Oktober 2012, 16:36
von lackschuh
Danke für die Info. Also mit OpenProcess bekomme ich in der Tat den Handle von Solitär (64bit). Danach, wenn ich weiter nach der Doku vorgehe mit EnumProcessModules, sollte nun das erste Modul des Prozesses die .exe sein also in meinem Fall die solitaire.exe.
baseAdresse= psapi.EnumProcessModules(hProcess, byref(hModule), sizeof(hModule), byref(count))
print "Adresse:", baseAdresse
Wenn ich hier einen anderen Prozess aufrufe, zB "FileZilla", dann geht alles (darum denke ich, dass es an dem 64-bit Solitär liegt)

http://support.microsoft.com/kb/175030/de?wa=wsignin1.0
http://code.activestate.com/recipes/305 ... n-windows/

PS: Ich hab noch einen Notebook Zuhause, auf welchem eine 32-bit Win 7 Version oben ist. Es ist wohl besser, ich probiere dort weiter.