Outils pour utilisateurs

Outils du site


back2root:reverse-engineering:planet-x3:part1-exploration

Planet X3 - Part 1 - Exploration

Planet X3 est disponible sous 3 “distributions”:

  • Digital
  • Boxed floppy 3“1/4 (720Ko)
  • Boxed floppy 5”1/2 (350Ko)

Dans cette analyse, nous allons nous concentrer sur la version 3“1/4 de Aout 2020, version qui offre le choix dans plusieurs carte video (CGA, EGA, VGA).

Il existe une version plus récente (Avril 2021), mais quand j'ai commencé l'étude, je n'avais pas cette mise à jour (officiel mais pas disponible sur le site de the8bitguy).

Comme a mon habitude, je commence par analyser les “features” du programmes (mode graphiques, cartes son, etc…), les fichiers; leur types et tailles (si pertinent).

Mode Graphique supportés

Resolution Couleurs Carte Application Commentaires
160×200 16 CGA PX3_CGA.COM Composite uniquement
320×200 4 CGA PX3_CGA.COM Palettes Standard
640×200 2 CGA PX3_CGA.COM
320×200 4 CGA PX3_CGA.COM 4 grayscale (2 palettes possibles)
160×200 16 TANDY/PC Jr PX3_CGA.COM
720×350 2 Hercule PX3_CGA.COM
320×200 16 Plantronics PX3_CGA.COM
320×200 256 VGA PX3_VGA.COM
640×400 16 TANDY 1000TL PX3_VGA.COM
640×200 16 EGA PX3_EGA.COM

Carte Son Supportées

Voix Speaker AdLib Tandy
Music 1 Natif Natif Natif
Music 2 Natif Natif Natif
Music 3 Natif Natif Natif
SFX Natif Speaker Speaker

Exploration des fichiers

Fichiers Audios

Speaker AdLib Tandy Descr
S_LOSE.BIN A_LOSE.BIN T_LOSE.BIN Game Over Music When Losing
S_MENU.BIN A_MENU.BIN T_MENU.BIN Music during menu
S_MUS01.BIN A_MUS01.BIN T_MUS01.BIN
S_MUS02.BIN A_MUS02.BIN T_MUS02.BIN
S_MUS03.BIN A_MUS03.BIN T_MUS03.BIN
S_MUS04.BIN A_MUS04.BIN T_MUS04.BIN
S_MUS05.BIN A_MUS05.BIN T_MUS05.BIN
S_MUS06.BIN A_MUS06.BIN T_MUS06.BIN
S_MUS07.BIN A_MUS07.BIN T_MUS07.BIN
SOUNDS.BIN Sound FX valable pour toutes les Cartes Son, car les FXs sortent toujours du speaker
S_WIN.BIN A_WIN.BIN T_WIN.BIN Game Over Music When Wining

Fichiers Maps

Ficihier Description
MAP00.MAP
MAP01.MAP
MAP02.MAP
MAP03.MAP
MAP04.MAP
MAP05.MAP
MAP06.MAP
MAP07.MAP
MAP08.MAP
MAP09.MAP
MAP10.MAP
MAP11.MAP
MAP12.MAP

Fichiers Données de jeu et graphismes sprites

Trois “tileset” existent, et en plusieurs version suivant la carte graphique choisie

Graphique Mode Grassy Desert Winter
CGA 640x200x2 couleurs TILE1.CG2 TILE2.CG2 TILE3.CG2
CGA 620x200x4 couleurs TILE1.CGA TILE2.CGA TILE3.CGA
CGA 160x200x16 Couleurs Composite Mode TILE1.CMP TILE2.CMP TILE3.CMP
TANDY 160x200x16 Couleurs TILE1.TDY TILE2.TDY TILE3.TDY
VGA 320x200x256 Couleurs TILE1.VGA TILE2.VGA TILE3.VGA
Tiles Data For each set TILEDAT1.DAT TILEDAT2.DAT TILEDAT3.DAT

les applications

introductions

Planet X3 (dans sa version digitale/720Ko) contient 5 fichiers executables sont tous des fichiers de type “COM”.

La version 360Ko n'inclue QUE la version CGA.

Fichier ".COM"

Les fichiers binaires ”.com“ sont des fichiers executable destinés a être charger tel que en mémoire, ce mécanisme est hérité de CP/M, à la glorieuse époque des machines 8bits.

Ces fichiers ne contiennent aucun header, aucune Metadata, aucune instruction de chargement complexe; c'est simplement un bichier binaire pouvant meme être mis en ROM, il faut toutefois noter que sur PC, un fichier ”.com“ peut faire des appels à l'OS et donc ne pas fonctionner sans DOS préalablement chargé en mémoire, ce qui n'est pas le cas d'un fichier ”.com“ CP/M.

À l'époque des premier processeurs de la série x86 d'Intel, dont l'espace d'adressage était découpé en «segments» de maximum 64KB, les fichiers «.com» étaient des programmes de suffisamment petite taille pour tenir entièrement sur un seul segment; cette particularité de taille leur permettait de ne nécessiter aucune relocation pour leur chargement en mémoire.

Ces executables sont sensé n'occuper qu'un seul segment de mémoire (64Ko), même s'ils peuvent accéder à l'ensemble de la mémoire du PC (ne fusse que pour accéder à la carte graphique).

Les fichiers «.com» sont simplement chargés (par l'OS) à l'adresse 100h d'un segment quelconque, (après 100h/256 octets d'informations sur l'environnement). Une convention veut que les données soient placées au début du fichier, juste après une instruction de saut vers le code exécutable.

premiers regards

Un rapide coup d'oeil (en hexa) sur les fichiers ”.com“ nous permet de rapidement voir plusieurs anomalies sur ces fichiers.

Là où le tout petit “PX3.COM”:

Ce programme contient des parties ASCII parfaitement lisibles et cohérentes: on peut parfaitement lire ici ”px3_vga.com“, ”px3_cga.com“, ce qui confirme d'ailleurs le status de “loader” (mais uniquement pour choisir entre CGA et VGA) de ce programme, mais aussi qu'il n'est ni compressé, ni encrypté et qu'il peut donc être analyser tel quel.

Dans les “gros” fichiers .com, les parties “ASCII” ne semble très peu lisibles, même si l'on peut deviner du texte.

compression ou encryption

Il est beaucoup plus difficile de lire quelque chose dans ce début de programme, on devine des mots. En analysant le premier block “lisible”

"Choos", 0xdb,0xff, "e Video Mo",0x05
"1-CGA 320x",0x02,0xfb,0xf7

Ce type d'encodage est typique d'une compression relativement légère type RLE (une encryption n'aurait laissé aucun texte lisible).

Un autre indice est en fait les 4 lettres localisées à offset 0x24 : “UPX!”, il s'agit de la signature d'Ultimate Packer for eXecutables. il n'y a donc aucune raison d'analyser les fichiers avant de les décompresser via l'outil Ad-Hoc.

Ce fait a d'ailleurs été confirmé dans le “README.TXT” :

All executable files of notable size have been compressed with UPX and have to be de-compressed before they can be modified in any meaningful way.

Cette phrase sous-entends que les modifications (et donc l'analyse) est permise, il n'y a donc pas de raison de ne pas le faire…

fichiers décompressés

Après décompression (quand nécessaire) voici ce que donne le listing de ces fichiers:

Fichier Taille (Bytes) Compression Taille (décompressé) Description
PX3.COM 332 N Loader
PX3_CGA.COM 15415 UPX! 56627
PX3_EGA.COM 14785 UPX! 38871
PX3_MTDY.COM 15346 UPX! 40725
PX3_VGA.COM 15709 UPX! 39943
back2root/reverse-engineering/planet-x3/part1-exploration.txt · Dernière modification : 2023/01/14 16:41 de frater