A quel point les programmeurs en langage assembleur de la vieille école peuvent-ils être dangereux ?

Eugène Kaspersky a récemment écrit un post sur son blog où il parlait du grand retour des créateurs de virus. Je suis assez âgé pour me rappeler de ces gars

Eugène Kaspersky a récemment écrit un post sur son blog où il parlait du grand retour des créateurs de virus. Je suis assez âgé pour me rappeler de ces gars et de leur travail brillant – je ne parle pas forcément des créateurs de malware, je parle des programmeurs, des développeurs de logiciel et des maîtres en assembleur. Ils sont comme les Jedi et les Sith de l’Ancienne République que tous les héros de la saga de Luke Skywalker considéraient bien plus forts et habiles avec leurs sabres laser (sans blague, demandez à Yoda). Et j’ai pensé … bon sang … il reste probablement trois personnes qui ont été témoins du réel pouvoir de ces individus (moi, Eugène Kaspersky, et Bill Gates). Sérieusement – il est assez difficile de comprendre de quoi est capable un hacker de l’ancienne école – j’ai donc décidé de vous montrer de quoi Eugène parlait, ainsi vous pourrez décider par vous-même s’il s’agit d’une nouvelle inquiétante.

Un entraînement extrême pour des calculateurs stupides

En 1992, les ordinateurs étaient en gros des calculatrices intelligentes avec de grands écrans (ce n’est pas une blague les enfants). Mais il existait plusieurs groupes qui étaient heureux de faire face au défi des softwares : des programmeurs ont réussi à créer des codes qui utilisaient chaque octet de mémoire, chaque fonction du processeur et du registre, chaque commande OS, et encore plus important, 100% de la puissance du matériel – ils l’ont pressé jusqu’à la dernière goutte et ont observé le résultat. Je dois préciser que dans le but de mener à bien ces tâches, il est nécessaire d’être extrêmement créatif, de boire beaucoup de café (ou de fumer un peu, soyons honnêtes) – et d’avoir un QI extrêmement élevé. Le mouvement lui-même a vu le jour aux alentours de 1988, plus ou moins au même moment que la populaire première version de MS-DOS. Il n’avait pas de nom officiel, mais suivant les lois de l’évolution, il devait tôt ou tard en avoir un. Et c’est ainsi que l’Assembly est né en 1992.

assembly_FRA

Future Crew est de retour du futur

En 1992, un groupe de programmeurs scandinaves appelé « Future Crew » ainsi que leurs amis issus des groupes de programmation « Complex » et « Amiga » organisèrent un évènement appelé « The Assembly » dans le but de partager les résultats de leur travail impressionnant sur le langage assembleur et de concourir pour le titre du « meilleur programmeur » de l’année. Il y avait plusieurs disciplines, mais les deux plus intéressantes étaient les démonstrations de plateformes (PC, Amiga, C64) et celle de PC 64 Ko. La première avait pour but de montrer les solutions/meilleures compétences du hardware de la façon la plus élégante possible et en utilisant un code minimal et optimal. La deuxième était difficile – les programmeurs ne pouvaient pas utiliser plus de 64 Ko – leur programme compilé (comprenez – les fichiers read2work) ne pouvaient pas être de plus de 64 Ko – c’est pourquoi cette pratique est devenue un concours d’élégance dans le domaine de la programmation.

Une démo est une série d’évènements programmés qui ont pour but de démontrer les capacités du matériel et/ou des logiciels lors de la réalisation d’une tâche spécifique, telle que des calculs complexes en physique.

En 1992, le Future Crew a gagné la compétition avec sa démo « Unreal ». La voici (gardez à l’esprit qu’il s’agit de 1992 et que Windows n’existait pas encore. Cette démo était appelée « Unreal » pour une raison – personne (!) n’avait alors réalisé cela avant) :

Ils étaient les premiers à utiliser un modèle d’environnement 3D, des couches graphiques,  des calculs de physique complexe, des calculs d’éclairage, etc. Et le code compilé faisait environ 1 Mo (en incluant la musique ! – et laissez-moi vous rappeler que la compression MP3 n’existait pas encore). La seule façon d’atteindre un tel résultat était d’être un maître en assembleur – selon moi – le langage de programmation le plus complexe de tous. Juste pour que vous ayez une idée de ce que l’assembleur est, voici ce que les gars du Future Crew m’ont dit il y a des années :

« Apprendre à programmer des démos est un processus très difficile et très long. On peut mettre des années à apprendre à bien programmer. Une bonne manière de commencer est d’utiliser un langage de haut niveau tel que le Pascal ou le C et ensuite de commencer à expérimenter avec l’assembleur. Cela prend beaucoup de temps et d’expérimentation et il n’existe pas de raccourcis. La chose la plus importante est d’essayer de comprendre ce que vous faites, ensuite d’essayer de changer le programme pour voir ce que vous obtenez, et de gagner en expérience, c’est la meilleure façon de s’y prendre. Apprendre à bien coder requiert beaucoup de patience, beaucoup d’enthousiasme et de temps. Ce n’est pas facile. »

Pour résumer, ceux qui participèrent à ce concours sont devenus la source ultime d’inspiration pour tous les développeurs de logiciel. Je ne dis pas que quelqu’un a volé leurs idées, non – tout le monde … adoptait juste leur vision créative. La plupart des produits que nous avons aujourd’hui – TOUS LES JEUX, les graphismes Adobe et les produits vidéos, la météo et les GPS, Google Earth … tous ces produits qui représentent plusieurs milliards de dollars ont été à un moment inspirés par l’Assembly. (Au fait – il est strictement interdit de filmer ou de prendre des photos dans l’enceinte du concours – ceux qui ne respectent pas cette règle sont bannis pour toujours).

1993 – l’année de « Second Reality » et « d’Eclipse »

L’Assembly est devenu un tel succès que l’année suivante le nombre de participants et de démos présentées a doublé (ça n’a depuis pas beaucoup changé, puisque depuis 1999, l’Assembly a lieu dans le plus grand stade d’Helsinki dans lequel se rendent plus de 5000 participants du monde entier).

En 1993, Future Crew présenta quelque chose de … fantastique, quelque chose qui a placé la barre très haut pour les futurs concours et qui a changé le monde de la programmation à jamais – la démo « Second Reality » :

Il est essentiel de comprendre, que cette démo fut créée AVANT qu’Intel présente son processeur Pentium (Intel l’annonça la 22 mars et le premier PC Pentium n’a pas vu le jour avant 1994, et l’Assembly a normalement lieu en été – juillet/août. Cela signifie que Future Crew a créé cette démo au moins 6 mois avant que le premier Pentium ne soit sorti). Ce qui veut dire que tous ces fantastiques graphismes et sons ont été réalisés sur des processeurs x486 avec des systèmes de sons primitifs et SANS cartes graphiques. Cette démo a impressionné le jury et la communauté de la programmation – elle a démontré les résultats qui peuvent être atteints avec un travail en assembleur professionnel doté d’une approche minimaliste ( le code compilé de « Second Reality » était d’environ 1,5 Mo). Cette année a rendu Future Crew célèbre.

Voici un making-of de Future Crew – alors qu’ils travaillaient sur « Second Reality » :

Une autre réussite symbolique de 1993 est la démo « Eclipse » du groupe EMF. Celle-ci l’a remporté dans la catégorie limitée à 64 Ko :

 En 1994, la démo « Verses » (du groupe EMF) gagne la première place.

Ils ont montré au monde que des calculs de la physique de l’eau peuvent être réalisés, et que n’importe quelle métamorphose d’un objet 3D dans les limites de la vitesse de Pentium est un jeu d’enfant :

Et ce gagnant en 64 Ko – « Airframe » du groupe Prime est l’ancêtre de tout simulateur moderne d’aviation ou d’espace en 3D :

Pour que vous ayez une idée de la rapidité à laquelle le code a évolué, voici une liste de tous les lauréats de 1995 à 2012.

Lauréat de 1995 : « Stars » par le groupe NoooN

Lauréat de 1996 : « Machines of madness » du groupe Dubius

Lauréat de 1997 : « Boost » du groupe Doomsday

Lauréat de 1998 : « Gateways » du groupe Trauma

Au fait – il s’agit de l’ancêtre de la réalisation visuelle de World of Warcraft. C’est à ce moment que les effets 3D MMORPG furent créés.

En 1999, la technologie 3DFX a changé le graphisme pour toujours. et la démo du groupe Mature Funk, « Virhe », a fortement impressionné tout le monde.

L’Assembly révisé

En 2000, les règles changèrent un peu – au lieu de concourir dans trois catégories – Amiga, PC et C64, ils ont commencé à concourir dans les catégories suivantes : « Combined Demo », « Oldschool Demo » et « 64 Ko Limit Intro ». La compétition 64 Ko est devenue obsolète en 2010. Cependant à la fin de ce post, vous découvrirez des exemples réellement fantastiques de ce que le langage assembleur professionnel peut faire tenir dans 64 Ko.

Voici la liste des gagnants dans la catégorie « Combined Demo », qui est la plus brillante en termes de maîtrise de langage assembleur :

Le lauréat du premier prix en 2000 fut « Spot » par Exceed Group :

Regardez ces effets de lumière … ils sont hallucinants – rappelez-vous, c’était il y a 13 ans !

Le lauréat de 2001 fut « Lapsuus » par le groupe Maturefurk :

Le lauréat de 2002 fut « Liquid… when? » par le groupe Haujobb :

Je dois insister sur le fait que tous les graphismes, y compris les visages et les personnages de toutes les démos réalisées à l’Assembly sont dessinés UNIQUEMENT en utilisant un code – ils ne s’agit pas de fichiers photos inclus dans la démo. Non, monsieur ! 🙂

Le lauréat de 2003 fut « Legomania » par Doomsday. Dites bonjour à tous les jeux vidéos 🙂 Et, je suis sûr que c’est à ce moment que la nouvelle Nintendo Wii est née :

En 2004, le premier prix est allé à « Obsoleet » par le groupe Unreal Voodoo :

Le lauréat de 2005 fut « Lconoclast » par le groupe ASD :

En 2006, la démo « Starstuck » du groupe The Black Lotus a de nouveau impressionné la communauté de par le niveau de sophistication de ses graphismes. Je pense qu’ils ont placé la barre très haut :

Le lauréat de 2007 fut « LifeForce » du groupe ASD. Et ce fut, encore une fois un fantastique travail :

2008 fut l’année de « Within Epsilon » par Pyrotech :

Le gagnant de 2009 est l’un de mes préférés – « Frameranger » des groupes Fairlight, CNCD et Orange :

En 2010, « Happiness is right around the bend » avec le groupe ASD :

En 2011, le lauréat fut « Spin » du groupe ASD :

L’année 2012 a été phénoménale – « Spacecut » de Carillon et Cyberiad CNCD :

Les meilleurs exemples des démos réalisées dans la limite des 64 Ko 

Pour vous donner une idée de ce qu’un programmeur professionnel peut réaliser en 64 Ko, voici le meilleur de 2005 – « Che Guevara » par Fairlight.

Je répète – il s’agit de 64 Ko de langage assembleur pas un octet de plus.

Mais trois ans après, en 2008, le même groupe a démontré l’énorme progrès de la technologie et a réussi à faire tenir dans 64 Ko une démo comme celle-ci – « Panic Room » – et il a gagné le premier prix dans cette catégorie :

Mais la meilleure vidéo 64 Ko de tous les temps est « X marks the spot » par le groupe « Portal Process » en 2010 – le lauréat à l’Assembly dans la catégorie 64 Ko :

Et maintenant… laissez-moi vous présenter un peu le tableau … Toutes ces démos, surtout celles limitées à 64 Ko, montrent les talentueux résultats qu’un programmeur de l’ancienne école peut réaliser, mais, encore plus important, quand il est un maître de l’assembleur – ce qui n’est pas très commun de nos jours, la plupart des produits étant créés à partir de langages de programmation soi-disant « haut niveau » comme Visual C et Object C.

Imaginez une seconde, qu’un programmeur de ce genre, ou qu’un groupe comme Future Crew décide de se débarrasser de tout l’aspect créatif 3D, musical et physique ainsi que de leur enthousiasme et qu’il se concentre sur un seul objectif : créer un code qui volera vos données bancaires ou qui aidera à réajuster un réacteur nucléaire. Pensez-vous qu’il réussirait ? Quelle serait la longueur du code si 64 Ko sont plus que suffisants ? Pourrait-il forcer le système de sécurité de Windows ou Apple ? Sont-ils mobiles ? Sont-ils flexibles ? Ont-ils les moyens financiers de réaliser tout cela s’ils ont participé à un évènement gratuit de 5000 participants pendant 20 ans ?

Je ne veux pas vous dire la réponse. Vous devez en juger par vous-même. Mais quand j’entends quelqu’un dire « mon PC n’a pas besoin de protection » – je ne peux pas m’empêcher de me souvenir de « Second Reality » et de commencer à prier.

Grâce à Dieu, les membres du groupe Future Crew sont maintenant très occupés 🙂 si vous êtes les meilleurs en programmation de démos pourquoi ne pas en faire votre commerce ? La prochaine fois que vous utiliserez un test 3DMark 2011 sur votre PC – pensez à « Unreal », « Second Reality » et Future Crew. Future Crew n’a rien réalisé en tant qu’équipe depuis Scream Tracker 3 (décembre 1994). Bien qu’ils ne se soient jamais officiellement séparés, ses membres ont pris des chemins différents dans la deuxième moitié des années 1990. Des compagnies comme Futuremark (3DMark), Remedy (Death Rally, Max Payne, Alan Wake), Bugbear Entertainment (FlatOut, Glimmerati, Rally Trophy), Bitboys (une compagnie de matériel de graphisme) et Recoil Games (Rochard) ont toutes été en partie ou entièrement lancées par des membres du groupe Future Crew.

Je voudrais tous les remercier – ils ont changé le monde à jamais et nous ont montré que tout est possible quand on en a la volonté. Y compris Kaspersky Internet Security.

Merci pour votre inspiration les gars. Et au plus profond de moi, j’espère qu’aucun programmeur ayant participé à l’Assembly n’utilisera ses capacités à des fins préjudiciables.

Conseils

Assurer la sécurité du domicile

Les entreprises de sécurité proposent des technologies intelligentes, principalement des caméras, pour protéger votre maison contre les vols, les incendies et les autres incidents. Mais qu’en est-il de la protection des systèmes de sécurité eux-mêmes contre les intrus ? Nous comblons cette lacune.