9.4 KiB
Cheat Engine
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para HackTricks e HackTricks Cloud github repos.
Cheat Engine é um programa útil para encontrar onde valores importantes são salvos na memória de um jogo em execução e alterá-los.
Quando você o baixa e o executa, você é apresentado a um tutorial de como usar a ferramenta. Se você deseja aprender a usar a ferramenta, é altamente recomendável completá-lo.
O que você está procurando?
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 formato de 4 bytes, mas você também pode encontrá-los em formatos double ou float, ou talvez queira procurar por algo diferente de um número. Por esse motivo, você precisa ter certeza de que selecionou o que deseja procurar:
Também é possível indicar diferentes tipos de buscas:
Você também pode marcar a caixa para parar o jogo enquanto escaneia a memória:
Atalhos
Em Edit --> Settings --> Hotkeys você pode definir diferentes atalhos 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:
Modificando o valor
Uma vez que você encontrou onde está o valor que 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 alteração na memória será imediatamente aplicada (observe que até que o jogo não use esse valor novamente, o valor não será atualizado no jogo).
Procurando o valor
Então, vamos supor que há um valor importante (como a vida do seu usuário) que você deseja melhorar, e você está procurando por esse valor na memória)
Através de uma mudança conhecida
Supondo que você está procurando o valor 100, você realiza uma varredura procurando por esse valor e encontra muitas coincidências:
Em seguida, faça algo para que o valor mude, e pare o jogo e realize uma próxima varredura:
O Cheat Engine procurará pelos valores que passaram 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.
Valor Desconhecido, mudança conhecida
No cenário em que você não conhece o valor mas sabe como fazê-lo mudar (e até o valor da mudança) você pode procurar pelo seu número.
Portanto, comece realizando uma varredura do tipo "Valor inicial desconhecido":
Em seguida, faça a mudança do valor, indique como o valor mudou (no meu caso foi diminuído em 1) e realize uma próxima varredura:
Você verá todos os valores que foram modificados da maneira selecionada:
Depois de encontrar seu valor, você pode modificá-lo.
Observe que há muitas mudanças possíveis e você pode fazer esses passos quantas vezes quiser para filtrar os resultados:
Endereço de Memória Aleatório - Encontrando o código
Até agora aprendemos como encontrar um endereço que armazena um valor, mas é altamente provável que em diferentes execuções 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. Em seguida (parando o jogo se desejar) faça um clique direito no endereço encontrado e selecione "Descobrir o que acessa este endereço" ou "Descobrir o que escreve neste endereço":
A primeira opção é útil para saber quais partes do código estão usando este 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 este valor está sendo escrito.
Depois de selecionar uma dessas opções, o depurador 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 ao seu gosto (o Cheat Engine permite que você o modifique para NOPs rapidamente):
Portanto, agora você pode modificá-lo para que o código não afete seu número, ou sempre afete de forma positiva.
Endereço de Memória Aleatório - Encontrando o ponteiro
Seguindo os passos anteriores, encontre onde está o valor de seu interesse. Em seguida, usando "Descobrir o que escreve neste endereço" descubra qual endereço escreve esse valor e clique duas vezes nele para obter a visualização da desmontagem:
Depois, realize uma nova pesquisa procurando pelo valor hexadecimal entre "[]" (o valor de $edx neste caso):
(Se vários aparecerem, geralmente você precisa escolher o menor endereço)
Agora, encontramos o ponteiro que estará modificando o valor de nosso interesse.
Clique em "Adicionar Endereço Manualmente":
Agora, marque a 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):
(Observe como o primeiro "Endereço" é preenchido automaticamente com o endereço do ponteiro que você inseriu)
Clique em OK e um novo ponteiro será criado:
Agora, toda vez que você modificar esse valor, estará modificando o valor importante mesmo que o endereço de memória onde o valor está seja diferente.
Injeção de Código
A injeção de código é uma técnica onde você injeta um trecho 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 dar pontos em vez de subtrair).
Então, imagine que você encontrou o endereço que está subtraindo 1 da vida do seu jogador:
Clique em Mostrar desmontador para obter o código desmontado.
Em seguida, clique em CTRL+a para invocar a janela de Auto montagem e selecione Modelo --> Injeção de Código
Preencha o endereço da instrução que deseja modificar (isso geralmente é preenchido automaticamente):
Um modelo será gerado:
Então, insira seu novo código de montagem na seção "newmem" e remova o código original de "originalcode" se 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 por diante, e seu código deve ser injetado no programa alterando o comportamento da funcionalidade!
Referências
- Tutorial do Cheat Engine, complete-o para aprender como começar com o Cheat Engine