Laufzeitspeicherbereich eines laufenden Prozesses auslesen
-
Hallo alle zusammen,
Es geht darum, dass ich gerne mit einem selbst geschriebenem Programm, lesend auf den benutzten Speicher eines anderes Programms zugreifen möchte. Das hat folgenden Grund: Ich würde gerne z.B. Rennspiele auslesen und diese dann per USB an ein Board schicken auf dem ein µController steht der dann Geräte steuert wie eine analoge Anzeige der Geschwindigkeit, Drehzahl und so weiter. Wie ich theoretisch an die Daten komme wenn ich Zugriff auf den Speicherbereich habe ist nicht das Problem. Auch von der Materie mit dem Board etc. habe ich Ahnung, sowie von C++ in verschiedenen Bereichen (MFC, DirectX, bisschen . Net). Das ganze muss nur unter Windows funktionieren, bei Windows würde ich jedoch soweit wie möglich an der Oberfläche bleiben, sprich keine Bibliotheken á la: OpenProcess(), ReadProcess(), CloseProcess() da ich auch einen möglichst großen didaktischen Nutzen daraus ziehen möchte
Gerne auch Dokumentationen in Englisch oder sonst irgendwas, Google habe ich auch schon probiert allerdings entweder nur Müll gefunden oder solche: "Ich muss NICHTS mehr selber machen"-Bibliotheken.Danke im voraus
Tim
-
Daispros schrieb:
Hallo alle zusammen,
Es geht darum, dass ich gerne mit einem selbst geschriebenem Programm, lesend auf den benutzten Speicher eines anderes Programms zugreifen möchte. (...) sprich keine Bibliotheken á la: OpenProcess(), ReadProcess(), CloseProcess() (...) nur Müll gefunden oder solche: "Ich muss NICHTS mehr selber machen"-Bibliotheken.
Du willst keine "alles fertig" Bibliothek, du willst aber du nicht ReadProcessMemory() direkt verwenden.
Tjo.
Auch blöd, weil dazwischen wird es nicht viel geben.Auch ist mir nicht klar was du mit "bei Windows ... an der Oberfläche bleiben" meinst. Und was soll "da ich auch einen möglichst großen didaktischen Nutzen daraus ziehen möchte" heissen? Meinst du dass du viel dabei lernen willst?
-
Wenn du nicht mit der Windows Schnittstelle arbeiten willst, musst du dir wohl nen Treiber schreiben.
Ein Kompromiss wäre du injizierst ne DLL ins Spiel. Dann kannst du vieles machen ohne die Windows API zu benutzen, auch wenn das injizieren diese voraussetzt.
-
Was willst Du? Etwa ReadProcessMemory() WriteProcessMemory() VirtualProtect() und Konsorte selbst implementieren, und dafür noch zusätzlich ein Kernel mode Treiber schreiben? Dass ist ne Menge harte Arbeit, geschweige von dem was Du alles Wissen musst über die Windows Architektur. Etwas anderes gibts nicht! Oder Du gehst Kompromisse ein und machst es so wie PatrickSS geschrieben hat. Finde das imo die vernünftigste Variante und im vergleich einfach! Oder Du bist nach 2 - 4 Jahren ein guter Treiber Programmiere...
-
Hm, danke erst einmal für die Antworten.
Dann werde ich wohl doch die WinAPI benutzen
Vll. steig ich dann irgendwann mal etwas tiefer ein, aber so wie sich das anhört ist das dann ja wirklich Königsklasse
Für die Leute die es auch interessiert habe ich glaube ich ein recht gutes Tutorial gefunden:
Teil 1:
http://www.online-tutorials.net/security/speicherzugriff-tutorial-teil-1/tutorials-t-27-63.htmlTeil 2:
http://www.online-tutorials.net/security/speicherzugriff-tutorial-teil-2/tutorials-t-27-69.htmlBis dann
Tim