Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAlain Marois Modifié depuis plus de 8 années
1
Broken Synapse Désactivation du brouillard de guerre dans un jeu de stratégie en ligne
2
Frozen Synapse Sorti en 2011 Jeu de stratégie compétitif en tour par tour Objectif : désactiver le brouillard de guerre
3
Idée #1 : Wireshark Récupération des données d’une partie Client : textcom command selectMT [game ID] Serveur : blob.gz 0000h: 06 00 00 00 88 31 33 32 31 38 33 34 09 6D 75 6C....ˆ1321834.mul 0010h: 74 69 74 75 72 6E 09 63 61 66 66 69 6E 61 74 6F titurn.caffinato 0020h: 72 09 32 09 34 09 30 09 4D 61 74 63 68 6D 61 64 r.2.4.0.Matchmad 0030h: 65 09 30 09 31 09 30 09 53 6E 69 70 65 72 5A 77 e.0.1.0.SniperZw 0040h: 6F 6C 66 09 30 09 2D 31 09 30 20 31 09 35 32 20 olf.0.-1.0 1.52 0050h: 36 32 09 36 31 30 20 32 34 38 09 34 32 37 36 09 62.610 248.4276. 0060h: 31 38 38 09 31 38 09 31 32 39 09 63 61 66 66 69 188.18.129.caffi 0070h: 6E 61 74 6F 72 09 53 6E 69 70 65 72 5A 77 6F 6C nator.SniperZwol 0080h: 66 09 2D 34 30 2E 30 09 30 09 30 09 30 00 00 00 f.-40.0.0.0.0... 0090h: 00 08 00 00 00 00 00 00 00 0D 0A 6D 61 63 68 69...........machi 00A0h: 6E 65 47 75 6E 00 01 00 00 00 01 00 00 00 00 FF neGun..........ÿ 00B0h: FF FF FF 00 00 80 BF 03 00 00 00 00 00 00 00 00 ÿÿÿ..€¿......... 00C0h: 00 00 00 40 AB 19 44 D0 44 CE 41 01 00 00 00 00...@«.DÐDÎA..... 00D0h: 00 80 BF 00 00 00 00 01 00 00 00 2E 00 00 00 00.€¿............. 00E0h: 00 00 00 01 00 00 00 40 AB 19 44 D0 44 CE 41 5B.......@«.DÐDÎA[... Header ???
4
Idée #2 : OllyDbg Breakpoint sur recv Boucle infinie (?) dans un switch-case géant Jeu bâti sur le moteur Torque Game Engine Langage de script « maison » Fichiers.cs.dso dans le répertoire du jeu
5
Idée #3 : Décompiler les.cs.dso Code du Torque Game Engine publié en 2013 Lecture moteur pour comprendre : Structure des fichiers.cs.dso Rappelle les.class de Java Présence de tables qui contiennent valeurs immédiates / noms de variables Fonctionnement de l’interpréteur Pas de registres Trois piles Aucune optimisation
6
Idée #3 : Décompiler les.cs.dso Ecriture d’un émulateur/décompilateur en Python Torque VM (floats) Emulateur (floats) Opcode OP_LOADIMMED_FLT [2] 2 2 OP_LOADIMMED_FLT [5] 55 OP_ADD 7 "5 + 2" OP_SETCURVAR [%var] pCurrentVariable = lookup_local("var"); curvar = "%var" OP_SAVEVAR_FLT pCurrentVariable->setValue(stack.top()); Code source : %var = 5 + 2;
7
Idée #3 : Décompiler les.cs.dso Structures de contrôle plus compliquées à gérer : Fingerprinting pour détecter le type de structure Avoir un décompilateur qui marche BytecodeEmulateur [test] OP_JMPIFNOT if ? while ? [branche « True »] Où est-ce que je referme l’accolade ? [suite du code] BytecodeEmulateur [test] OP_JMPIFNOT if ? while ? / Ajout de META_ENDIF [branche « True »] Où est-ce que je referme l’accolade ? META_ENDIF OK, ici ! [suite du code]
8
Idée #3 bis : Décompiler les.cs.dso Nouvelle mission : identifier les évolutions du bytecode IDA Pro Pro tip : version GNU/Linux de Frozen Synapse non strippée :) Indices dans le code du moteur …mais premier commit seulement en février 2013 Différences découvertes : Liste des opcodes décalée à deux endroits Taille des offsets : 4 octets au lieu de 8 Adaptation du décompilateur
9
Idée #3 bis : Avec un décompilateur Possibilité de lire le code source du jeu Si un.cs plus récent est détecté dans le répertoire, Torque le recompile et l’utilise Désactivation du brouillard de guerre Acquisition de succès Steam Modding ? Démonstration
10
Conclusion Données « sensibles » masquées mais transmises Décompilateur et scripts disponibles sur GitHub https://github.com/JusticeRage/BrokenSynapse Tricher c’est mal Writeup et slides sur mon blog : https://blog.kwiatkowski.fr/?q=fr/brokensynapse Frozen Synapse 2 annoncé pour 2016 Même moteur ? Même décompilateur ? Des questions ?
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.