Game Hacking
1. Qu'est ce que c'est ?
- ce n'est pas que la triche, du piratage ou la decouverte de faille
- hacker signifie bidouiller dans un premier temps
- le principe est donc de bidouiller le jeu pour voir ce qu'il est possible de faire avec et comment il est fait
1.1. Et avec du concret ?
- ingénierie à rebourd pour une meilleure compréhension du fonctionnement du jeu
- minage de données
- création de mods, de patchs, pour une meilleure immersion et plus de fun
- logiciels de triche (berk)
- découverte de vulnérabilités
- piratage
1.2. Quels jeux ?
- des jeux récents (sous Unity, Unreal…)
- des jeux plus ancients (NES, SNES, DOS ou Windows 2000…)
- n'importe lequel en fait !
1.3. Les outils
- propre au
- langage informatique (GHidra, dnSpy)
- moteur de jeu (il2cppdumper)
- générique (CheatEngine, WireShark)
2. Exemple dans le cadre du BreizhCTF
2.1. Le BreizhCTF ?
- CTF pour Capture The Flags
- Compétion de cyber avec des épreuves et des chaines de caractères
à retrouver (exemple:
BzhCTF{t0t0}
)
- Compétion de cyber avec des épreuves et des chaines de caractères
à retrouver (exemple:
- 1ere compétition en présentiel en France et dans les 10 plus grands évènements au monde (d'après un des organisateurs)
- 600 participants, 120 equipes
2.2. Les epreuves de Game Hacking
- un jeu est fourni
- développé sur Unity
- mais obfusqué et non patchable
- avec de la cryptographie pour cacher les fannions
- 4 challenges, mais seulement 3 résolus (un peu dur de se concentrer sur une nouvelle technologie à 3h du matin)
- réussir à monter sur une tour trop haute
- tirer des boules de feux
- traverser une épée qui inflige des dégâts
trouver une épée cachée
2.2.1. La tour
- Première analyse: on veut sauter haut pour aller sur la tour
- Analyse du code: on regarde les classes, il y a une classe Player
- On voit une fonction qui applique une force vectoriel sur le corps du joueur, de fortes chances que ce soit le saut (\((X, Y, Z)\) dans Unity)
Figure 1: pas possible de patcher
2.2.2. Les boules de feux
On retourne sur la classe et la fonction…
Analyse des attributs de la classe
2.2.3. L'épée
3. Exemple avec un vrai jeu
3.1. Présentation du jeu
- jeu multi-joueurs et solo
- survie dans un labyrinthe
- ouverture de portes lentes avec des pièges derrière
3.2. Se fixer un objectif
Ouvrir les portes plus rapidement pour finir plus vite en solo.
3.3. Comment y arriver ?
Comme avant, on va chercher dans le code avec notre cerveau. On cherche un mécanisme de porte donc sûrement une classe Door ?
Figure 2: En effet…
Figure 3: Et un petit tour dans la doc !