Код (Text): PVOID p = GetModuleHandleA("NTDLL"); PIMAGE_NT_HEADERS pnt = PIMAGE_NT_HEADERS(PIMAGE_DOS_HEADER(p)->e_lfanew + PCHAR(p)); DWORD size = pnt->OptionalHeader.SizeOfImage; char* buf = (char*)MemAlloc(size); MEMORY_BASIC_INFORMATION inf; Toolhelp32ReadProcessMemory(pGetProcessId(hProcess),p,buf,size,&size); buf = (char*) p; size = pnt->OptionalHeader.SizeOfImage; while ( (PCHAR(buf) - PCHAR(p)) < size ){ memset(&inf,0,sizeof(inf)); VirtualQueryEx(hProcess,buf,&inf,4096); buf+=4096; }; Почему не все страницы удаеться получить (возникает ошибка доступа ERROR_ACCESS_DENIED )? Хотя все страницы доступны на чтение(смотрел через OllyDbg) упс... перенесите в WIN32 ...
XshStasX Причины ERROR_ACCESS_DENIED: Код (Text): STATUS_THREAD_IS_TERMINATING STATUS_PROCESS_IS_TERMINATING STATUS_INVALID_LOCK_SEQUENCE STATUS_INVALID_VIEW_SIZE STATUS_ALREADY_COMMITTED STATUS_ACCESS_DENIED STATUS_FILE_IS_A_DIRECTORY STATUS_CANNOT_DELETE STATUS_INVALID_COMPUTER_NAME STATUS_FILE_DELETED STATUS_FILE_RENAMED STATUS_DELETE_PENDING STATUS_PORT_CONNECTION_REFUSED STATUS_ENCRYPTION_FAILED STATUS_ENCRYPTION_FAILED STATUS_DECRYPTION_FAILED STATUS_NO_RECOVERY_POLICY STATUS_NO_EFS STATUS_WRONG_EFS STATUS_NO_USER_KEYS Видимо в вашем случае наиболее вероятно: Код (Text): // MessageId: STATUS_ALREADY_COMMITTED // // MessageText: // // {Already Committed} // The specified address range is already committed. // #define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021L)
XshStasX Можно побороть, передав корректные аргументы в апи. Иногда встречается ошибка типа чтения результата апи не по возвращаемому значению, а через статус в TEB. Возможно тут тоже.
XshStasX 1) Последний параметр в VirtualQuery(Ex) - это размер структуры inf, поэтому передавая 4096 ты пытаешься "дурачить" винду 2) VirtualQuery(Ex) возвращает инфу не об одной странице, а о целом регионе\группе страниц с одинаковыми параметрами State, Protect и Type. Поэтому тупо талдыча запросы на каждую 4К страницу, когда винда тебе уже выдала инфу на inf.RegionSize > 4К, ты ее просто "нервируешь" - вот она, бедная, в сердцах и посылает тебя подальше на три слова ERROR_ACCESS_DENIED