Les bases du memory hacking (PC)

Statut
N'est pas ouverte pour d'autres réponses.

-Uzi-

Coder
Premium
Inscription
31 Octobre 2012
Messages
180
Réactions
79
Points
2 563
Salut tout le monde !

Bon, pour feter mon arrivée ici j'ai decidé de poster un tuto que j'avais fais y'a quelques semaines sur un autre forum, c'est basique mais ca vous introduira au moins un peu sur le fonctionnement de la memoire :)
Hesitez pas a me demandez si vous avez pas compris quelque chose :)

Bonjour a tous !

Je vous ecrit aujourd'hui un petit tutoriel visant a vous expliquer un peu les bases du Game Hacking, sujet que j’étudie en ce moment même.

Nous allons voir dans ce premier cours comment fonctionne un jeux, et donc comment le "hacker".

Requis :

- Un editeur de memoire (Cheat Engine dans mon cas)
- Un cerveau (Plus ou moins performant)

1) Une histoire d'adresse

Premièrement laissez moi vous poser cette question : Savez vous comment fonctionne un jeu vidéo ?

Un jeu vidéo, c'est simplement plein de petit bout de code mis bout a bout, pour former un tout intelligent, comme tout autre programme.
Nous allons donc voir ici comment "influer" sur ce code pour lui faire faire ce que l'on veut (Et oui, voila, on fais deja du hacking, puisqu'on detourne le jeu de son but inital).

Tout d'abord, avant de sauter dans le vif du sujet, je voudrais que vous compreniez bien comment le jeu fonctionne, comment les données sont stockées dans la memoire, en effet, c'est la base de tout hacking ,savoir comment quelque chose marche afin d'en faire ce que l'on veut.

C'est un tutoriel pour debutant alors je n'irai pas trop loin dans les notions, nous allons simplement parler des "adresses".

Imaginons un jeu de tir classique comme Call of Duty, vous avez plusieurs variables qui entrent en jeu , les munitions, les points de vie, le nombre de degat de votre armes,etc...
Maintenant, il faut savoir que CHAQUE variable est stocké dans la mémoire de votre ordinateur dans une "adresse" , par exemple, sur un jeu, l'adresse qui correspond aux munitions va etre stocké a l'adresse 0x00000001 (Cette adresse est la a titre d'exemple, en effet, l'adresse est souvent perdu au milieu de la mémoire dans un nombre compliqué).

Donc, vous devinez la suite ? On va pouvoir modifier la variable stocké a cette adresse et donc changé le nombre de munition que l'on aura en jeu.
Cela vous parait confus ? vous verrez qu’après la partie pratique vous comprendrez bien mieux.



Commençons de suite, ouvrez Cheat Engine puis votre jeu (Dans mon cas j'utilise AssaultCube, un FPS gratuit )


Voila ce que vous devriez avoir :

1349623143-screen-1.png



Commençons par ouvrir notre jeu dans Cheat Engine, pour cela, appuyez sur le petit icône d'ordinateur de cheat engine et choisissez votre processus dans la liste, puis double cliquez dessus pour l'ouvrir)

1349623406-screen-2.png



Voila, votre jeu est ouvert dans l’éditeur de mémoire, maintenant, on va chercher l'adresse correspondant au nombre de munition dans la mémoire.
Pour ce faire, on va utilisez les données mises a disposition en jeu, on peut voir que nous avons 20 munitions dans notre arme principale, on va donc partir de la.
J'entre la valeur exacte "20" et j'appuie sur "first scan"

1349623589-screen-2.png


Vous pouvez voir que l'on a des centaines d'adresse contenant la valeur "20" qui s'affichent, ça fais un peu beaucoup, on va donc réduire cette valeur en effectuant un "subscan" , pour cela, on modifie la variable en jeu (en tirant une balle par exemple ,on aura plus que 19 balle) puis on entre la nouvelle valeur et on clique sur "next scan"

1349623777-screen-3.png


Parfait ! nous avons de la chance, il ne reste plus que 2 valeur, on va donc trouver celle des deux qui s'occupe des munitions (generalement, c'est la premiere).
Pour cela, on double clique une adresse pour la faire passer dans la "table" , on va modifier la valeur afin de voir si c'est la bonne adresse :

Avant modification :
1349623918-screen-4.png


Double cliquez sur "value" et changez la valeur a celle qui vous convient le mieux.

Après modification :
1349623945-screen-5.png



VICTOIRE ! La valeur a été changée, maintenant vous possédez 100 munitions en jeu au lieu de 20.
Facile non ? et le plus dingue c'est que ça s'applique pour tous, vous pouvez donc faire de même pour trouvez le nombre de point de vie ou de point d'armure, ou même trouvez la vitesse du joueur (C'est plus compliqué, je l'expliquerai dans une vidéo sur le Reversing).

Voila, j'ai essayé de varier des tutoriels qu'on trouve habituellement sur Cheat Engine pour vous expliquez comment sont stocké les variables dans la mémoire.


Je ferai bientôt un tutorial plus avancé ou on parlera de trainer , puis d'injection de DLL (et ou cette fois, on passera au code pur), je vous expliquerai aussi comment trouver les pointeurs multi levels des adresses dynamique.
 

Jhon-duff_56

Herbalist.
Ancien staff
Inscription
14 Mars 2011
Messages
7 883
Réactions
2 155
Points
24 858
-Eclipse- Exelent tutoriel ! Merci ;) N'hésite pas a en poster d'autres :ok:

Par contre les balles sont réel après ou pas ? Car CheatEngine sa modifie juste la valeur visuel non ?
 

-Uzi-

Coder
Premium
Inscription
31 Octobre 2012
Messages
180
Réactions
79
Points
2 563
-Eclipse- Exelent tutoriel ! Merci ;) N'hésite pas a en poster d'autres :ok:

Par contre les balles sont réel après ou pas ? Car CheatEngine sa modifie juste la valeur visuel non ?

Enfait ca depend du jeu, parfois il arrive qu'on modifie seulement une valeur visuel (c'est le cas dans la plupart des jeux multijoueurs genre COD) ou les données sont stocké coté serveur.
Le memory editing c'est tout de meme assez limité mais on peut faire des trucs sympa genre des speedhack sur des jeu non protégés :)
 

Wiligan

Membre
Inscription
31 Octobre 2011
Messages
1 157
Réactions
161
Points
7 403
Perso,je cheat dans certains jeux flash,genre les TD et c'est bien réél,aprés certains jeux ça ne marche pas,et c'est assez compliqué d'utiliser CE avec chrome ...

Je veux bien sinon ton tuto sur la création d'un trainer :)
 

-Uzi-

Coder
Premium
Inscription
31 Octobre 2012
Messages
180
Réactions
79
Points
2 563
Perso,je cheat dans certains jeux flash,genre les TD et c'est bien réél,aprés certains jeux ça ne marche pas,et c'est assez compliqué d'utiliser CE avec chrome ...

Je veux bien sinon ton tuto sur la création d'un trainer :)

Je ferai ca quand j'aurai le temps, mais en ce moment c'est chaud avec les vacances,les sorties, etc...
Et puis il faut aussi prendre en compte le fait que la plupart des gens ont pas d'experience avec la programmation, donc va falloir tout expliquer,etc
 

Sulfus

Videomaker
Ancien staff
Inscription
10 Janvier 2012
Messages
5 055
Réactions
2 330
Points
15 116
Merci de citer les sources :)
 

Sulfus

Videomaker
Ancien staff
Inscription
10 Janvier 2012
Messages
5 055
Réactions
2 330
Points
15 116
Il a dit que c'est lui meme qui l'a poster sur un autre forum donc ses sources... ben c'est lui ^^

Sinon connu mais merci :p

Ben justement , pour prouver que c'est bien lui il met le lien , sinon c'est de la violation de droits d'auteurs.
 

UnReal'

Membre
Inscription
27 Septembre 2012
Messages
814
Réactions
172
Points
4 056
Enfait ca depend du jeu, parfois il arrive qu'on modifie seulement une valeur visuel (c'est le cas dans la plupart des jeux multijoueurs genre COD) ou les données sont stocké coté serveur.
Le memory editing c'est tout de meme assez limité mais on peut faire des trucs sympa genre des speedhack sur des jeu non protégés :)
Sur Minecraft par exemple, on pourra modifier le nombre de blocs qu'on a, ce sera seulement visuel, par contre, pour la vie, la faim, et la respiration, ca marche niquel ! :)

Faut juste eviter sur serv' car tu te fais chopper direct ;)
 

-Uzi-

Coder
Premium
Inscription
31 Octobre 2012
Messages
180
Réactions
79
Points
2 563
Sur Minecraft par exemple, on pourra modifier le nombre de blocs qu'on a, ce sera seulement visuel, par contre, pour la vie, la faim, et la respiration, ca marche niquel ! :)

Faut juste eviter sur serv' car tu te fais chopper direct ;)

Jamais esseyer sur Minecraft mais en effet, ca doit marcher très bien, y'a meme moyen de se faire un petit speedhack je pense, mais c'est plus delicat de trouver l'adresse de la variable vitesse, faut deja localiser le joueur, puis faut passer un coup de ollydebugger :)

Sulfus : etant donné que c'est mon tuto, je vois pas en quoi l'auteur peut se plaindre, sauf si je decide de me trainer moi meme au tribunal :hap:
 

dampenfr31

Membre
Inscription
10 Décembre 2011
Messages
85
Réactions
27
Points
8 891
Bien joué !
Après on peut créer une librairie (.dll) a injecter directement dans le jeu pour modifier les données avec des raccourcis.
Exemple : 1- Vie infinie; 2- Aller plus vite ECT ...
Plus d'information sur le Reverse Engineering (en anglais) :
 

-Uzi-

Coder
Premium
Inscription
31 Octobre 2012
Messages
180
Réactions
79
Points
2 563
Bien joué !
Après on peut créer une librairie (.dll) a injecter directement dans le jeu pour modifier les données avec des raccourcis.
Exemple : 1- Vie infinie; 2- Aller plus vite ECT ...
Plus d'information sur le Reverse Engineering (en anglais) :


En effet, je ferai surement un tuto sur l'injection Dll, mais en general la plupart des jeux mettent les données de vie et munitions coté serveur :)
 

StuzR

Membre
Inscription
26 Juin 2012
Messages
43
Réactions
6
Points
18
Sympa ton tuto assez bien expliquez pour de l'ecrit je trouve ;) continue !
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut