La décompilation de Ravenloft : Strahd's possession

Un programme bien fait commence par stocker toutes ces données comme les textes ou les graphiques à l'extérieur du programme en lui-même dans des fichiers de ressources. Cela aide justement à pouvoir faire une traduction ou changer une image sans avoir à recompiler le code source.

En regardant les fichiers associés au programme on peut voir de nombreux fichiers RESX qui doivent être les fameux fichiers de ressources. Malheureusement ils ne sont pas exploitables en l'état car en les ouvrant avec un éditeur hexadécimal on ne peut ne trouver aucun texte en clair. La présence de messages en clair dans le programme mentionnant l'algorithme LZW tend à indiquer que le contenu est en fait compressé. Malheureusement sans le dictionnaire qui va avec aucun espoir de décompresser les fichiers, ledit dictionnaire devant se trouver au sein du programme. La décompilation semble donc la seule alternative.

En bon développeur j'ai d'abord commencé par chercher si quelqu'un n'avait pas fait le travail à ma place. Si les logiciels de décompilation sont légions, quasi-aucun ne supportent les programmes MS-DOS (16bits) au profit des plus courant Win 32 bits (aussi appelés PE). Le seul programme approchant que j'ai pu trouver se nomme DCC et malheureusement il ne fonctionne pas avec mon programme, trouvant une expression non-reconnue. Fort heureusement DCC vient avec ses sources (en C++) donc je vais pouvoir m'en inspirer pour construire mon propre décompilateur.

Au niveau de la structure du programme, on remarque tout de suite l'exécutable principal R.exe est bien trop petit pour gérer l'ensemble du jeu (13Ko). Il y a bien des DLL qui accompagnent le jeu (même si je reste sans informations sur comment un programme DOS peut utiliser des DLL) mais j'ai déjà vu les mêmes noms dans d'autres jeux, ce doit être des librairies standards permettant d'afficher des graphiques à l'écran. Reste donc CODE.1 et CODE.2 qui s'avèrent être, après inspection, aussi des programmes et qui doivent contenir l'essentiel du code du jeu. La présence en clair des mots de passe servant de clé aux jeux étant un bon indicateur.

Si cela s'applique bien, je pense utiliser les enseignements sur l'analyse lexicale expliquées par notre cher SpiceGuid.

Laissez un commentaire

1 Commentaire

  • Es-tu sûr qu'il implémente un dictionnaire ? J'ai lu quelque part que le LWZ pouvait se faire à la volée sans dictionnaire (de même qu'on aurait pu lui associer un dictionnaire).

Laissez un commentaire

Vous devez être connecté pour commenter sur le Refuge. Identifiez-vous maintenant ou inscrivez-vous !


Marre des pubs ? Inscrivez-vous !