RAM



  • So..demonstration was ein Prozess alles ansammelt (entsteht, indem man VirtualQueryEx immer mit der Adresse nach dem zurückgelieferten Block aufruft):

    ACHTUNG, VIEL 😉
    Das beobachtete Programm war Notepad, ohne irgendwas geladen zu haben:

    Memory map for process ID 492:
    0x00000000 - 0x00010000  ???               ---               FREE     ??????? 
    0x00010000 - 0x00011000  RW-               RW-               COMMIT   PRIVATE 
    0x00011000 - 0x00020000  ???               ---               FREE     ??????? 
    0x00020000 - 0x00021000  RW-               RW-               COMMIT   PRIVATE 
    0x00021000 - 0x00030000  ???               ---               FREE     ??????? 
    0x00030000 - 0x0006d000  RW-               ???               RESERVED PRIVATE 
    0x0006d000 - 0x0006e000  RW-               ??? GUARD         COMMIT   PRIVATE 
    0x0006e000 - 0x00070000  RW-               RW-               COMMIT   PRIVATE 
    0x00070000 - 0x0007d000  RW-               RW-               COMMIT   PRIVATE 
    0x0007d000 - 0x00170000  RW-               ???               RESERVED PRIVATE 
    0x00170000 - 0x00171000  RW-               RW-               COMMIT   MAPPED  
    0x00171000 - 0x00180000  RW-               ???               RESERVED MAPPED  
    0x00180000 - 0x00196000  R--               R--               COMMIT   MAPPED  
    0x00196000 - 0x001a0000  ???               ---               FREE     ??????? 
    0x001a0000 - 0x001cf000  R--               R--               COMMIT   MAPPED  
    0x001cf000 - 0x001d0000  ???               ---               FREE     ??????? 
    0x001d0000 - 0x00211000  R--               R--               COMMIT   MAPPED  
    0x00211000 - 0x00220000  ???               ---               FREE     ??????? 
    0x00220000 - 0x00224000  R--               R--               COMMIT   MAPPED  
    0x00224000 - 0x00230000  ???               ---               FREE     ??????? 
    0x00230000 - 0x00234000  RW-               RW-               COMMIT   PRIVATE 
    0x00234000 - 0x00240000  RW-               ???               RESERVED PRIVATE 
    0x00240000 - 0x00242000  R--               R--               COMMIT   MAPPED  
    0x00242000 - 0x00250000  ???               ---               FREE     ??????? 
    0x00250000 - 0x00254000  R-X               R-X               COMMIT   MAPPED  
    0x00254000 - 0x00310000  R-X               ???               RESERVED MAPPED  
    0x00310000 - 0x00312000  R-X               R-X               COMMIT   MAPPED  
    0x00312000 - 0x00318000  R-X               ???               RESERVED MAPPED  
    0x00318000 - 0x00320000  ???               ---               FREE     ??????? 
    0x00320000 - 0x00363000  R--               R--               COMMIT   MAPPED  
    0x00363000 - 0x00380000  ???               ---               FREE     ??????? 
    0x00380000 - 0x003e4000  R-X               R-X               COMMIT   MAPPED  
    0x003e4000 - 0x00680000  R-X               ???               RESERVED MAPPED  
    0x00680000 - 0x00681000  RW-               RW-               COMMIT   PRIVATE 
    0x00681000 - 0x00690000  ???               ---               FREE     ??????? 
    0x00690000 - 0x00691000  RW-               RW-               COMMIT   PRIVATE 
    0x00691000 - 0x006a0000  ???               ---               FREE     ??????? 
    0x006a0000 - 0x006a4000  RW-               RW-               COMMIT   PRIVATE 
    0x006a4000 - 0x006b0000  RW-               ???               RESERVED PRIVATE 
    0x006b0000 - 0x006b1000  RW-               RW-               COMMIT   MAPPED  
    0x006b1000 - 0x006c0000  ???               ---               FREE     ??????? 
    0x006c0000 - 0x006d0000  RW-               RW-               COMMIT   MAPPED  
    0x006d0000 - 0x00700000  RW-               ???               RESERVED MAPPED  
    0x00700000 - 0x00701000  RW-               RW-               COMMIT   PRIVATE 
    0x00701000 - 0x00780000  RW-               ???               RESERVED PRIVATE 
    0x00780000 - 0x00781000  RCX               R--               COMMIT   IMAGE   
    0x00781000 - 0x0079b000  RCX               --X               COMMIT   IMAGE   
    0x0079b000 - 0x0079d000  RCX               R--               COMMIT   IMAGE   
    0x0079d000 - 0x007a2000  RCX               RW-               COMMIT   IMAGE   
    0x007a2000 - 0x007aa000  RCX               R--               COMMIT   IMAGE   
    0x007aa000 - 0x007b0000  ???               ---               FREE     ??????? 
    0x007b0000 - 0x007b8000  RW-               RW-               COMMIT   PRIVATE 
    0x007b8000 - 0x007c0000  RW-               ???               RESERVED PRIVATE 
    0x007c0000 - 0x007c8000  RW-               RW-               COMMIT   PRIVATE 
    0x007c8000 - 0x008c0000  RW-               ???               RESERVED PRIVATE 
    0x008c0000 - 0x008c1000  RW-               RW-               COMMIT   MAPPED  
    0x008c1000 - 0x008d0000  ???               ---               FREE     ??????? 
    0x008d0000 - 0x008d5000  RW-               RW-               COMMIT   MAPPED  
    0x008d5000 - 0x00950000  RW-               ???               RESERVED MAPPED  
    0x00950000 - 0x00990000  ???               ---               FREE     ??????? 
    0x00990000 - 0x00994000  RW-               RW-               COMMIT   PRIVATE 
    0x00994000 - 0x009a0000  RW-               ???               RESERVED PRIVATE 
    0x009a0000 - 0x009b0000  RW-               RW-               COMMIT   PRIVATE 
    0x009b0000 - 0x00da0000  RW-               ???               RESERVED PRIVATE 
    0x00da0000 - 0x00dc0000  ???               ---               FREE     ??????? 
    0x00dc0000 - 0x00dc1000  RW-               RW-               COMMIT   MAPPED  
    0x00dc1000 - 0x00dd0000  ???               ---               FREE     ??????? 
    0x00dd0000 - 0x00dd1000  RW-               RW-               COMMIT   MAPPED  
    0x00dd1000 - 0x00de0000  ???               ---               FREE     ??????? 
    0x00de0000 - 0x00de1000  RW-               RW-               COMMIT   MAPPED  
    0x00de1000 - 0x00df0000  ???               ---               FREE     ??????? 
    0x00df0000 - 0x00df1000  RW-               RW-               COMMIT   MAPPED  
    0x00df1000 - 0x00e00000  ???               ---               FREE     ??????? 
    0x00e00000 - 0x00e01000  RW-               RW-               COMMIT   MAPPED  
    0x00e01000 - 0x00e10000  ???               ---               FREE     ??????? 
    0x00e10000 - 0x00e11000  RW-               RW-               COMMIT   MAPPED  
    0x00e11000 - 0x01000000  ???               ---               FREE     ??????? 
    0x01000000 - 0x01001000  RCX               R--               COMMIT   IMAGE   
    0x01001000 - 0x01008000  RCX               R-X               COMMIT   IMAGE   
    0x01008000 - 0x0100a000  RCX               RW-               COMMIT   IMAGE   
    0x0100a000 - 0x01010000  RCX               R--               COMMIT   IMAGE   
    0x01010000 - 0x10000000  ???               ---               FREE     ??????? 
    0x10000000 - 0x10003000  RCX               R--               COMMIT   IMAGE   
    0x10003000 - 0x60000000  ???               ---               FREE     ??????? 
    0x60000000 - 0x60001000  RCX               R--               COMMIT   IMAGE   
    0x60001000 - 0x6003a000  RCX               R-X               COMMIT   IMAGE   
    0x6003a000 - 0x6003c000  RCX               RW-               COMMIT   IMAGE   
    0x6003c000 - 0x6003d000  RCX               RC-               COMMIT   IMAGE   
    0x6003d000 - 0x6003e000  RCX               RW-               COMMIT   IMAGE   
    0x6003e000 - 0x60045000  RCX               R--               COMMIT   IMAGE   
    0x60045000 - 0x70bd0000  ???               ---               FREE     ??????? 
    0x70bd0000 - 0x70bd1000  RCX               R--               COMMIT   IMAGE   
    0x70bd1000 - 0x70c2b000  RCX               R-X               COMMIT   IMAGE   
    0x70c2b000 - 0x70c2c000  RCX               RW-               COMMIT   IMAGE   
    0x70c2c000 - 0x70c2d000  RCX               RC-               COMMIT   IMAGE   
    0x70c2d000 - 0x70c35000  RCX               R--               COMMIT   IMAGE   
    0x70c35000 - 0x71710000  ???               ---               FREE     ??????? 
    0x71710000 - 0x71711000  RCX               R--               COMMIT   IMAGE   
    0x71711000 - 0x71770000  RCX               R-X               COMMIT   IMAGE   
    0x71770000 - 0x71771000  RCX               RW-               COMMIT   IMAGE   
    0x71771000 - 0x71794000  RCX               R--               COMMIT   IMAGE   
    0x71794000 - 0x75940000  ???               ---               FREE     ??????? 
    0x75940000 - 0x75941000  RCX               R--               COMMIT   IMAGE   
    0x75941000 - 0x75943000  RCX               R-X               COMMIT   IMAGE   
    0x75943000 - 0x75944000  RCX               RW-               COMMIT   IMAGE   
    0x75944000 - 0x75946000  RCX               R--               COMMIT   IMAGE   
    0x75946000 - 0x76b00000  ???               ---               FREE     ??????? 
    0x76b00000 - 0x76b01000  RCX               R--               COMMIT   IMAGE   
    0x76b01000 - 0x76b2a000  RCX               R-X               COMMIT   IMAGE   
    0x76b2a000 - 0x76b2b000  RCX               RW-               COMMIT   IMAGE   
    0x76b2b000 - 0x76b2e000  RCX               RC-               COMMIT   IMAGE   
    0x76b2e000 - 0x76b3e000  RCX               R--               COMMIT   IMAGE   
    0x76b3e000 - 0x77540000  ???               ---               FREE     ??????? 
    0x77540000 - 0x77541000  RCX               R--               COMMIT   IMAGE   
    0x77541000 - 0x77560000  RCX               R-X               COMMIT   IMAGE   
    0x77560000 - 0x77564000  RCX               RW-               COMMIT   IMAGE   
    0x77564000 - 0x77565000  RCX               RC-               COMMIT   IMAGE   
    0x77565000 - 0x77571000  RCX               R--               COMMIT   IMAGE   
    0x77571000 - 0x77580000  ???               ---               FREE     ??????? 
    0x77580000 - 0x77581000  RCX               R--               COMMIT   IMAGE   
    0x77581000 - 0x7769e000  RCX               R-X               COMMIT   IMAGE   
    0x7769e000 - 0x7769f000  RCX               RW-               COMMIT   IMAGE   
    0x7769f000 - 0x776a2000  RCX               RC-               COMMIT   IMAGE   
    0x776a2000 - 0x777cc000  RCX               R--               COMMIT   IMAGE   
    0x777cc000 - 0x777f0000  ???               ---               FREE     ??????? 
    0x777f0000 - 0x777f1000  RCX               R--               COMMIT   IMAGE   
    0x777f1000 - 0x77809000  RCX               R-X               COMMIT   IMAGE   
    0x77809000 - 0x7780a000  RCX               RW-               COMMIT   IMAGE   
    0x7780a000 - 0x7780c000  RCX               RC-               COMMIT   IMAGE   
    0x7780c000 - 0x7780e000  RCX               R--               COMMIT   IMAGE   
    0x7780e000 - 0x77810000  ???               ---               FREE     ??????? 
    0x77810000 - 0x77811000  RCX               R--               COMMIT   IMAGE   
    0x77811000 - 0x77814000  RCX               R-X               COMMIT   IMAGE   
    0x77814000 - 0x77815000  RCX               RW-               COMMIT   IMAGE   
    0x77815000 - 0x77817000  RCX               R--               COMMIT   IMAGE   
    0x77817000 - 0x77880000  ???               ---               FREE     ??????? 
    0x77880000 - 0x77881000  RCX               R--               COMMIT   IMAGE   
    0x77881000 - 0x778cf000  RCX               R-X               COMMIT   IMAGE   
    0x778cf000 - 0x778d1000  RCX               RW-               COMMIT   IMAGE   
    0x778d1000 - 0x778d2000  RCX               RC-               COMMIT   IMAGE   
    0x778d2000 - 0x77901000  RCX               R--               COMMIT   IMAGE   
    0x77901000 - 0x779a0000  ???               ---               FREE     ??????? 
    0x779a0000 - 0x779a2000  RCX               R--               COMMIT   IMAGE   
    0x779a2000 - 0x77a2a000  RCX               R-X               COMMIT   IMAGE   
    0x77a2a000 - 0x77a2b000  RCX               RC-               COMMIT   IMAGE   
    0x77a2b000 - 0x77a32000  RCX               RW-               COMMIT   IMAGE   
    0x77a32000 - 0x77a3b000  RCX               R--               COMMIT   IMAGE   
    0x77a3b000 - 0x77a40000  ???               ---               FREE     ??????? 
    0x77a40000 - 0x77a41000  RCX               R--               COMMIT   IMAGE   
    0x77a41000 - 0x77b22000  RCX               R-X               COMMIT   IMAGE   
    0x77b22000 - 0x77b26000  RCX               RW-               COMMIT   IMAGE   
    0x77b26000 - 0x77b28000  RCX               RC-               COMMIT   IMAGE   
    0x77b28000 - 0x77b35000  RCX               R--               COMMIT   IMAGE   
    0x77b35000 - 0x77d20000  ???               ---               FREE     ??????? 
    0x77d20000 - 0x77d21000  RCX               R--               COMMIT   IMAGE   
    0x77d21000 - 0x77d8b000  RCX               R-X               COMMIT   IMAGE   
    0x77d8b000 - 0x77d8c000  RCX               RW-               COMMIT   IMAGE   
    0x77d8c000 - 0x77d91000  RCX               R--               COMMIT   IMAGE   
    0x77d91000 - 0x77da0000  ???               ---               FREE     ??????? 
    0x77da0000 - 0x77da1000  RCX               R--               COMMIT   IMAGE   
    0x77da1000 - 0x77df3000  RCX               R-X               COMMIT   IMAGE   
    0x77df3000 - 0x77df4000  RCX               RW-               COMMIT   IMAGE   
    0x77df4000 - 0x77df7000  RCX               RC-               COMMIT   IMAGE   
    0x77df7000 - 0x77dfd000  RCX               R--               COMMIT   IMAGE   
    0x77dfd000 - 0x77e00000  ???               ---               FREE     ??????? 
    0x77e00000 - 0x77e01000  RCX               R--               COMMIT   IMAGE   
    0x77e01000 - 0x77e59000  RCX               R-X               COMMIT   IMAGE   
    0x77e59000 - 0x77e5a000  RCX               RW-               COMMIT   IMAGE   
    0x77e5a000 - 0x77e65000  RCX               R--               COMMIT   IMAGE   
    0x77e65000 - 0x77e70000  ???               ---               FREE     ??????? 
    0x77e70000 - 0x77e71000  RCX               R--               COMMIT   IMAGE   
    0x77e71000 - 0x77ecf000  RCX               R-X               COMMIT   IMAGE   
    0x77ecf000 - 0x77ed1000  RCX               RW-               COMMIT   IMAGE   
    0x77ed1000 - 0x77f33000  RCX               R--               COMMIT   IMAGE   
    0x77f33000 - 0x77f40000  ???               ---               FREE     ??????? 
    0x77f40000 - 0x77f41000  RCX               R--               COMMIT   IMAGE   
    0x77f41000 - 0x77f78000  RCX               R-X               COMMIT   IMAGE   
    0x77f78000 - 0x77f79000  RCX               RW-               COMMIT   IMAGE   
    0x77f79000 - 0x77f7c000  RCX               R--               COMMIT   IMAGE   
    0x77f7c000 - 0x78000000  ???               ---               FREE     ??????? 
    0x78000000 - 0x78001000  RCX               R--               COMMIT   IMAGE   
    0x78001000 - 0x78033000  RCX               R-X               COMMIT   IMAGE   
    0x78033000 - 0x7803b000  RCX               R--               COMMIT   IMAGE   
    0x7803b000 - 0x7803e000  RCX               RW-               COMMIT   IMAGE   
    0x7803e000 - 0x78041000  RCX               RC-               COMMIT   IMAGE   
    0x78041000 - 0x78042000  RCX               RW-               COMMIT   IMAGE   
    0x78042000 - 0x78046000  RCX               R--               COMMIT   IMAGE   
    0x78046000 - 0x782f0000  ???               ---               FREE     ??????? 
    0x782f0000 - 0x782f1000  RCX               R--               COMMIT   IMAGE   
    0x782f1000 - 0x782fd000  RCX               R-X               COMMIT   IMAGE   
    0x782fd000 - 0x782fe000  RCX               RW-               COMMIT   IMAGE   
    0x782fe000 - 0x78300000  RCX               R--               COMMIT   IMAGE   
    0x78300000 - 0x7f6f0000  ???               ---               FREE     ??????? 
    0x7f6f0000 - 0x7f6f7000  R-X               R-X               COMMIT   MAPPED  
    0x7f6f7000 - 0x7f7f0000  R-X               ???               RESERVED MAPPED  
    0x7f7f0000 - 0x7ffb0000  ???               ---               FREE     ??????? 
    0x7ffb0000 - 0x7ffd4000  R--               R--               COMMIT   MAPPED  
    0x7ffd4000 - 0x7ffde000  ???               ---               FREE     ??????? 
    0x7ffde000 - 0x7ffdf000  RWX               RWX               COMMIT   PRIVATE 
    0x7ffdf000 - 0x7ffe0000  RWX               RWX               COMMIT   PRIVATE 
    0x7ffe0000 - 0x7ffe1000  R--               R--               COMMIT   PRIVATE 
    0x7ffe1000 - 0x7fff0000  R--               ---               RESERVED PRIVATE
    


  • Ja also komm ich da nicht ran oder wie?
    Also ich weiss ja nicht, aber das kann doch nicht so schwer sein:
    Ich will einfach ein Programm schreiben dass mir den kompletten Arbeitsspeicher von einem best. Programm ausgibt, beispielsweise Notepad.

    Deshalb benötige ich die Startadresse des Programms im Speicher und die Endadresse des Programms im Speicher

    Wie geht das?
    danke!
    cu para
    😃



  • Original erstellt von paranoiac.org:
    **Ja also komm ich da nicht ran oder wie?
    Also ich weiss ja nicht, aber das kann doch nicht so schwer sein:
    Ich will einfach ein Programm schreiben dass mir den kompletten Arbeitsspeicher von einem best. Programm ausgibt, beispielsweise Notepad.

    Deshalb benötige ich die Startadresse des Programms im Speicher und die Endadresse des Programms im Speicher
    **

    Also wenn du den gesamten Speicher ausgeben willst, gehst du wie ich die ganzen Speicherblöcke ab und gibst alle aus, bei denen Read-Zugriff erlaubt ist (im Fehl mbi.Protect PAGE_READ, PAGE_READWRITE etc.)

    Edit: Startadresse und Endadresse sind ziemlich schwer zu definieren. Ein Programm kann ja durchaus von Windows Speicher anfragen und Windows kann den quer im Speicher verteilen. Außerdem kommen noch DLLs dazu etc. Im allgemeinen sind die Speicherbereiche, die von der EXE-Datei kommen, genauso wie die DLL-Bereiche diejenigen, die mit MEM_IMAGE markiert sind.

    zusätzlich angeforderte Speicherbereiche (seis von EXE oder DLL) sind als MEM_PRIVATE markiert.

    [ Dieser Beitrag wurde am 22.01.2003 um 15:40 Uhr von TriPhoenix editiert. ]



  • Ja wie? Ich muss also wenn ich 2GB RAM hab alles durchlaufen?? Und dann prüfen oder was? Kann ich nicht gezielt nur die Blöcke auslesen, die auch Notepad gehören?

    Achja. Dann bräuchte ich ach kein VirtualQueryEx, da ja ReadProcessMemory sonst eh einen Fehler zurückgibt?!

    [ Dieser Beitrag wurde am 22.01.2003 um 15:40 Uhr von paranoiac.org editiert. ]



  • Original erstellt von paranoiac.org:
    **Ja wie? Ich muss also wenn ich 2GB RAM hab alles durchlaufen?? Und dann prüfen oder was? Kann ich nicht gezielt nur die Blöcke auslesen, die auch Notepad gehören?

    Achja. Dann bräuchte ich ach kein VirtualQueryEx, da ja ReadProcessMemory sonst eh einen Fehler zurückgibt?!

    [ Dieser Beitrag wurde am 22.01.2003 um 15:40 Uhr von [qb]paranoiac.org** editiert. ][/QB]

    Du musst IMMER 2GB ram durchlaufen, weil Windows ja einen virtuellen Adressraum so zur verfügung stellt. Ansonsten s. mein Edit im Post drüber.

    Und ja, dann kannst du eigentlich schon genauso per ReadProcessMemory alles brutal abfragen. Dann aber in 4096-Stücken, da du ja vorher nicht wissen kannst, wie groß die lesbaren Bereiche sind. Und bedenke, dass du auch immer alle DLLs mitdumpst und deren Daten 🙂

    PS: Was Notepad "GEHÖRT" ist ebenso schlecht definierbar. Im Prinzip gehören ihm alle seiten, die als MEM_COMMIT markiert sind.

    [ Dieser Beitrag wurde am 22.01.2003 um 15:43 Uhr von TriPhoenix editiert. ]



  • Das heisst ich durchlaufe von 0x00000000 bis 0x80000000



  • Original erstellt von paranoiac.org:
    Das heisst ich durchlaufe von 0x00000000 bis 0x80000000

    Exakt, weil ab 0x80000000 der Kernelbereich anfängt udn da hat man sowieso nichts zu melden 🙂



  • Habs jetzt so.
    Das müsste doch den Speicher der Notepad gehört auspucken oder?
    Weil nur bei den Blöcken die Notepad gehören ist Read....() erfolgreich odeR?

    #include <stdio.h>
    #include <windows.h>
    
    int main()
    {
        HWND            hWnd;
      HANDLE        hProc;
      DWORD         dwProcID;
      DWORD         dwRw = 0;
    
      unsigned  sadress = 0x00000000;
      unsigned  eadress = 0x80000000;
      int               buffer  = 0;
      long              iBytes2Read ;
    
      long iBytes;
    
      // find notepad
      hWnd = FindWindow(0, "Unbenannt - Editor");
      if(!hWnd)
        return 0;
    
        // get process id
        GetWindowThreadProcessId(hWnd, &dwProcID);
    
        // open process
        hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID);
    
        // get bytes to read
        printf("Wieviele Bytes auslesen: ");
        scanf("%d", &iBytes2Read);
        printf("\n");
    
        iBytes=0;
    
        iBytes2Read = 0x80000000;
    
        while(iBytes2Read--){
            if(ReadProcessMemory(hProc,(LPCVOID)sadress,&buffer, sizeof(buffer),&dwProcID)){
                iBytes++;
                if(buffer<127 && buffer>31)
                    printf("%c", buffer);           
            }
        sadress++;
        }
        printf("\n\nFertig!");
    
        // close handle
        CloseHandle(hProc);//<-- Wichtig!
    
        // quit
        fflush(stdin);
        getchar();
      return 0;
    }
    


  • fflush(stdin);

    Das ist verboten



  • wieso das denn??



  • Original erstellt von <Offtopic>:
    **fflush(stdin);

    Das ist verboten**

    Nihct verboten, das Verhalten auf input-Streams ist nur undefiniert 🙂 Und in der MSDN wirds benutzt, ist also unter Windows sehr wohl von M$ definiert worden



  • fflush ist nur auf stdout definiert. auf stdin == undefiniertes verhalten



  • Original erstellt von paranoiac.org:
    **Habs jetzt so.
    Das müsste doch den Speicher der Notepad gehört auspucken oder?
    Weil nur bei den Blöcken die Notepad gehören ist Read....() erfolgreich odeR?
    **

    Sieht vernünftig aus....ist nu nicht gerade das schnellste 😉



  • MMmh, wie geht es denn schneller?
    Brauche so für 0x00000000 bis 0x01000000 57 Sekunden

    [ Dieser Beitrag wurde am 22.01.2003 um 15:56 Uhr von paranoiac.org editiert. ]



  • Original erstellt von paranoiac.org:
    **MMmh, wie geht es denn schneller?
    Brauche so für 0x00000000 bis 0x01000000 57 Sekunden
    **

    Lies in 4096er-Blöcken (Eine Speicherseite), solange es geht. Also mach dienen Buffer z.B. so:
    unsigned char buffer[4096];

    dann musst du halt deine while-Schleife so modifizieren, dass sie 4096er-Blöcke rechnet.



  • char buffer[4097];



  • Ok, aber ist deine vorherige Methode mit VirtualQueryEx nicht schneller?
    Oder hab ich da jetzt was ganz falsch verstanden 😕



  • Original erstellt von paranoiac.org:
    Ok, aber ist deine vorherige Methode mit VirtualQueryEx nicht schneller?
    Oder hab ich da jetzt was ganz falsch verstanden 😕

    Vermutlich, da du Blöcke die nicht existieren garnicht erst anfasst und dir damit nen Haufen fehlerhafte Aufrufe sparst. Denn reeall ist bei Notepad z.B. ja wie du sagtest nur 2MB belegt, während man 2GB abscannt. per VirtualQueryEx bekommst du von vornerein nur die gültigen Bereiche. Das macht das Programm wzar einen Tick komplizierter, aber wesentlich schöner



  • Ok, lönntest du mir dann vielleicht ein wenig helfen?
    Ich möchte einfach wenn ich einen String in Notepad eintippe "HALLO" zum Beispiel die Adresse dieses Strings ausgeben können



  • Original erstellt von <++>:
    char buffer[4097];

    Wozu? Ne vernünftieg Ausgabe muss dazu sowieso neu geschrieben werden, es sei denn man mags, wenn der Rechner vor piepen nicht mehr kann 😉


Anmelden zum Antworten