Speicher schnell durchsuchen (C#) ?

  • Hallo zusammen,


    ich muss an einer Stelle im Speicher eine Änderung vornehmen ;) Leider ist de zu patchende Adresse nicht statisch,
    somit muss ich mir eine Suchfunktion bauen, die mir die zu patchenden Byte's im Programmspeicher findet und die Adresse liefert.


    Ich habe testweise mal versucht mit Hilfe einer for-Schleife und ReadProcessMemory den Speicher von 0x04100000...0x7FFFFFFF zu durchsuchen aber das hat extrem lange gedauert..


    Nun habe ich folgenden Ansatz, leider liefert mir ManagedWinapi.ProcessMemoryChunk.read in das Array "bigMem" nur Null-bytes...
    Kann das jemand nachvollziehen bzw. kennt eine bessere und schnelle Möglichkeit den Speicher ratzfatz zu scannen ?


    (Das Programm ist in Modulen aufgebaut und eins davon schreibt die Bytes, die ich patchen muss..)


    thanks in advice
    tcM


  • Greif dir den PE Header des Moduls und scan nur die .text Section. Am besten liest du dann in blöcken und nicht jedes Byte einzeln.
    Es ist ja klar, dass das ganze so lange dauert, weil du knapp 2GB absuchst.


    MfG

  • Hi,
    ich muss den Thread noch mal kurz aufwärmen:


    Es geht um ein anderes Programm.


    Mit Cheat Engine kann ich meinen gesuchten String finden, allerdings steht dieser an einer Adresse,
    wo kein's der benutzten Module hinschreibt.?!


    Um nicht den gesamten Speicher durchsuchen zu müssen, muss ich den Bereich eingrenzen...


    Hat jemand eine Idee?


    Gruß
    tcM