Broken Synapse Désactivation du brouillard de guerre dans un jeu de stratégie en ligne.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Formation universitaire à .NET: Introduction à C#
Interactivé: L'Action Script.
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Objectifs Présentation et utilisation du langage PERL
IJA - TD 2 Bases du langage
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
Introduction : Compilation et Traduction
1)Boucle for 2)Boucle while
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Principes de programmation (suite)
CPI/BTS 2 Programmation Web Introduction au PHP
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les éléments de base de l’algorithmique
Les instructions PHP pour l'accès à une base de données MySql
Exercice Votre client CBEAUCBON.COM h é berge actuellement son site sur deux machines accessibles directement depuis internet. Aucun service de s é curit.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Principes de programmation (suite)
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
IFT 6800 Atelier en Technologies d’information
Web dynamique PhP + MySQL AYARI Mejdi 2006
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
Développement Web Open Source haXe et les outils « open source » Première partie.
PHP & My SQL.
JavaScript.
Premier trip en domotique...
 Syntaxe du langage PHP
 Requêtes MySQL en PHP Introduction
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
ISBN Chapitre 10 L'implémentation des sous- programmes.
 Formulaires HTML : traiter les entrées utilisateur
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
1 Cpt JAVA : Eclipse (bis) Debogage. 2 Code à tester public class siecle { int t; public siecle() { super(); t=1; } static public boolean vrai() { return(false);
Apéro Techno Stephen Rousset. Plan : 1.Discussion autour du concept NoSQL 2.Utilisation côté code (C#) 3.Du concret 4.Questions ?
Au bistro de la gare, Christophe, le frère aîné, prend la parole: « Enfin les vacances! Dans le train, j’ai partagé l’argent que nous avons gagné – ça.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Espace collaboratif du CODEV Blog, WIKI, Forum: c’est quoi?  Blog - Publication périodique et régulière d’articles La vocation d’un Blog est d'être un.
Francis Lowenthal Place du Parc 18 étage -1 B-7000 Mons Tél : 065/
Étapes pour la Programmation du 68HC11 I. Écriture du programme dans un fichier *.a11 II. Le programme est compilé (traduit en langage machine) III. Le.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
1 Monopalme Projet 4 Info Spécifications LE LAY Olivier MAHE Jocelyn FORM Nicolas HENRY Gurvan BONNIN Thomas BASSAND Guillaume Décembre 2009 MONNIER Laurent.
Introduction à la programmation
Opérations courantes Guillaume PHILIPPON. Sommaire Mise à jour des QWG Gestion des utilisateurs Ajout/Suppression d’un programme Préparation des « OS.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
Un cadre de présentation 1 Titre + Slogan illustration Mission + Génèse Equipe : Qui sommes Nous ? Avancée du projet : Où en sommes nous ? Présentez vous.
Projet Personnel (Epreuve 6) Projet réalisé dans le cadre de mon épreuve E6 au sein de mon alternance au conseil départemental du val de marne Arnaud PICANO.
La création des données d’exemplaire pour un exemplarisateur Sudoc.
Spécialisation covariante cours et TP. Plan  Introduction  Rappels théoriques  Définition de la covariance  Présentation du modèle servant d'exemple.
Réflexion sur un exemple possible de projet proposé en I.S.N.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Nouveaux programmes de mathématiques cycles 3 et 4
Rotary, Crans-Montana. 2 Est-ce qu’un tel pays peut avoir des problèmes touristiques?
Broken Synapse Désactivation du brouillard de guerre dans un jeu de stratégie en ligne.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Informatique 2A Langage C 3 ème séance.
Esame de Stato. La dissertation La compréhension et la production.
Mise en correspondance des logins entre PRONOTE et ATRIUM Démarche pas à pas V5 –
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Transcription de la présentation:

Broken Synapse Désactivation du brouillard de guerre dans un jeu de stratégie en ligne

Frozen Synapse Sorti en 2011 Jeu de stratégie compétitif en tour par tour Objectif : désactiver le brouillard de guerre

Idée #1 : Wireshark Récupération des données d’une partie Client : textcom command selectMT [game ID] Serveur : blob.gz 0000h: D 75 6C....ˆ mul 0010h: E E F titurn.caffinato 0020h: D D r Matchmad 0030h: E A 77 e SniperZw 0040h: 6F 6C D olf h: h: caffi 0070h: 6E F E A 77 6F 6C nator.SniperZwol 0080h: D E f h: D 0A 6D machi 00A0h: 6E E FF neGun ÿ 00B0h: FF FF FF BF ÿÿÿ..€¿ C0h: AB D0 44 CE D0h: BF E €¿ E0h: AB D0 44 CE 41 Header ???

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

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

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;

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]

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

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

Conclusion Données « sensibles » masquées mais transmises Décompilateur et scripts disponibles sur GitHub Tricher c’est mal Writeup et slides sur mon blog : Frozen Synapse 2 annoncé pour 2016 Même moteur ? Même décompilateur ? Des questions ?