Cheat Engine

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Cheat Engine est un programme utile pour trouver où sont enregistrées les valeurs importantes dans la mémoire d'un jeu en cours d'exécution et les modifier. Lorsque vous le téléchargez et l'exécutez, vous êtes présenté avec un tutoriel sur l'utilisation de l'outil. Il est fortement recommandé de le compléter si vous souhaitez apprendre à utiliser l'outil.

Que recherchez-vous ?

Cet outil est très utile pour trouver où une certaine valeur (généralement un nombre) est stockée dans la mémoire d'un programme. Généralement les nombres sont stockés sous forme de 4 octets, mais vous pourriez également les trouver sous forme de double ou float, ou vous pourriez vouloir chercher quelque chose de différent d'un nombre. Pour cette raison, vous devez être sûr de sélectionner ce que vous voulez chercher :

Vous pouvez également indiquer différents types de recherches :

Vous pouvez également cocher la case pour arrêter le jeu pendant la recherche dans la mémoire :

Raccourcis

Dans Édition --> Paramètres --> Raccourcis, vous pouvez définir différents raccourcis pour différentes fonctions comme arrêter le jeu (ce qui est très utile si à un moment donné vous voulez scanner la mémoire). D'autres options sont disponibles :

Modification de la valeur

Une fois que vous avez trouvé où se trouve la valeur que vous cherchez (plus d'informations à ce sujet dans les étapes suivantes), vous pouvez la modifier en double-cliquant dessus, puis en double-cliquant sur sa valeur :

Et enfin, cochez la case pour que la modification soit effectuée dans la mémoire :

Le changement dans la mémoire sera immédiatement appliqué (notez que tant que le jeu n'utilise pas à nouveau cette valeur, la valeur ne sera pas mise à jour dans le jeu).

Recherche de la valeur

Donc, supposons qu'il y ait une valeur importante (comme la vie de votre utilisateur) que vous voulez améliorer, et que vous cherchez cette valeur dans la mémoire)

À travers un changement connu

En supposant que vous cherchez la valeur 100, vous effectuez une analyse en recherchant cette valeur et vous trouvez beaucoup de correspondances :

Ensuite, faites quelque chose pour que la valeur change, et arrêtez le jeu et effectuez une analyse suivante :

Cheat Engine recherchera les valeurs qui sont passées de 100 à la nouvelle valeur. Félicitations, vous avez trouvé l'adresse de la valeur que vous cherchiez, vous pouvez maintenant la modifier. Si vous avez encore plusieurs valeurs, faites quelque chose pour modifier à nouveau cette valeur, et effectuez une autre "analyse suivante" pour filtrer les adresses.

Valeur inconnue, changement connu

Dans le scénario où vous ne connaissez pas la valeur mais vous savez comment la faire changer (et même la valeur du changement), vous pouvez rechercher votre nombre.

Commencez par effectuer une analyse de type "Valeur initiale inconnue" :

Ensuite, faites changer la valeur, indiquez comment la valeur a changé (dans mon cas, elle a été diminuée de 1) et effectuez une analyse suivante :

Vous verrez toutes les valeurs qui ont été modifiées de la manière sélectionnée :

Une fois que vous avez trouvé votre valeur, vous pouvez la modifier.

Notez qu'il y a beaucoup de changements possibles et vous pouvez effectuer ces étapes autant de fois que vous le souhaitez pour filtrer les résultats :

Adresse mémoire aléatoire - Trouver le code

Jusqu'à présent, nous avons appris à trouver une adresse stockant une valeur, mais il est très probable que dans différentes exécutions du jeu cette adresse se trouve à des endroits différents de la mémoire. Voyons comment trouver cette adresse de manière constante.

En utilisant quelques-uns des astuces mentionnées, trouvez l'adresse où votre jeu actuel stocke la valeur importante. Ensuite (en arrêtant le jeu si vous le souhaitez), faites un clic droit sur l'adresse trouvée et sélectionnez "Découvrir ce qui accède à cette adresse" ou "Découvrir ce qui écrit à cette adresse" :

La première option est utile pour savoir quelles parties du code utilisent cette adresse (ce qui est utile pour d'autres choses comme savoir où vous pouvez modifier le code du jeu). La deuxième option est plus spécifique, et sera plus utile dans ce cas car nous voulons savoir d'où cette valeur est écrite.

Une fois que vous avez sélectionné l'une de ces options, le débogueur sera attaché au programme et une nouvelle fenêtre vide apparaîtra. Maintenant, jouez au jeu et modifiez cette valeur (sans redémarrer le jeu). La fenêtre devrait se remplir avec les adresses qui modifient la valeur :

Maintenant que vous avez trouvé l'adresse qui modifie la valeur, vous pouvez modifier le code à votre guise (Cheat Engine vous permet de le modifier en NOPs très rapidement) :

Ainsi, vous pouvez maintenant le modifier pour que le code n'affecte pas votre nombre, ou affecte toujours de manière positive.

Adresse mémoire aléatoire - Trouver le pointeur

En suivant les étapes précédentes, trouvez où se trouve la valeur qui vous intéresse. Ensuite, en utilisant "Découvrir ce qui écrit à cette adresse", découvrez quelle adresse écrit cette valeur et double-cliquez dessus pour obtenir la vue de désassemblage :

Ensuite, effectuez une nouvelle analyse en recherchant la valeur hexadécimale entre "[]" (la valeur de $edx dans ce cas) :

(Si plusieurs apparaissent, vous avez généralement besoin de celui avec l'adresse la plus petite) Maintenant, nous avons trouvé le pointeur qui modifiera la valeur qui nous intéresse.

Cliquez sur "Ajouter une adresse manuellement" :

Maintenant, cochez la case "Pointeur" et ajoutez l'adresse trouvée dans la zone de texte (dans ce scénario, l'adresse trouvée dans l'image précédente était "Tutorial-i386.exe"+2426B0) :

(Remarquez comment la première "Adresse" est automatiquement renseignée à partir de l'adresse du pointeur que vous introduisez)

Cliquez sur OK et un nouveau pointeur sera créé :

Maintenant, chaque fois que vous modifiez cette valeur, vous modifiez la valeur importante même si l'adresse mémoire où se trouve la valeur est différente.

Injection de code

L'injection de code est une technique où vous injectez un morceau de code dans le processus cible, puis redirigez l'exécution du code pour passer par votre propre code écrit (comme vous donnant des points au lieu de les retirer).

Donc, imaginez que vous avez trouvé l'adresse qui soustrait 1 à la vie de votre joueur :

Cliquez sur Afficher le désassembleur pour obtenir le code désassemblé. Ensuite, cliquez sur CTRL+a pour ouvrir la fenêtre d'auto-assemblage et sélectionnez Modèle --> Injection de code

Remplissez l'adresse de l'instruction que vous souhaitez modifier (celle-ci est généralement pré-remplie) :

Un modèle sera généré :

Insérez votre nouveau code d'assemblage dans la section "newmem" et supprimez le code original de la section "originalcode si vous ne voulez pas qu'il soit exécuté**.** Dans cet exemple, le code injecté ajoutera 2 points au lieu de soustraire 1 :

Cliquez sur exécuter et ainsi de suite, votre code devrait être injecté dans le programme changeant le comportement de la fonctionnalité !

Références

  • Tutoriel Cheat Engine, complétez-le pour apprendre à démarrer avec Cheat Engine

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Dernière mise à jour