none
ReadProcessMemory RRS feed

  • Pergunta

  • Ola pessoal, estou tentando usar a função ReadProcessMemory em um programa que eu fiz: pego o HWND pelo nome da janela, depois pego o ID e depois pego o HANDLE, até aqui tudo ok, depois eu uso a ReadProcessMemory, mas ela sempre retorna 0 e não consigo ler o endereço, na documentação da função diz que ela só retorna 0 caso o endereço passado esteja em uma área do processo que esteja inacessivel, mas acontece que quando uso o debugger no programa eu consigo ler o endereço normalmente, ele está totalmente acessível no HEAP.

    #include <iostream>
    #include <sstream>
    #include <windows.h>
    
    using namespace std;
    
    DWORD address = 0x007E4F9C;
    char item[155];
    DWORD pid;
    HWND window;
    
    void fatal(string erro)
    {
        cout<<erro<<endl;
        system("pause");
        exit(0);
    }
    
    int main()
    {
        HANDLE handle;
    
        if(!(window=FindWindow(NULL, "Teste")))
            fatal("Programa não foi encontrado.");
    
        GetWindowThreadProcessId(window, &pid);
    
        if(!(handle = OpenProcess(PROCESS_VM_READ, FALSE, pid)))
            fatal("Falha ao abrir processo.");
    
        if(!ReadProcessMemory(window, (void*)address, &item, 155, 0))
        {
            stringstream stream;
            stream <<"Falha ao ler endereço: " << address <<".";
            fatal(stream.str());
        }
    
        cout<<"Lidos de "<<address<<"-> "<<item<<endl;
    
        return 0;
    }

    agradeço a ajuda desde já.





    • Editado Shoxsz domingo, 1 de dezembro de 2013 12:53
    domingo, 1 de dezembro de 2013 12:37

Todas as Respostas