Outils pour utilisateurs

Outils du site


back2root:tutoriaux:future-crew-unreal-reverse-engineering-part-2

Future Crew Unreal Reverse Engineering - Part 2

on va commencer par jeter un œil sur le contenu du fichier UNREAL.EXE, comme nous l'avons vu dans l'article précédent, l'index contient 97 fichiers. Sans lister la liste complète, il est intéressant de noter que les assets sont stockés dans un certain ordre: celui des diverses parties.

Extraction du Loader

il est plus facile, sous Linux, d'extraire le loader via la commande dd:

dd bs=1 count=26347 if=UNREAL.EXE of=LOADER.EXE

Nous pouvons ensuite, dans DosBox-X, décompresser le loader, mais ce n'est pas suffisant comme nous allons le voir plus loin.

Analyse des exécutables

Nous allons lister les fichiers exécutables:

Nom de Fichier Taille (bytes) Compression 1 Taille (Bytes) Compression 2 Tailles (bytes)
PART1.EXE 29.860 LINK V3.69 /EXEPACK 42.592 N/A 42.592
PART99.EXE 747 LZEXE V0.91 or V1.00a 434 LINK V3.69 /EXEPACK 1.088
PART3.EXE 17.051 LZEXE V0.91 or V1.00a 33.080 LINK V3.69 /EXEPACK 86.048
PART10.EXE 15.611 LZEXE V0.91 or V1.00a 22.264 LINK V3.69 /EXEPACK 31.120
PART13.EXE 21.003 LZEXE V0.91 or V1.00a 36.954 LINK V3.69 /EXEPACK 61.008
PART16.EXE 9.691 LZEXE V0.91 or V1.00a 14.250 LINK V3.69 /EXEPACK 54.050
PART17.EXE 35.868 LINK V3.69 /EXEPACK 75.040 N/A 75.040
PART4.EXE 39.176 LINK V3.69 /EXEPACK 109.216 N/A 109.216
PART18.EXE 3.339 LZEXE V0.91 or V1.00a 3.422 LINK V3.69 /EXEPACK 4.752
PART21.EXE 19.739 LZEXE V0.91 or V1.00a 28.412 LINK V3.69 /EXEPACK 111.872
PART95.EXE 6.811 LZEXE V0.91 or V1.00a 9.282 LINK V3.69 /EXEPACK 13.344
PARTS.EXE 11.208 LINK V3.69 /EXEPACK 10.928 N/A 10.928
PART15.EXE 120.054 LINK V3.69 /EXEPACK 206.042 N/A 206.042
PARTV.EXE 108.842 LINK V3.69 /EXEPACK 131.280 N/A 131.280
LOADER.EXE 26.347 LZEXE V0.91 or V1.00a 40.144 LINK V3.69 /EXEPACK 50.096

Les fichiers extraits sont peu parlant, et certains sont même totalement illisibles. Heureusement, il existe un utilitaire unp.exe, qui sous DOS, permet de décompresser quasi n'importe quelle compresseur d’exécutable.

Les fichiers sont, en grande majorité, compressés via l'utilitaire LZEXE pour réduire la taille totale de la démo, sans devoir compresser les assets, d'autres via l'outil de LINK de microsoft.

Après avoir décompressé les fichiers (via unp.exe), on constate que certains fichiers sont sont plus lourd que les fichiers “sources” (PART99.EXE et PARTS.EXE).

Seuls ceux qui sont uniquement compressé via LINK V3.69 /EXEPACK, ne sont pas compressés deux fois.

La raison de cette double compression n'est pas très clair, car certaines parties sont compressées deux fois avec un résultat “pire” que simplement via la compression LINK (PART99.EXE et PARTS.EXE).

On peut supposer qu'il s'agit ici d'Obscurcissement de la démo, ou simplement un choix d'options de script de compilation par “défaut” (/EXEPACK) suivit d'une compression manuelle (LZEXE).

Il faut encore ajouter le “Loader” qui est contiendrait à la fois le “file system” et le serveur de démo [DIS], qui permet de gérer la mémoire, l'accès aux assets, le player de musique.

Nom de Fichier Taille (bytes) Decompressé (bytes) Sources ?
LOADER.EXE 26.315 40.144 C?

Quand on additionne l'ensemble des fichiers extraits (2.372.134 Bytes) et le loader (26.347 Bytes), nous arrivons à un grand totale de 2.398.481 bytes; le fichier “source” UNREAL.EXE ayant une taille de 2.400.825 Bytes; cela fait une différence de 2344 Bytes.

→ On sait, de par la partie 1, que l'index est composé de 97 entrées de 24 Bytes et 12 Bytes de données de “rangement” :

2340 Bytes = (97 * 24 Bytes) + (3 * 4 Bytes)

Classification des Assets

Outre les fichiers exécutable, on retrouve :

  • 20 fichiers .4SR
  • 2 fichiers .BIN
  • 1 fichier “ANIM.FCA”
  • 1 fichier “CHISEL.FCF”
  • 1 fichier “MAGICFNT.FCP”
  • 1 fichier “FONT8.FNT”
  • 20 fichiers .GFX
  • 17 fichiers .PAL
  • 1 fichier “CREDITS.PLL”
  • 5 fichiers .S3M
  • 4 fichiers .TXT
  • 8 fichiers .U
  • 2 fichiers .UFF
back2root/tutoriaux/future-crew-unreal-reverse-engineering-part-2.txt · Dernière modification: 2021/07/14 21:49 de frater