Désassembler un fichier swf grâce à FLASM
Je suis en train d’aider un copain à faire évoluer son site : changement d’hébergement, utilisation de rewrite rule pour avoir des belles urls lisible, …
Tous ces changements ont abouti à un problème épineux. Pour certaines fonctionnalités le site utilise des flashs (lecture de vidéos soumises à authentification par exemple) qui font des appels au site en URLLoader. Or comme les urls du site ont changé et que les adresses de vérifications dans les flashs ont été codées en dur (ce qui n’est pas beau du tout je vous l’accorde) il faut les modifier. Manque de chance, nous ne disposons pas des sources des flashs pour effectuer les modifications. Heureusement il existe un outil, flasm, qui permet de désassembler les binaires flashs c’est-à-dire de générer un fichier texte contenant le langage machine de l’exécutable.
A la base cet outil a été développé pour les développeurs flash qui voulaient optimiser le bytecode généré par le compilateur pour le flash player. Personnellement j’ai plutôt tendance à faire confiance au compilateur
Pour pouvoir utiliser l’outil, il vous faut premièrement télécharger le logiciel qui est disponible sous forme d’archive pour windows, mac et linux puis l’installer (par exemple dans le répertoire c:\flasm pour windows).
Ensuite pour désassembler un fichier swf, il suffit d’exécuter la commande suivante :
c:\flasm>flasm -d chemin_vers_swf/fichier.swf > chemin_vers_swf/fichier.flm
Vous obtenez en sortie un fichier avec l’extension .flm qui est lisible par un éditeur texte (dans mon cas j’utilise scite
). Ce fichier contient des instructions assembleur qui représentent le langage machine exécuté par le player flash. Dans mon cas j’ai donc pu modifier les variables définissant les urls du site appelées. En effet toutes les variables apparaissent en clair dans le code assembleur. En général c’est une instruction push qui s’occupe de l’affectation des variables. Via une recherche il est très facile de retrouver ces affectations.
Une fois les modifications effectuées et sauvegardées sur le fichier flm, il reste à assembler le fichier flm pour générer un nouveau swf. Pour cela il suffit d’exécuter la commande suivante :
c:\flasm>flasm -a chemin_vers_swf/fichier.flm
Tout n’est pas rose et il y a une restriction. Pour le moment flasm ne peut désassembler que des fichiers swf actionScript 1 ou actionScript 2. Ce qui veut dire ques les flashs récents ne peuvent pas être désassemblés pour le moment. Ceci étant c’est un outil bien utile et sans celui-ci nous aurions été obligé de redévelopper l’intégralité des flashs du site.
Un grand merci à Christophe Bessis qui m’a fait découvrir cet outil.













