Pular para o conteúdo

Ler algo de um programa Em Execução [MemoryHack]

Responder tópico
  • Denunciar
  • Indicar

1. Ler algo de um programa Em Execução [MemoryHack]

Enviado em 22/02/2018 - 00:30h

Preciso criar um gerador de log de um jogo

Por exemplo toda vez que o personagem chegar a "x" de hp salvar no log uma msg

porem o meu problema é que para fazer este gerador de log preciso acessar a memoria de um programa ja em execução, tentei pegar o addres da memoria com o "scanmem"(alternativa para cheatengine) mas nao cosigo acessar esse addres , todos os tutoriais que eu vi usam a biblioteca windowns.h porem queria desenvolver para linux,


[Não preciso alterar o valor mas apenas Ler, Alguém tem alguma ideia de como acessar uma variavel de um programa em execução NO LINUX?

Responder tópico

2. Re: Ler algo de um programa Em Execução [MemoryHack]

Enviado em 22/02/2018 - 01:49h

Você poderia fazer de um modo parecido como o scanmem faz.

Como o Linux usa mapeamento de memória aleatório por segurança, o scanmem trabalha procurando um valor específico, e depois refina a busca após tal valor ter sido alterado uma ou duas vezes. Se o jogo em questão não tiver também sua própria proteção contra cheats (alguns ficam trocando dados de lugar na memória para dificultar para os cheaters), enquanto o jogo se mantiver carregado, o dado deve ficar sempre no mesmo endereço, e você poderia ficar consultando esse dado de tempos em tempos.

3. Re: Ler algo de um programa Em Execução [MemoryHack]

Enviado em 22/02/2018 - 01:53h

paulo1205 escreveu:

Você poderia fazer de um modo parecido como o scanmem faz.

Como o Linux usa mapeamento de memória aleatório por segurança, o scanmem trabalha procurando um valor específico, e depois refinar a busca depois de tal valor ter sido alterado uma ou duas vezes. Se o jogo em questão não tiver também sua própria proteção contra cheats (alguns ficam trocando dados de lugar na memória para dificultar para os cheaters), enquanto o jogo se mantiver carregado, o dado deve ficar sempre no mesmo endereço, e você poderia ficar consultando esse dado de tempos em tempos.
Os tutoriais que eu vi usam a windows.h e informam primeiro o pid do programa para uma função depois o addres.... como eu faria essa parte do pid no linux sendo que não tenho a biblioteca windows.h


quando eu tento apenas acessar o addres, da falha de segmentação

4. Re: Ler algo de um programa Em Execução [MemoryHack]

Enviado em 22/02/2018 - 03:25h

No Linux, se você tiver permissões suficientes (talvez tenha de ser como root), você pode abrir /proc/pid/maps para ver as regiões de memória, e depois /proc/pid/mem para ter acesso ao conteúdo dessas regiões (não é um arquivo linear, você terá de usar lseek() para se deslocar para um endereço nas faixas obtidas do arquivo de mapeamento de memória).

Talvez funcione também chamar mmap() no arquivo com o conteúdo de memória, e usar os endereços das faixas mapeadas como offset do ponteiro que for alvo do mmap().

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder