capture d'écran montrant le même jeu snake s'exécutant simultanément dans un navigateur firefox, une fenêtre linux debian et une fenêtre windows 10.

L’exploit du « Polyglotte » : ce jeu Snake de 13 Ko fonctionne sur Windows, Linux et Web

Aujourd’hui, une simple page web peut peser plusieurs mégaoctets, la performance réalisée par la développeuse Kamila Szewczyk relève de la magie noire numérique. Elle a réussi à concevoir une version du célèbre jeu Snake contenue dans un fichier unique de seulement 13 Ko, capable de s’exécuter nativement sur Windows, Linux et dans n’importe quel navigateur web.

Contrairement aux solutions classiques qui utilisent des couches d’abstraction gourmandes en ressources, ce projet est un véritable « polyglotte ». Le fichier contient en réalité trois implémentations distinctes du jeu, chacune optimisée pour son environnement :

  • Une version en C pour Windows utilisant l’API native (WinAPI).

  • Une version en C pour Linux utilisant le système de fenêtrage X11.

  • Une version en JavaScript utilisant l’élément HTML5 Canvas pour le web.

Chaque implémentation ne pèse qu’entre 3 et 5 Ko une fois comprimée ou minifiée. Oui oui, c’est un peu dingue !

La magie derrière le fichier polyglotte

Pour que ce miracle technologique fonctionne, Kamila Szewczyk a exploité les failles et les tolérances des différents chargeurs d’exécutables :

  • Windows : le fichier commence par un en-tête PE (Portable Executable) valide. L’astuce consiste à placer un script shell dans les octets normalement inutilisés de cet en-tête.

  • Linux : le système interprète le début du fichier comme un script shell qui extrait alors un binaire ELF64 compressé (LZMA) caché plus loin dans le fichier pour l’exécuter.

  • Navigateur : les navigateurs web ignorent les données binaires au début du fichier jusqu’à ce qu’ils rencontrent les balises HTML/JavaScript placées à la fin du document. Un peu de magie CSS permet ensuite de masquer les « déchets » binaires qui précèdent le code du jeu.

Dans la lignée de Cosmopolitan Libc

Ce projet s’inspire directement du célèbre projet Cosmopolitan Libc de Justine Tunney, qui permet de compiler du code C en un binaire unique « compilé une fois, exécuté partout » sur six systèmes d’exploitation différents.

Cependant, l’approche de Kamila Szewczyk va plus loin dans la miniaturisation. Là où Cosmopolitan produit des binaires plus volumineux et ne gérait pas encore les interfaces graphiques (GUI) au début de ses travaux, ce Snake polyglotte offre un jeu complet avec gestion des scores, niveaux de difficulté et labyrinthes aléatoires, le tout dans un format plus petit qu’une icône standard.

Vous pouvez retrouver tous les détails techniques et télécharger cet ovni logiciel sur le blog officiel de l’autrice.

Retour en haut