Ir para conteúdo

POWERED BY:

Arquivado

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

MafnGamer

Editar endereço da memória

Recommended Posts

É possível mudar o valor de um endereço da memória usado por um programa com C++?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí cara então eu posso editar o valor tranquilamente? Por exemplo eu tenho aqui no meu pc o Crossfire que usa um endereço da memória para guardar o id da minha arma eu posso mudar o valor para um que represente o id de outra arma? Obs: isso não é gaming hack é só um exemplo prático. :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí cara então eu posso editar o valor tranquilamente? Por exemplo eu tenho aqui no meu pc o Crossfire que usa um endereço da memória para guardar o id da minha arma eu posso mudar o valor para um que represente o id de outra arma? Obs: isso não é gaming hack é só um exemplo prático. :grin:

 

Isso é possível, mas é um tanto complexo. Qualquer programa de computador é carregado na memoria, disso todos nós sabemos, as partes difíceis para se modificar uma variável de outro programa são: "Em qual endereço base esta o programa? Em qual endereço virtual está a variável? O sistema pode interpretar este acesso como uma falha de segmentação? Qual é o tamanho da variável? Um anti-vírus irá detectar meu programa como uma ameaça?"

 

Já hackeei alguns programas e vou dizer não é nem um pouco fácil, levei meses, uma vez construí uma biblioteca dinâmica do zero, fiz o seguinte substitui a biblioteca original do programa, a menor que podia ser a solução para mim, usei um debug e um monitor de API's no Windows (Como o API Monitor) para construir uma substituta.

 

Por exemplo:

Saida do Monitor de API's:

call        Time     Parameters
Sys_open    00:01    void*:0x??????, char*:"D:\\Data\\logo.pcx\0"

 

Solução:

//...
HMODULE hLib;
hLib = LoadLibrary("c:\\Data\\old_lib.dll");
//...
typedef void (*__Sys_open)(void*, char*);
//...
// O programa exigia que o seu CD estivesse presente no Drive de CD
// para ser executado, uma solução foi copiar a pasta "Data" para o
// disco local e fazer uma simples troca de letras na seguinte função:
void* Sys_open (void* a /* tipo indefinido provavelmente uma estrutura */, char* B)
{
   __Sys_open call;
   if((*b == 'd') || (*b == 'D'))
       *b = 'C';

   call = (__Sys_open)GetProcAddress(hLib, "Sys_open");
   return call(a, B);
}
//...

 

Não é a melhor nem pior solução, mas é eficaz.

Alguns programas tem suporte a plugins isso facilita e muito na hora de hackear.

 

***Atenção dependendo das circunstancias isto pode ser considerado crime. No meu caso possuía uma licença valida e a modificação foi para uma maior comodidade no uso do mesmo, apenas para mim. De forma alguma distribui o software hackeado.

 

Seja Hacker! Não Cracker.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.