Ir ao conteúdo
  • Cadastre-se

Como monitorar variaveis de um programa externo


AlyssonMaster

Posts recomendados

Faala galera!

To precisando saber como monitorar as variáveis de um programa em execução.

Por exemplo:

O programa programa.exe está com uma variável de nome abcd de valor 132, aí o meu programa "entra" dentro desse programa.exe e pega esse valor de 132 para usar em uma variável própria.

Se alguem puder me ajudar ficarei muito grato!

Até!

Link para o comentário
Compartilhar em outros sites

Olha, rapaz, isso é Tipo Super complicado, senão impossivel. É impossivel interceptar um programa em execução, mas deve ser possivel usar uma variavel ponteiro pra acessar o endereço do arquivo executavel e buscar com algum algoritmo a posição na memoria dessa variavel.

Pois é parece meio complicado mesmo...

Eu andei pesquisando e descobri um método de injeção de uma DLL no programa (encapsulamento)

para ficar monitorando suas ações, mas, ainda não sei ao certo como fazer isso.

Também achei uma solução usando Assembly (baixo nível), mas aí parece que eu multipliquei a dificuldade em 100x.

Sabe de mais alguma forma, ou de como usar estes dois itens?

Obrigado!

Link para o comentário
Compartilhar em outros sites

Uma opção seria você usar pipes e filtros (tem explicando na Wikipedia o que significa).

Outra seria utilizar variáveis de ambiente, que pode ser feito através da função getenv.

Outro modo, mais complicado, seria localizar o ID do processo desejado e depois localizar a posição na memória da variável que você deseja alterar, modificando-a como você desejar.

Um quarto modo de fazer isso seria armazenar esses dados num arquivo persistente, como banco de dados ou arquivo de texto.

Ainda, você poderia fazer seu programa ser uma thread do processo monitorado, podendo acessar suas variáveis normalmente. Você poderia declará-la como extern para acessá-la de outro arquivo.

Enfim, existem diversos modos de se fazer isso, basta você ver qual se adequa mais às suas necessidades.

Link para o comentário
Compartilhar em outros sites

Uma opção seria você usar pipes e filtros (tem explicando na Wikipedia o que significa).

Outra seria utilizar variáveis de ambiente, que pode ser feito através da função getenv.

Outro modo, mais complicado, seria localizar o ID do processo desejado e depois localizar a posição na memória da variável que você deseja alterar, modificando-a como você desejar.

Um quarto modo de fazer isso seria armazenar esses dados num arquivo persistente, como banco de dados ou arquivo de texto.

Ainda, você poderia fazer seu programa ser uma thread do processo monitorado, podendo acessar suas variáveis normalmente. Você poderia declará-la como extern para acessá-la de outro arquivo.

Enfim, existem diversos modos de se fazer isso, basta você ver qual se adequa mais às suas necessidades.

Pois é... eu tava tentando fazer isso em VB.NET mas parece que só tem como pelo C++ mesmo. Sobre o arquivo persistente, acho que não daria certo já que eu não tenho o código fonte do programa (e nem pretendo ter), mas vou testar os outros procedimentos e posto o resultado aqui.

:)

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!