Speicheradresse auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

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.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@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.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

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.
Antworten