ReadProcessMemory(): seltsamer Fehler[gelöst]



  • Hallo,
    ich arbeite gerade an einem eigentlich ganz einfachen Programm: es liest die Adresse einer Variable eines anderen Programmes[hier MineSweeper] aus einer .txt-datei ein und liest deren Wert mit ReadProcessMemory aus.

    mein Problem dabei ist Folgendes:

    folgender Code funktioniert fehlerfrei und ich erhalte den richtigen Wert:

    HWND hwnd=FindWindow(0, L"MineSweeper");
    HANDLE process=rechte_holen(hwnd);
    /*
    rechte_holen() ist eine selbstgeschriebene Funktion aus einer dll die mir alle zum Lesen und Schreiben benötigten Rechte am Prozess fehlerfrei besorgt
    */
    
    DWORD adresse=0x1005194;
    unsigned int read_buffer;
    
    ReadProcessMemory(process, reinterpret_cast<void*>(adresse), &read_buffer, sizeof(unsigned int), 0);
    
    cout<<"gelesen: "<<read_buffer<<endl;
    

    wie gesagt das Codebeispiel funktioniert einwandfrei und liefert mir auch den gewünschten Wert 🙂

    Das Problem [errorcode 299 = ERROR_PARTIAL_COPY] tritt auf, wenn ich die Zieladresse über fstreams aus einer Textdatei(.txt) einlese:

    in der Zieldatei steht die Adresse im folgenden Format:

    Textdatei schrieb:

    1005194

    das folgende Beispiel enthält die (gekürzte) Version meiner Einlesemethode:

    //Zeile einlesen:
    ifstream lesen("C://test/test.txt");
    string zeile;
    getline(lesen, zeile);
    
    //eingelesene Zeile über Stringstreams mit hex-Manipulator nach DWORD konvertieren:
    stringstream sstr;
    DWORD adresse;
    sstr<<zeile;
    sstr>>hex>>adresse;
    
    //zur Kontrolle Ausgabe der Adresse:
    cout<<adresse<<endl;
    //und hier kommt auch wie erwünscht 1005194 heruas!!
    
    /*der Rest des Codes ist genau wie im obigen Beispiel mit ReadProcessMemory() usw, ich will ihn hier nur nicht doppelt schreiben ;) */
    

    In diesem Beispiel gibt GetLastError() nach ReadProcessMemory() den Fehlercode 299 (ERROR_PARTIAL_COPY) aus;

    aber warum 😕 der einzige Unterschied ist dass oben 0x1005194 steht und unten nur 1005194 herauskommt.

    woran liegt das denn mit dem errorcode 299 und was muss ich anders machen?

    edit: wenn ich im oberen codebeispiel das 0x weglasse kommt übrigens derselbe Fehler!

    danke schonmal,
    andi01.



  • hat sich erledigt, ich habe das problem jetzt selbst gelöst...

    mfg,
    andi01.


Anmelden zum Antworten