Ich hab ne kleine frage zu ein paar Mamorscannern wie T-Search, Cheat-Engine oder ArtMoney.
Wenn ich mit diesen Programmen den Ram eines bestimmten Programmes druchscanne geht das scannen von int werten wesentlich schneller als das von float werten .
Des weiteren sind diese Scanner extrem schnell und liefern Ergebnisse binnen sekunden.
Ich habe mir schon meinen eigenen MemoryScanner geschrieben und bediene mich dabei den WINAPI funktion read/writeprocessmemory , ich habe schon mehrere multithreads am laufen und laste auch bereits den gesamten prozessor damit aus komme aber nicht annähernd an die geschwindigkeit einen solchen oben beschriebenen tools ran...
Woran liegt das ??? verwenden diese ein bestimmte technik um den ram eine programms schneller zu durchsuchen das sie zumal das system kaum belasten oder steckt das etwas ganz anderes dahinter ...
Durchsucht den dein memory searcher den auch nur den teil wo die variablen abgelegt werden oder lässt du den kompletten speicherbereich des programms durchsuchen?
Wahrscheinlich rufst du ReadProcessMemory() in einer Schleife auf. Du solltest ReadProcessMemory() jedoch nur einmal aufrufen und damit dann den gesamten Teil des Zielprozesses, den du nach Werten durchsuchen willst, in den Buffer laden.
Ich bin mir nicht ganz sicher, aber ich glaube, dass Cheat Engine schon bei der Suche DLL- oder Code-Injection benutzt und eigenen Code injiziert welcher dann aus dem Zielprozess direkt den Memory dumpt. Bin mir aber nicht ganz sicher ^^
Also ich hab jetzt mal ne ganze Menge rumprobiert und am Ende kahm das hier raus ...
Mein Versuch war es, einen bereich mit malloc dynamisch zu erzueugen der groß genug ist um darin die 50 Byte der read funktion zu speichern und dann in einer file zu sichern.
Vielleicht solltest Du dein (hoffentlich vorhandenes) Programmiergrundkenntnisse-Buch nochmal in die Hand nehmen und dir dazu die Dokumentation der WinAPI anschauen...
Du solltest erst ab 400000h anfangen zu lesen (wobei es auch passieren kann, dass kurz davor Speicher alloziiert wird), da der Bereich darunter von Win32 benötigt wird und dir somit keine relevanten Informationen liefert.
Außerdem hast du auf [0x0] überhaupt keine Zugriffsrechte.