Ganzen RAM auslesen?
-
hallo,
es gibt programme, die können den gesamten raminhalt kopieren, bzw. auslesen.
wie geht das?
-
Betriebssystem fragen, ob es deinem Programm den Inhalt des Arbeitsspeichers gibt (in der Regel wird es das nicht tun, wenn das Programm nicht sehr hohe Privilegien hat).
-
wie mache ich das konret unter windows?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ein Treiber programmieren.
-
Es ging mal, geht jetzt aber nicht mehr. Siehe auch:
http://technet.microsoft.com/de-de/library/cc787565(v=ws.10).aspx
-
@ Jochen Kalmbach:
aber es gibt programme, die das können, z.b. "Cheat Engine"!@ -lowbyte- :
wie genau greif ich denn auf den ram zu? könnte ich diesen treiber auch in c programmieren?
-
aber... schrieb:
@ Jochen Kalmbach:
aber es gibt programme, die das können, z.b. "Cheat Engine"!Quatsch. Die kann vielleicht den Speicher eines anderen Prozesses bearbeiten, aber doch nicht das gesamte RAM. Stell dir mal vor, Programme könnten einfach den Kernelspeicher manipulieren.
Was -lowbyte- meinte: Theoretisch kannst du mit Treibern im Kernel mode den Arbeitsspeicher auslesen. Z.B. in deinen Treiber nacheinander den physikalischen Speicher über Pages in deinen Speicherbereich einblenden und dann halt irgendwas damit machen.
Aber deine Frage "wie genau greif ich denn auf den ram zu? könnte ich diesen treiber auch in c programmieren" zeigt, dass du wenig Ahnung von der Materie hast, also lass das lieber.
-
Jonas OSDever schrieb:
aber... schrieb:
@ Jochen Kalmbach:
aber es gibt programme, die das können, z.b. "Cheat Engine"!Quatsch. Die kann vielleicht den Speicher eines anderen Prozesses bearbeiten, aber doch nicht das gesamte RAM. Stell dir mal vor, Programme könnten einfach den Kernelspeicher manipulieren.
Was -lowbyte- meinte: Theoretisch kannst du mit Treibern im Kernel mode den Arbeitsspeicher auslesen. Z.B. in deinen Treiber nacheinander den physikalischen Speicher über Pages in deinen Speicherbereich einblenden und dann halt irgendwas damit machen.
Aber deine Frage "wie genau greif ich denn auf den ram zu? könnte ich diesen treiber auch in c programmieren" zeigt, dass du wenig Ahnung von der Materie hast, also lass das lieber.komisch. denn genau das macht cheat engine, es durchsucht den ram nach daten, die dort von spielen (also "fremden prozessen") abgelegt werden und ändert sie (z.b.: wenn du in einem spiel leben verlierst, dann "merkt" das cheat engine und ändert den wert).
Jonas OSDever schrieb:
Aber deine Frage "wie genau greif ich denn auf den ram zu? könnte ich diesen treiber auch in c programmieren" zeigt, dass du wenig Ahnung von der Materie hast, also lass das lieber.
jeder fängt mal bei null an, wobei ich halt noch nie einen treiber programmiert habe und überhaupt nicht weiß, wie das geht. wenn dein spruch greifen würde, dann gäbe es bald keinen informatiker mehr, weil alle am anfang "wenig ahnung" haben und nach deiner vorstellung das ganze lieber lassen sollen.
-
p.s.: ok, da hab ich wohl deinen beitrag nicht richtig gelesen. ich will auch nicht den ram bearbeiten, sondern nur auslesen.
-
....... schrieb:
komisch. denn genau das macht cheat engine, es durchsucht den ram nach daten, die dort von spielen (also "fremden prozessen") abgelegt werden und ändert sie (z.b.: wenn du in einem spiel leben verlierst, dann "merkt" das cheat engine und ändert den wert).
Nein, das macht Cheatengine nicht. Lies nochmal Jonas OSDevers Beitrag oder eine Dokumentation von Cheatengine. Du hast anscheinend ganz falsche Vorstellungen, wie Arbeitsspeicher in einem modernen System benutzt wird. Stichwort virtual memory.
jeder fängt mal bei null an, wobei ich halt noch nie einen treiber programmiert habe und überhaupt nicht weiß, wie das geht. wenn dein spruch greifen würde, dann gäbe es bald keinen informatiker mehr, weil alle am anfang "wenig ahnung" haben und nach deiner vorstellung das ganze lieber lassen sollen.
Tut mir leid, diese Einstellung ist furchtbar naiv. Wenn ein Fünfjähriger dich ganz ernsthaft fragt, ob er mit Cola und Mentos eine echte Mondrakete bauen kann, dann ist das nicht realistisch, egal wie viel er noch lernt. Das muss man ihm auch sagen können. Bei deinem Kenntnisstand bräuchtest du von jetzt an noch ca. 9-12 Monate (Vollzeit! Oder 3-4 Jahre nebenher), bis du auf dem nötigen Niveau bist.
p.s.: ok, da hab ich wohl deinen beitrag nicht richtig gelesen. ich will auch nicht den ram bearbeiten, sondern nur auslesen.
Das ändert auch nichts wesenliches. Stell dir mal vor, Programme könnten einfach so den Kernelspeicher auslesen.
-
google.
Ah, ReadProcessMemory also.
-
ich werd mich da wohl noch selber informieren.
danke.
-
....... schrieb:
komisch. denn genau das macht cheat engine, es durchsucht den ram nach daten, die dort von spielen (also "fremden prozessen") abgelegt werden und ändert sie (z.b.: wenn du in einem spiel leben verlierst, dann "merkt" das cheat engine und ändert den wert).
Wie ich bereits gesagt habe: Zwischen Speicher eines fremden Prozesses auslesen und gesamten Speicher auslesen besteht ein gewaltiger Unterschied.
Die Cheat-Engine wird sicherlich nur den Speicherbereich des Spieleprozesses auslesen, nicht den des gesamten RAMs. Das ist vergleichsweise einfach.jeder fängt mal bei null an, wobei ich halt noch nie einen treiber programmiert habe und überhaupt nicht weiß, wie das geht. wenn dein spruch greifen würde, dann gäbe es bald keinen informatiker mehr, weil alle am anfang "wenig ahnung" haben und nach deiner vorstellung das ganze lieber lassen sollen.
Glaub mir, du willst keinen Treiber programmieren. Kernel mode bzw. ring 0. Ist dir klar was das heißt? Ein kleiner Fehler im Treiber -> Windows stürtzt ab. Von dem ganzen anderen Mist, den du anstellen könntest rede ich erstmal gar nicht. Ist nicht böse gemeint, aber Treiberprogrammierung ist verdammt kompliziert.
- Du weißt, was der Unterschied zwischen Ring 0/Kernel mode und Ring 3/User mode ist
- Paging ist dir ein Begriff
- GDT, Protected Mode und Long Mode sind für dich keine Fremdwörter
- Du verstehst das Windows-Treiber-System
- Du kannst Assembler, bzw. bist kein absoluter Noob darin
Konntest du alle Aussagen bejahen? Falls nicht dürfte Treiberprogrammierung für dich nahezu unmöglich sein.
Aber mal wieder was Positives: Soweit ich deine Posts interpretiere willst du einen Trainer o.ä. schreiben. Dafür brauchst du keinen Treiber. Du musst nur wissen, wie man den Speicher eines anderen Prozesses bearbeitet (oder vorerst ausliest). Dafür hier mal einige Links:
Prozessspeicher lesen
Prozessspeicher schreiben
DebugPrivilege aktivieren (sonst darfst du nich an anderen Prozessen rumpfuscehn)Prozesse auflisten (1)
Prozesse auflisten (2)
Prozesse auflisten (3)
Die Funktionen am besten mal googlen, da gibts genug Beispiele, wie sie im Zusammenspiel verwendet werden.
-
Hi, ich hab den Thread mit großer Aufmerksamkeit gelesen und würde mich gerne mal selbst mit Treiberprogrammierung beschäftigen. Deine Fragen kann ich nicht bejaen, doch genau das wöllt ich gern lernen. C/C++ Wissen ist denk ich genügend Vorhanden. Kann mir jemand zu diesem Thema ein gutes Buch empfehlen? (Ich weiß wie man google benutzt... aber dort werden einem meist nur Mistbücher empfohlen, bestes Bsp.: JW)
Oder werden einem die Basics, die du in deinen Fragen formuliert hast in solchen Büchern auch nicht mehr behandelt? Wenn ja, wo könnte ich mich dazu informieren?PS: Verzeihung, dass ich mich einfach in eine Offene Diskussion reingehangen hab...
Danke schonmal,
Tobi
-
es geht um den Unterschied zwischen dem physikalischen RAM und dem Arbeitsspeicher von einem prozess. Auf den physikalischen RAM wirst du nicht zugreifen können auf den Arbeitsspeicher von prozessen aber schon. Das Betriebssystem weist den Prozessen speicher zu und emuliert ihnen im Prinzip einen eigenen PC. Sie können so tun als würde der gesamte Arbeitsspeicher und die CPU ihnen gehören. Das ist aber nicht wirklich so, denn das Betriebssystem kann den Prozess jederzeit unterbrechen und einen anderen ausführen, da das so schnell passiert denkst du als anwender alle programme würden gleichzeitig ausgeführt werden was auf einer single core cpu gar nicht möglich wäre. http://de.wikipedia.org/wiki/Protected_Mode
Und es wird dem prozess auch nur virtueller speicher zu gewiesen http://de.wikipedia.org/wiki/PagingWas man dir jetzt sagen wollte ist, du kannst nur auf den virtuellen speicher eines anderen prozesses zugreifen. An das was tatsächlich im RAM steht wirst du nicht rankommen. CheatEngine muss dass z.B auch gar nicht weil es sich sowieso nur für das interessiert was der prozess an den es sich anheftet auch benutzt.
Es ist auch gut so, dass ein Prozess nicht einfach auf den gesamten RAM zugreifen kann. Ansonsten würde ein programm das an der falschen stelle im Arbeitsspeicher Daten verändert den gesamten PC zum abstürzen bringen. So kann ess diese kritischen Bereiche gar nicht erreichen. Unter Windows scheint nur nicht viel zu bringen, da Programme trotzdem Blue Screens auslösen und ganz Windows abstürzen lassen können.Guck dir ReadProcessMemory an wie bereits gesagt wurde, damit kannst du das was auch CheatEngine kann. Aber du kannst nicht in den RAM hineingucken sondern nur virtuellen Speicher lesen der sich zum größten Teil im RAM befindet.
//nachdem ich jetzt 5stunden getippt habe ist mein beitrag überflüssig
-
Ich bin Matrix... schrieb:
Hi, ich hab den Thread mit großer Aufmerksamkeit gelesen und würde mich gerne mal selbst mit Treiberprogrammierung beschäftigen. Deine Fragen kann ich nicht bejaen, doch genau das wöllt ich gern lernen. C/C++ Wissen ist denk ich genügend Vorhanden. Kann mir jemand zu diesem Thema ein gutes Buch empfehlen? (Ich weiß wie man google benutzt... aber dort werden einem meist nur Mistbücher empfohlen, bestes Bsp.: JW)
Oder werden einem die Basics, die du in deinen Fragen formuliert hast in solchen Büchern auch nicht mehr behandelt? Wenn ja, wo könnte ich mich dazu informieren?PS: Verzeihung, dass ich mich einfach in eine Offene Diskussion reingehangen hab...
Danke schonmal,
Tobi+1
das interessiert mich auch.
-
aber... schrieb:
@ Jochen Kalmbach:
aber es gibt programme, die das können, z.b. "Cheat Engine"!Ich glaube Du hast den Unterschied zwischen "RAM" und "Virtual Memory" nicht ganz verstanden...
-
Geht diese ganze Bot-Scheiße hier im Forum auch schon los ... ?
Wenn ihr nur mit Beschiss spielen könnt, dann lasst lieber es bleiben.Außerdem untersagen die meisten AGBs der Spielehersteller die Benutzung von Bots.
Das könnte sich auch rechtlich negativ auf dieses Forum auswirken.
-
Niemand hat was von Bots gesagt. Es geht nur um Speichermanipulation anderer Prozesse. Und ich habe geäußert, dass man auf diese weiße auch Trainer programmieren kann.
Außerdem biegt sich der Thread gerade in Richtung Treiberprogrammierung. Wo ist da was rechtlich bedenkliches?@Matrix, +1:
Ich persönlich kenne kein Buch über Treiberprogrammierung. Aber das WDK bringt ne extrem große Dokumentation mit vielen Beispielen mit, so dass ich ehrlich gesagt der Meinung bin, dass man, für den Anfang, kein Buch braucht.
Was das Paging, GDT & co. betrifft: Im OSDev-Wiki habt ihr ne gute Referenz. Ist, wie der Name schon sagt, zwar eigentlich für Betriebssystementwickler gedacht, allerdings ist dieses Wissen bei der Treiberprogrammierung auch wichtig; man sollte schon wissen an was man da wurschtelt. Außerdem könntet ihr von der Intelwebsite mal das Developermanual 3 ziehen, das enthält gute Informationen, allerdings hier wirklich auf Prozessorebene, so das diese Quelle für Treiberprogrammierung (meiner Meinung nach) nicht unbedingt nötig ist (schaden kanns aber auch nicht).
Assembler selbst ist jetzt nicht die komplizierte Sprache, man kann sie auch einfach im Internet lernen, aber wenn ihr dafür ein Buch braucht empfehle ich
http://www.amazon.de/Assembler-Grundlagen-Programmierung-mitp-Professional/dp/3826614690/ref=sr_1_1?ie=UTF8&qid=1341338068&sr=8-1
Damit habt ihr erstmal ein paar Referenzen.Ich werde mir demnächst mal das hier zu gemüte führen. http://www.amazon.de/Programming-Microsoft-Windows-Driver-CD-ROM/dp/0735605882/ref=tmm_pap_title_0?ie=UTF8&qid=1341337612&sr=8-1
Sieht soweit ganz gut aus, sowohl was Rezensionen als auch Beschreibung betrifft. Aber im Gegensatz zu den oben empfohlenen Referenzen habe ich dieses Buch noch nicht selber gesehen und kann damit auch erstmal nur eine vage Empfehlung geben.Auf jeden Fall viel Erfolg beim Treiberbasteln
EDIT: Wie ging das gleich nochmal, das die Bücher von Amazon mit cover angezeigt werden?