VirualQueryEx

Тема в разделе "WASM.BEGINNERS", создана пользователем BadLogin, 29 апр 2009.

  1. BadLogin

    BadLogin Серёга =)

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    82
    Адрес:
    Сайнт-Пи
    Мне нужно сохранить в файл таблицу такую же как выдаёт "PETools" при "Dump region"

    Код (Text):
    1. HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, Pid );
    2. FILE *f;
    3. DWORD start=0;
    4. f = fopen("TEST.txt", "w");
    5.  
    6. while(start<0xFFFFFFFF)
    7. {
    8.     MEMORY_BASIC_INFORMATION mbi;
    9.     int sz=VirtualQueryEx(hProcess,(void*)start,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
    10.     if( (mbi.State==MEM_COMMIT) &&
    11.         (mbi.Protect!=PAGE_READONLY) &&
    12.         (mbi.Protect!=PAGE_EXECUTE_READ) &&
    13.         (mbi.Protect!=PAGE_GUARD) &&
    14.         (mbi.Protect!=PAGE_NOACCESS) )
    15.     {
    16.         printf("Found memory based at %d, size %d",mbi.BaseAddress,mbi.RegionSize);
    17.         char *p=(char*)malloc(mbi.RegionSize);
    18.         SIZE_T lpRead;
    19.         if(!ReadProcessMemory(hProcess,(void*)start,p,mbi.RegionSize,&lpRead))
    20.             printf("ReadProcessMemory failed %d Read %d",GetLastError(),lpRead);
    21.         if(mbi.RegionSize!=lpRead)
    22.             printf("Read short bytes %d != %d",mbi.RegionSize,lpRead);
    23.         fwrite(p,1,lpRead,f);
    24.     }
    25.     if(start+mbi.RegionSize<start) break;
    26.     start+=mbi.RegionSize;
    27. }
    создаётся пустой файл =(
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    BadLogin
    fwrite вызывается?
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Да о чем тут говорить - проверки открытия процесса нет, файл открывается в текщей директории - фиг знает какой, проверки открытия файла нет, память маллоком выделяется и не освобождается - видать решил себе всю память чужого процесса перекачать :lol:
     
  4. BadLogin

    BadLogin Серёга =)

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    82
    Адрес:
    Сайнт-Пи
    leo
    не совсем ... нужно перебрать процесс и составить таблицу его сегментов =)
     
  5. BadLogin

    BadLogin Серёга =)

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    82
    Адрес:
    Сайнт-Пи
    Програмка MemViewer делает то, что нужно, хотя обидно, что так и не научился делать самостоятельно =((