Procurando por cada ocorrência de uma sequência na memória de outro processo

Estou tentando recuperar todas as ocorrências de uma determinada string, digamos "ExampleString". O que eu tenho atualmente encontrará a primeira ocorrência da string na memória de um processo, mas não encontrará as seqüências subsequentes. Eu tentei usar umvector para armazenar todos os resultados, mas ele encontra apenas um resultado ainda.

Abaixo está a função que estou usando para obter o vetor dos locais da memória. Novamente, ele funciona para o primeiro local.

std::vector<char*> GetAddressOfData(DWORD pid, const char *data, size_t len) {
    HANDLE process = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, FALSE, pid);

    std::vector<char*> locations;
    int cur = 0;
    if(process){
        SYSTEM_INFO si;
        GetSystemInfo(&si);

        MEMORY_BASIC_INFORMATION info;
        std::vector<char> chunk;
        char* p = 0;
        while(p < si.lpMaximumApplicationAddress){
            if(VirtualQueryEx(process, p, &info, sizeof(info)) == sizeof(info)){
                p = (char*)info.BaseAddress;
                chunk.resize(info.RegionSize);
                SIZE_T bytesRead;
                if(ReadProcessMemory(process, p, &chunk[0], info.RegionSize, &bytesRead)){
                    for(size_t i = 0; i < (bytesRead - len); ++i){
                        if(memcmp(data, &chunk[i], len) == 0) {
                            cur++;
                            locations.resize(cur);
                            locations[cur-1] = (char*)p + i;
                            std::cout << "Found*: " << (void*)locations[cur-1] << "\n";
                        }
                    }
                }
                p += info.RegionSize;
            }
        }
    }
    return locations;
}

questionAnswers(1)

yourAnswerToTheQuestion