Recherche d'adresse (technique avancée)Vous verrez rapidement que le tutoriel n°1 de la recherche de trainer ne suffira que dans 50% des cas. En effet, dans bon nombre de cas, vous ne pourrez pas chercher à partir de valeurs précises. Suivez bien ce tutoriel car 80% des questions que l'on me pose, ont leur réponse dans cette page.
Prenons, l'exemple du godmod dans projet IGI. Dans tout autre FPS, nous aurions nopper la valeur décrémentant la valeur de la vie qui est 100 par défaut, mais dans Projet IGI2 (et d'autres jeux), la vie est représentée par une image. Note: parfois, vous verrez afficher le chiffre 100 mais ce ne sera quand meme qu'une image.
Bon, dans la pratique, comment fait-on pour trouver la vie si l'on n'a aucune idée de sa valeur?
Il existe plusieurs méthodes à faire dans l'ordre:
Méthode 1: On suppose que la vie max est 100, et donc on cherche les valeurs égales à 100, puis on continue la recherche en cherchant les valeurs qui ont décrémenté (has discreased). En supposant qu'a chaque fois, vous retourniez au jeu pour perdre un peu de vie. Cette méthode n'a marché qu'une seule fois pour moi.Méthode 2: On suppose que la vie max pourrait être n'importe quelle valeur. Dans ce cas, nous allons faire une recherche aveugle (terme copyright moi :D). Tout d'abord, vous choisissez le processus de façon normal puis vous cliquez sur la loupe. Et là, au lieu de choisir exact value, vous choisissez Unknown Value, puis vous cliquez sur OK.
Cela va lister TOUTES les adresses mémoires utilisées par le jeu.
Leur nombre est grand et cette recherche est rapide: la suivante le sera beaucoup, beaucoup moins. :D
Retournez donc au jeu, puis perdez un peu de vie. Retournez ensuite à TS et cliquez sur la deuxième loupe. Cette fois, choisissez "has decreased" ("a diminué" en français).
Cliquez sur OK. C'est maintenant la plus longue des recherches. Car elle doit comparer chaque ancienne valeur à celle présente en temps réel. Au compteur plus haut, on voit qu'il va nous falloir comparer plus de 500 000 valeurs. Ce qui est très peu. Un Need For Speed Underground en avait plus de 250 000 000. Une fois la recherche terminée, vous devriez avoir un grand nombre de valeurs en moins.
Retournez alors au jeu et jouez un peu ou ne bougez pas, mais sans perdre de vie. Cela pendant deux trois secondes, cela suffit, puis faites un tour sur vous même pour bouger les textures. Mettez le jeu en pause et retournez à TS. Refaites une recherche comparative (2eme loupe) et cette fois, vous choisissez: "has not changed". Pourquoi cela? Tout simplement parce que cela va permettre de degager un grand nombre d'adresses que l'on sait erronées:
- les chronometres de missions ==> valeur qui monte toujours
- les textures ==> valeurs qui bougent
- balles ==> décremente ou monteIl reste donc "peu" d'adresses qui n'ont pas changées, dont notre vie si bien sûr, vous n'avez pas perdu de vie. Vous devriez avoir beaucoup moins d'adresses qu'au départ et les recherches se font de plus en plus rapides, néanmoins à cette étape du processus il peut vous rester encore plusieurs centaines d'adresses. Sachez donc que vous allez devoir refaire cela un bon nombre de fois.
Avec de la chance (car ca ne marche pas toujours) vous tomberez au final sur l'adresse de votre vie. Je dirai que cette technique marche dans 70% des cas car je suis souvent tombé sur ... 0 adresses au final. Mais bon, restons optimistes et il fort possible de vous trouviez l'adresse de la vie. Je vais aller prendre l'exemple de Star Wars Academy. J'ai utilisé cette technique pour retrouver la vie et j'ai trouvé une adresse au bout: qui s'est révelée être la bonne. Il ne me restait plus qu'à nopper la fonction qui décrémente l'énergie. Un coup de autohack et hop, me vlà invincible. cool :DMais à ce moment là, vlà qu'un couillon de chubaka me tire dessus. Meme pas mal :p je cours vers lui et hop un coup de sabre laser dans sa tete poilue. tchac.... ???... tachac tchac ... ??? merde, il est invincible. Et oui, dans bon nombre de jeu et étant moi même programmeur, je le comprend parfaitement, il n'existe qu'une seule fonction pour enlever la vie à tous les éléments vivants du jeu. Donc impossible d'être invincible sans que tout le monde soit invincible. Et bien si! Il existe une 3ème méthode que m'a dicté un vieux sage (note: le même sage qui parle du doigt et du cul qui gratte).
Méthode 3: Cette méthode consiste à utiliser les cheats. Et voui. Pourquoi faire un trainer si on utilise des cheats? Deux raisons:
1 certains jeux n'ont pas de cheat et le trainer est obligatoire
2 nous allons utiliser certains cheats pour faire un trainer évolué.
La seule éxigence ici, est que pour le jeu donné, il existe un cheat qui donne le godmod, sinon, cela ne sert à rien de lire la suite (ou si, mais pour votre culture générale).Les cheats marchent de deux et uniques façons:
- le cheat appelle une fonction (qui ajoute 1000 d'or, qui change de niveau, etc)
- le cheat qui modifie une variable (godmod)Ici, nous montrerons l'exemple du godmod puisque c'est ce que nous cherchons. JE N'AI JAMAIS testé cette méthode sur Projet IGI2. Ici, ce qui suivra est théorique mais marche dans certains cas. Le godmod marche souvent grâce à une variable booléenne. Sisi, ce mot existe!! Une variable booléenne est une variable à deux états Vrai et Faux OU 1 et 0. Comme un bouton de lumière On et Off. Voici le shéma d'une fonction pour enlever la vie:
Si ( godmod=desactivé)
vie= vie - energie perdue
en code, ca peut ressembler à:
If( godmod== false)
vie-=iEnergiePerdue;
Même pour des non programmeurs, je pense que vous aurez compris que pour ne pas appeler la fonction qui diminue la vie, il suffit d'activer le godmod, donc de le mettre à 'true" au lieu de "false". Voilà donc ce qu'il nous faut faire, c'est trouvé cette valeur "false" pour la remplacer par "true" sauf que des valeurs à 0, il y en a des milliers et de milliers, c'est encore plus dur que la méthode précédente et le taux de réussite est plus faible encore mais il permet d'éviter d'avoir les ennemis également invincibles.
Bien, Let's go! Chargez le processus du jeu. Puis débutez une nouvelle recherche mais en cherchant les valeurs de 1 byte. 1 byte et non 4 car les programmeurs de jeux s'ils ne sont pas bêtes crées des variables de taille mémoire optimisée. Rapportez-vous aux termes pour savoir la signification des bytes. Faites donc une recherche unknow value sur les adresses contenant des variables de 1octet (car byte=octet en anglais. Ne pas confindre avec "bit"). Retournez ensuite au jeu et tapez le code qui vous met en godmod. Retournez alors à TS et cherchez les valeurs qui ont changées. Puis retournez au jeu et enlevez le godmod. Puis retournez au jeu, etc. Vous pourrez éventuellement trouver une adresse finale. Celle-ci nous servira dans un chapitre à venir : l'injection de code.