
Cette armée d'agents IA peut cracker n'importe quel jeu
Audio Summary
AI Summary
Le *reverse engineering* de jeux vidéo, c'est l'art de reconstituer le code source d'un jeu à partir de son fichier binaire. C'est comme retrouver la recette d'un gâteau en n'ayant que le gâteau. Ce processus est essentiel pour le *modding* avancé, permettant de créer des modifications profondes qui touchent au moteur même du jeu, comme la physique ou l'ajout de nouvelles fonctionnalités complexes. Sans le code source, les *modders* sont limités à des ajouts plus triviaux, comme des véhicules ou des textures.
Rockstar Games est connu pour rendre le *modding* de ses jeux particulièrement difficile, empêchant activement la modification de leurs titres. Pourtant, une communauté de développeurs s'est lancée en 2019 dans le *reverse engineering* complet de GTA San Andreas, un travail titanesque qui, après six ans, n'était encore qu'à moitié achevé.
C'est dans ce contexte qu'est intervenu Séim, non-développeur, mais expert en utilisation d'IA comme Codex. Séim a raconté comment il a pu boucler le travail de *reverse engineering* de GTA San Andreas en seulement deux mois, une prouesse qui ouvre des perspectives vertigineuses pour l'avenir de cette pratique.
Pour comprendre l'ampleur de la tâche, il faut savoir que des jeux comme Super Mario 64 ont été entièrement *reverse engineering* en quatre ans, permettant des ports natifs sur diverses plateformes et même des modes multijoueurs en ligne. Les jeux Pokémon (Rouge, Bleu, Émeraude, Cristal) ont également été *reverse engineering*, ce qui a permis la création de jeux Pokémon complets et originaux par la communauté. Le *reverse engineering* ne concerne pas seulement les assets (graphismes, sons), mais surtout la logique interne du jeu, comme les algorithmes de gameplay. Pour GTA San Andreas, il s'agit de reconstituer entre 12 000 et 15 000 fonctions.
Séim a expliqué son approche, partant de zéro en tant que non-développeur. Il a commencé par se familiariser avec les outils de *reverse engineering*, notamment Ghidra, un logiciel open source de la NSA qui désassemble le binaire en code assembleur et pseudo-code. Au début, il a tenté de poser des questions aux agents IA, qui lui ont d'abord dit que la tâche était trop complexe pour un novice.
Têtu, Séim a persisté, utilisant une méthode d'essais-erreurs. Il copiait le code assembleur d'une fonction simple, l'envoyait à l'IA, qui lui proposait une reconstitution. Les premières fonctions simples ont été "reversées" avec succès, ce qui l'a rempli d'enthousiasme. Il a alors partagé sa découverte avec l'équipe qui travaillait sur le projet depuis six ans. Cependant, il a rapidement réalisé que cette méthode manuelle était impraticable pour les fonctions plus complexes, nécessitant d'innombrables allers-retours et devenant un processus laborieux.
Après deux semaines, Séim a identifié un *pattern* dans ses difficultés et a cherché à automatiser le processus. Il a demandé aux agents IA comment optimiser le flux de travail, créer des boucles et des pipelines pour automatiser le *reverse engineering*. L'idée était de créer un agent IA capable de le remplacer, orchestrant plusieurs sous-agents.
Le workflow automatisé se déroule comme suit : un premier agent identifie la prochaine fonction à "reverser" de manière logique (ne pas prendre une fonction au hasard, surtout si d'autres fonctions appelées ont déjà été traitées). Il récupère ensuite le code assembleur et le pseudo-code. Ces données sont transmises à un autre agent qui effectue le *reverse engineering*. Une fois le code reconstitué, un agent de revue compare ligne par ligne le nouveau code avec le code assembleur original, qui est la "source de vérité". S'il y a des incohérences, les agents communiquent entre eux jusqu'à un consensus. Enfin, l'humain teste en jeu la fonction pour s'assurer de son bon fonctionnement. Séim espère qu'à l'avenir, les IA pourront également automatiser cette phase de test en jeu.
Pour orchestrer ces agents, Séim a d'abord travaillé manuellement, copiant-collant les informations entre eux. Il a ensuite développé son propre outil, disponible sur GitHub, qui automatise ce pipeline de *reverse engineering* pour n'importe quel binaire. Cet outil a permis d'accélérer drastiquement le processus.
Lorsque Séim a rejoint le projet GTA San Andreas, environ 60% du jeu avait été "reversé". Grâce à son outil et son approche basée sur l'IA, il a terminé les 40% restants en seulement deux mois. Ce gain de temps est colossal, sachant que le processus manuel aurait pris des années. Il laissait son agent tourner la nuit, "reversant" des centaines de fonctions qui auraient pris des mois à un humain.
Cependant, le *reverse engineering* de jeux Rockstar s'accompagne de risques légaux. Bien que le code reconstitué soit original et ne contienne aucune ligne copiée, Rockstar a une politique stricte contre toute modification de ses produits. Les équipes ayant "reversé" GTA 3 et Vice City ont été poursuivies en justice et ont dû retirer leurs dépôts de code. Nintendo, en comparaison, est plus clément. Séim est conscient de ces risques et perfectionne son projet avant de le rendre public, sachant qu'il pourrait être contraint de le retirer. Le but est de contribuer au *modding*, et une fois le code publié, il sera accessible à tous, même s'il doit être retiré plus tard.
Actuellement, Séim a terminé le *reverse engineering* de GTA San Andreas, mais il est encore en phase de test. Il doit parcourir le jeu à 100% pour s'assurer que toutes les fonctions sont correctement implémentées, un travail qui peut prendre des dizaines d'heures et durer toute une vie avec les corrections de bugs.
Grâce à ce *reverse engineering*, des possibilités incroyables s'ouvrent. Par exemple, il est possible de créer de nouvelles cartes, de nouvelles missions, voire des jeux complets basés sur le moteur de San Andreas. Un projet appelé "GTA Carcer City", par exemple, a recréé une ville du jeu Manhunt (également de Rockstar, mais non open world) avec un nouveau mode histoire, tout en conservant l'esthétique de l'ère PS2.
Séim a également "reversé" un autre jeu, GTA Liberty City Stories (sorti sur PS2, PSP et Android), et l'a rendu jouable sur PC.
En fouillant les entrailles de ces jeux, Séim a fait des découvertes intéressantes. Par exemple, Rockstar a inventé son propre langage de programmation, le "GTA 3 script" (dérivé du Basic), pour décrire les missions et les scripts. Ce langage a dû être "reversé" pour permettre la création de nouvelles missions par la communauté.
Une autre découverte fascinante est le système de multiprotagoniste de GTA V (Franklin, Trevor, Michael), qui était en fait prévu pour San Andreas. Le code quasi terminé a été retrouvé, permettant de changer de personnage en mode libre, même si ce n'était pas aussi poussé que dans GTA V. Un mode récent réactive d'ailleurs cette fonctionnalité avec très peu de modifications.
Séim a même créé un mode "Inception" pour San Andreas : on peut jouer à GTA 3 ou Vice City à l'intérieur de GTA San Andreas, en se rendant devant la télévision du personnage principal, CJ. Les jeux sont entièrement intégrés et tournent dans le même moteur, permettant même de sauvegarder les missions.
Il a également développé un outil révolutionnaire qui permet de créer des animations pour le jeu à partir d'une simple vidéo. En téléchargeant une vidéo (par exemple, Mister Bean qui danse), l'outil détecte le squelette et les mouvements en quelques secondes, générant une animation prête à être utilisée dans San Andreas. Cet outil, qui utilise des modèles de détection de pose, offre des possibilités de création d'animations beaucoup plus réalistes que ce que Rockstar avait à l'époque.
Cet outil n'est qu'une partie d'un ensemble de 35 outils intégrés dans un seul site web, remplaçant de nombreux logiciels de *modding* complexes. Il permet de modifier des fichiers audio, des textures, de compiler des scripts GTA 3, d'éditer les collisions, etc.
Un autre outil impressionnant est un éditeur de cartes complet, qui émule le rendu du jeu en temps réel. Il permet de créer de nouvelles cartes, de placer des décors, et même d'importer des modèles d'autres jeux (comme la maison de Michael de GTA V) par simple glisser-déposer. L'outil gère automatiquement les collisions, simplifiant énormément la création de contenu.
Séim a partagé une anecdote sur sa rencontre avec une ancienne développeuse de Rockstar (2002-2003) à Los Angeles. Elle lui a révélé que les textures des anciens GTA étaient souvent de simples photos prises dans la vie réelle. Inspiré, Séim s'est lancé dans un projet personnel : retrouver les lieux réels qui ont inspiré les textures et bâtiments de San Andreas, 20 ans après. Il a ainsi identifié des fissures dans un mur, des boutiques, et des bâtiments entiers, souvent disparus aujourd'hui. Il a même rencontré un commerçant dont la boutique était représentée dans le jeu, sans qu'il le sache. Cette pratique de "copier-coller" des photos directement dans le jeu était courante à l'époque, avant que Rockstar n'adopte des méthodes de création de textures plus sophistiquées à partir de GTA 5.
La passion de Séim et l'impact de l'IA sur le *reverse engineering* démontrent un potentiel immense pour la création de contenu et la compréhension des jeux vidéo, même face aux obstacles techniques et légaux.