TEMPO DE LEITURA: 2 MINUTOS
No artigo passado falei sobre ponteiros e mostrei como acessar a memória local(do processo atual) com os mesmos. Mas isso não é o suficiente para acessar a memória de outros processos, pois como mencionado anteriormente o sistema operacional não permite, não de forma direta(como demonstrado no artigo anterior).
Neste artigo lhe apresentarei a função da API do Windows chamada ReadProcessMemory.
Leitura e tratamento de memória é uma poderosa ferramenta. Muitos gostariam de saber, mas poucos sabem como fazê-lo e, principalmente, tratar o resultado.
Com esta API torna-se capaz a leitura de dados da memória de um processo específico. Exatamente, poderemos ler e tratar a memória de outro processo.
ReadProcessMemory é um problema para muitos programadores inexperientes que almejam grandes criações, em sua maioria Memory Scanners(Cheat Engine, por exemplo).
Segundo o MSDN, as especificações da ReadProcessMemory são:
Sendo:
OBS: hProcess deve ter acesso do tipo PROCESS_VM_READ. (Para isso, utiliza-se a API OpenProcess).
ReadProcessMemory lê dados (bytes) de uma área da memória em um processo, se esta área estiver acessível (Com uma das seguintes permissões: PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY).
Se a função tiver êxito, o retorno é diferente de zero. Se falhar, o retorno é zero.
Funciona da seguinte forma:
Aprenda também assistindo o vídeo que preparei especialmente para vocês do blog que desejam criar seus hacks em 4 Semanas
[VIDEO] Ler memoria de outro processo – ReadProcessMemory Aula 04 Como Fazer Hacks Para Qualquer Jogo
No artigo passado falei sobre ponteiros e mostrei como acessar a memória local(do processo atual) com os mesmos. Mas isso não é o suficiente para acessar a memória de outros processos, pois como mencionado anteriormente o sistema operacional não permite, não de forma direta(como demonstrado no artigo anterior).
Neste artigo lhe apresentarei a função da API do Windows chamada ReadProcessMemory.
Leitura e tratamento de memória é uma poderosa ferramenta. Muitos gostariam de saber, mas poucos sabem como fazê-lo e, principalmente, tratar o resultado.
Com esta API torna-se capaz a leitura de dados da memória de um processo específico. Exatamente, poderemos ler e tratar a memória de outro processo.
ReadProcessMemory é um problema para muitos programadores inexperientes que almejam grandes criações, em sua maioria Memory Scanners(Cheat Engine, por exemplo).
Segundo o MSDN, as especificações da ReadProcessMemory são:
1
2
3
4
5
6
7
| BOOL WINAPI ReadProcessMemory( __in HANDLE hProcess, __in LPCVOID lpBaseAddress, __out LPVOID lpBuffer, __in SIZE_T nSize, __out SIZE_T *lpNumberOfBytesRead ); |
Sendo:
- hProcess – Handle do processo alvo
- lpBaseAddress – Ponteiro do Address alvo
- lpBuffer – Pointeiro do buffer alocado no processo atual para receber os dados lidos
- nSize – Tamanho, em bytes, da memória para ser lida
- lpNumberOfBytesRead – Pointeiro para uma variável DWORD que retornará a quantidade de bytes lidos
OBS: hProcess deve ter acesso do tipo PROCESS_VM_READ. (Para isso, utiliza-se a API OpenProcess).
ReadProcessMemory lê dados (bytes) de uma área da memória em um processo, se esta área estiver acessível (Com uma das seguintes permissões: PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY).
Se a função tiver êxito, o retorno é diferente de zero. Se falhar, o retorno é zero.
Funciona da seguinte forma:
- Após a leitura, faz-se o tratamento de dados conforme as necessidades do usuário.
Nesta parte está o problema da maioria. Os tipos Byte, Word, DWORD, QWORD, ANSI String e UNICODE String podem ser tratados diretamente. Porém, quando se trata tudo como um data stream, deve-se ter em mente que o processador armazena os bytes na ordem inversa.
Vale observar que mesmo com retorno zero, lpNumberOfBytesRead pode ter retornado diferente de zero e os dados podem, e devem, ser tratados.
Para facilitar o aprendizado, irei disponibilizar abaixo uma Source Code em Pascal feita no Delphi7 pelo Yuh L. a qual exemplifica muito bem a leitura e tratamento de dados(de todos os tipos citados anteriormente) com ReadProcessMemory.
Faça o download do projeto de exemplo:
[VIDEO] Ler memoria de outro processo – ReadProcessMemory Aula 04 Como Fazer Hacks Para Qualquer Jogo