PAGE_GUARD protection von processen ausschalten, geht sowas ???



  • Keine Ahnung, was genau willst du denn machen? Infos über (fremden) Speicher holen, draus lesen oder sogar reinschreiben?



  • vieleicht 🙂

    mal ne frage zu VirtualProtectEx():

    BOOL VirtualProtectEx(
    
        HANDLE hProcess,	// handle of process 
        LPVOID lpAddress,	// address of region of committed pages 
        DWORD dwSize,	// size of region 
        DWORD flNewProtect,	// desired access protection 
        PDWORD lpflOldProtect 	// address of variable to get old protection  
       );
    

    wenn ich mir das handle vom process geholt habe und nun den speicher zugägnlich machen möchte... muss ich dann unbedingt einen pointer im zweiten parameter und die grösse im dritten angeben? oder kann ich das auf null setzen und er setzt alle seiten im speicher auf full access ?

    Gruß Tobi.



  • T0bi schrieb:

    processe die mit PAGE_GUARD laufen

    Ähm, alle Prozesse werden wohl diesen PAGE_GUARD Flag haben, das gehört ur Windows speicherverwaltung und hat nichts mit Prozessen zu tun.



  • ok ... waer trotzdem noch cool, wenn mir wer meine frage beantworten koennte ...

    Gruß Tobi.



  • Was sagt die Hilfe dazu?



  • VirtualAllocEx -> SYSTEM_INFO.



  • Na T0bi, trollst wieder rum 😉

    greetz, Swordfish



  • T0bi schrieb:

    wenn ich mir das handle vom process geholt habe und nun den speicher zugägnlich machen möchte...
    muss ich dann unbedingt einen pointer im zweiten parameter und die grösse im dritten angeben?

    Ja, musst Du. VirtualQueryEx () liefert Dir sogar den "Pointer" und die "Grösse".

    T0bi schrieb:

    oder kann ich das auf null setzen und er setzt alle seiten im speicher auf full access ?

    Nein, macht er nicht. Das Flag "PAGE_GUARD" hat nichts zutun mit "Speichermanagement".



  • hmmm...

    DWORD VirtualQueryEx(
    
        HANDLE hProcess,	                  // handle of process 
        LPCVOID lpAddress,	                  // address of region 
        PMEMORY_BASIC_INFORMATION lpBuffer,	// address of information buffer  
        DWORD dwLength 	                  // size of buffer 
    );
    

    SYSTEM_INFO si;
    schreibe ich im zweiten parameter einfach nur GetSystemInfo( &si ), rein?

    MEMORY_BASIC_INFORMATION mbi;
    und im dritten &mbi ?

    und im vierten sizeof( MEMORY_BASIC_INFORMATION ) ?

    und trotzdem weiss ich immer noch net wie ich das mit VirtualallocEx in verbindung bringe... gibts denn hier irgendwo codeschnipdel?

    Gruß Tobi.



  • ich glaub langsam komm ich dahinter wie das mit dem ganzen funktioniert. eine frage wollte ich da noch schnell einwerfen.
    es ist mir bekannt das unter 32bit systemen( zB. WinXP ) jedem process 4GB virtueler speicher zugewiesen wird. meine frage war ja im weitesten sinn die, wie ich start- und endaddresse eines processes heraus bekomme.
    wenn ich in VirtualQueryEx() das process handle uebergebe, ist dann wenn ich fuer die startaddresse 0x00000000 eingebe, das die erste addresse im virtuelen speicher des processes oder überhaupt von allen processen die erste addresse?
    denn wenn es so waere koennte ich nicht einfach eine schleife schreiben, die alle seiten in diesem 4GB speicher durch ackert( end addresse also 0xFFFFFFFF )
    und so mit virtualprotectex alle seiten auf full_access setzen?



  • ich meinte bis 0x80000000.


Anmelden zum Antworten