Werte der Adressen speichern



  • Hallo,

    Ich habe folgendes vor: Ich möchte einen bestimmten Adressen-Intervall iterativ in einer Schleife durchlaufen und dabei den Wert jeder Adresse in eine Datei abspeichern:

    ofstream out( "Werte.txt" );
    for( unsigned int i = 0x200000; i < 0x250000; i++ )
    {
        int temp = *(int*)i;
        out << temp << "\n";
    }
    out.close();
    

    Das Problem ist, dass mein Programm leider abstürzt: "test.exe hat ein Problem festgestellt und muss beendet werden". Ich würde mich über Hilfe freuen 🙂



  • Da alle modernen Betriebssysteme im sog. Protected Mode laufen, kannst du nur auf den Speicherbereich zugreifen, der zu deinem Programm gehört. Alle anderen Zugriffe führen zu einer Speicherzugriffsverletzung und das Programm wird vom OS abgeschossen (nach C++-Standard sollte das Verhalten zumindest undefiniert sein). So etwas, was du hier machen willst, funktioniert nur im Real mode.



  • Hmm kann ich denn dann den Speicherbereich meines Programms eingrenzen? Geht das mit Standard C++, oder muss ich da auf die WinAPI zurückgreifen?



  • Pointi schrieb:

    Hmm kann ich denn dann den Speicherbereich meines Programms eingrenzen?

    Inwiefern? Wieso möchtest du das tun?

    Keyword: ReadProcessMemory().



  • Also ich meine eingrenzen insofern, als dass ich herausfinden kann, welche Speicherbereiche zu meinem Programm gehören und ich dann eben nur diese absuche. ReadProcessMemory() ist mir zu langsam und ich möchte ja nur den Speicher meines eigenen Programms lesen 🙂



  • BOOL WINAPI GetProcessMemoryInfo()
    Durch den zweiten Parameter hast du die Anzahl und Größen der Pages die im Prozess abgebildet sind.


Anmelden zum Antworten