Cheat Engine
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Cheat Engine é um programa útil para encontrar onde valores importantes são salvos dentro da memória de um jogo em execução e alterá-los. Quando você o baixa e executa, você é apresentado a um tutorial de como usar a ferramenta. Se você quiser aprender a usar a ferramenta, é altamente recomendável completá-lo.
Esta ferramenta é muito útil para encontrar onde algum valor (geralmente um número) está armazenado na memória de um programa. Geralmente, números são armazenados em 4bytes, mas você também pode encontrá-los em formatos double ou float, ou pode querer procurar algo diferente de um número. Por essa razão, você precisa ter certeza de que seleciona o que deseja procurar:
Além disso, você pode indicar diferentes tipos de buscas:
Você também pode marcar a caixa para parar o jogo enquanto escaneia a memória:
Em Editar --> Configurações --> Teclas de atalho você pode definir diferentes teclas de atalho para diferentes propósitos, como parar o jogo (o que é bastante útil se em algum momento você quiser escanear a memória). Outras opções estão disponíveis:
Uma vez que você encontrou onde está o valor que você está procurando (mais sobre isso nos próximos passos), você pode modificá-lo clicando duas vezes nele e, em seguida, clicando duas vezes em seu valor:
E finalmente marcando a caixa para que a modificação seja feita na memória:
A mudança na memória será imediatamente aplicada (note que até o jogo não usar esse valor novamente, o valor não será atualizado no jogo).
Então, vamos supor que há um valor importante (como a vida do seu usuário) que você deseja melhorar, e você está procurando esse valor na memória.
Supondo que você está procurando o valor 100, você realiza uma varredura procurando por esse valor e encontra muitas coincidências:
Então, você faz algo para que o valor mude, e você para o jogo e realiza uma próxima varredura:
Cheat Engine irá procurar os valores que foram de 100 para o novo valor. Parabéns, você encontrou o endereço do valor que estava procurando, agora você pode modificá-lo. Se você ainda tiver vários valores, faça algo para modificar novamente esse valor e realize outra "próxima varredura" para filtrar os endereços.
No cenário em que você não sabe o valor, mas sabe como fazê-lo mudar (e até mesmo o valor da mudança), você pode procurar seu número.
Então, comece realizando uma varredura do tipo "Valor inicial desconhecido":
Em seguida, faça o valor mudar, indique como o valor mudou (no meu caso, foi diminuído em 1) e realize uma próxima varredura:
Você será apresentado a todos os valores que foram modificados da maneira selecionada:
Uma vez que você tenha encontrado seu valor, você pode modificá-lo.
Note que há uma grande quantidade de mudanças possíveis e você pode fazer esses passos quantas vezes quiser para filtrar os resultados:
Até agora, aprendemos como encontrar um endereço que armazena um valor, mas é altamente provável que em execuções diferentes do jogo, esse endereço esteja em lugares diferentes da memória. Então, vamos descobrir como sempre encontrar esse endereço.
Usando alguns dos truques mencionados, encontre o endereço onde seu jogo atual está armazenando o valor importante. Então (parando o jogo se desejar) clique com o botão direito no endereço encontrado e selecione "Descobrir o que acessa este endereço" ou "Descobrir o que escreve para este endereço":
A primeira opção é útil para saber quais partes do código estão usando esse endereço (o que é útil para mais coisas, como saber onde você pode modificar o código do jogo). A segunda opção é mais específica e será mais útil neste caso, pois estamos interessados em saber de onde esse valor está sendo escrito.
Uma vez que você tenha selecionado uma dessas opções, o debugger será anexado ao programa e uma nova janela vazia aparecerá. Agora, jogue o jogo e modifique esse valor (sem reiniciar o jogo). A janela deve ser preenchida com os endereços que estão modificando o valor:
Agora que você encontrou o endereço que está modificando o valor, você pode modificar o código à sua vontade (Cheat Engine permite que você o modifique rapidamente para NOPs):
Assim, você pode agora modificá-lo para que o código não afete seu número, ou sempre afete de uma maneira positiva.
Seguindo os passos anteriores, encontre onde o valor que você está interessado está. Então, usando "Descobrir o que escreve para este endereço", descubra qual endereço escreve esse valor e clique duas vezes nele para obter a visualização da desassemblagem:
Em seguida, realize uma nova varredura procurando o valor hex entre "[]" (o valor de $edx neste caso):
(Se vários aparecerem, você geralmente precisa do menor endereço) Agora, encontramos o ponteiro que estará modificando o valor que nos interessa.
Clique em "Adicionar Endereço Manualmente":
Agora, clique na caixa de seleção "Ponteiro" e adicione o endereço encontrado na caixa de texto (neste cenário, o endereço encontrado na imagem anterior foi "Tutorial-i386.exe"+2426B0):
(Note como o primeiro "Endereço" é automaticamente preenchido a partir do endereço do ponteiro que você introduz)
Clique em OK e um novo ponteiro será criado:
Agora, toda vez que você modificar esse valor, você estará modificando o valor importante, mesmo que o endereço de memória onde o valor está seja diferente.
A injeção de código é uma técnica onde você injeta um pedaço de código no processo alvo e, em seguida, redireciona a execução do código para passar pelo seu próprio código escrito (como te dar pontos em vez de subtraí-los).
Então, imagine que você encontrou o endereço que está subtraindo 1 da vida do seu jogador:
Clique em Mostrar desassemblador para obter o código desassemblado. Em seguida, clique CTRL+a para invocar a janela de Auto assemble e selecione Modelo --> Injeção de Código
Preencha o endereço da instrução que você deseja modificar (isso geralmente é preenchido automaticamente):
Um modelo será gerado:
Assim, insira seu novo código assembly na seção "newmem" e remova o código original da seção "originalcode" se você não quiser que ele seja executado**.** Neste exemplo, o código injetado adicionará 2 pontos em vez de subtrair 1:
Clique em executar e assim seu código deve ser injetado no programa, mudando o comportamento da funcionalidade!
Tutorial do Cheat Engine, complete-o para aprender como começar com o Cheat Engine
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)