Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
É possível mudar o valor de um endereço da memória usado por um programa com C++?
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:
>
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"); __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.
Do ponto de vista de C, o que este tipo de acesso gera é comportamento indefinido.
Se isto "funciona" ou não depende de fatores completamente externos à linguagem.
Sim. Há diversos operadores destrutivos que podem ser usados para mudar o valor de uma região de memória associada a um nome. Exemplos:
=
++
--
+=
-=