Vous avez sûrement déjà remarqué que la plupart des nouveaux jeux contiennent des fichiers dépassant les 700 Mo qui doivent être extraitent avant de les ripper
définition
Comment fonctionnent elles?
FAT TABLE
NAME TABLE
SONIX KNOWED EXTENSION FILE FINDER
Trouver la FAT TABLE
SPY TABLE
Définition
Le plus difficile pour les newbie est de comprendre comment ces fichiers fonctionnent
Si je prends l'exemple d'un fichier ZIP, vous comprendrez facilement qu'un ZIP est un gros fichier qui regroupe d'autres fichiers et répertoires. (Oubliez juste le fait que les ZIP sont compréssé pour cet exemple)
Une BIG FILE fonctionne pareil. A l'intérieur vous trouverez plein de fichiers et de répertoires.
Comment fonctionnent elle?
Les Big file sont toujours basées sur une FAT TABLE (ADDRESSES TABLE).
L'utilité de celle-ci est de référencer avec exactitude la position de chaque fichiers à l'intérieur de la big file.
Le principal problème est que la FAT TABLE peut être partout et sa structure peut être de n'importe quelle forme !!!!
Ici le logiciel SONIX KNOWED EXTENSION FILE FINDER peut nous aider. J'expliquerai plus tard.
D'une facon générale, ces FAT TABLE auront toujours au moins 4 bytes vous donnant L'ADRESSE DE DEBUT d'un fichiers dans la big file.
Cela signifie que si vous recherchez cette adresse dans la big file vous serez en fait au début d'un nouveau fichier.
Aprèes cela vous pouvez avoir avant ou apès ces 4 bytes d'autres groupes de 4 bytes qui vous donneront la taille ou l'adresse de fin du fichier mais ils peuvent aussi vous donner d'autres informations comme un lien vers la NAME TABLE ou la qualité du son....
Prenez note que les adresses ou les tailles ou toute autre information sont souvent $ony reversed !!
Cela signifie que :
04030201 est en fait 01020304
FABE02FF est en fait FF02BEFA
L'utilité de la NAME TABLE est de donner le nom de chaque fichiers.
Cette table peut être partout mais elle est un peu plus facile à trouver si vous regardez la big file avec WINHEX et que vous commencez à voir des NOM DE FICHIERS en clair , vous avez 99% de chances de l'avoir trouvé!
Mais faites attention, des fois vous ne la trouverez pas (comme dans WRC), alors le meilleur moyen est d'utliser des NOMS GENERIQUES (comme FILE01,FILE02, ...) et des fois l'ordre de la FAT TABLE ne sera pas la même ke celle de la NAME TABLE (dans ce cas une information vous donnera le lien entre les 2).
Une dernière chose, des fois dans la NAME TABLE, les programmeurs ont inclus DES REPERTOIRES ! Comment les repérer? La plupart du temps un REPERTOIRE est un nom sans EXTENSION ou devant vous trouverez [ ou quelque chose comme ca .
SONIX KNOWED EXTENSION FILE FINDER
pour nous aider à trouver la FAT TABLE, il y a 2 facons.
La plus facile est d'utiliser le SONIX tool. Il va scanner la big file à la recherche de code connus et vous dire qu'une possibilité de PSS, VAG, ... fichier a été trouvé ....... Notez ces adresses vous en aurez besoin plus tard !
Une facon un peu plus dur est de chercher avec WINHEX dans la BIG FILE des 000000000000 chaînes hexa. Une fois trouvé, cherche toutes les valueur $h0 avec un autre héditeur hexa , ca peut être le début d'un nouveau fichier.
Pourquoi ???Parce que la plupart du temps , PS2 CODER optimisent le processeur en mettant les fichiers tous les 2048 bytes (je crois que c'ets pour une optimisation du buffer). Ainsi quand un fichier est inférieur à un a multiple de 2048, ils vont compéter le reste avec les valeurs $h0.
Trouver la FAT TABLE
Maintenant que vous avez rpis note de vous adresses trouvés, la seconde difficulté est de trouver la FAT TABLE. Ou peut elle être ?
Il y a encore 2 moyenss :
La plus facile est d'utiliser le SPY TABLE finder.
Cet outil basé sur 5 adresses trouvées (utilisez des adresses qui semblent se suivre) va scanner et essayer de les trouver dans un ordre donné .
S'il trouve quelque chose il dira qu'une possibilité se trouve a l'adresse .....
Prenez note que c'ets peu être la FAT TABLE, peu être pas !
Prenez note aussi que vous ètes peu être au centre de address table, vous devez utiliser WINHEX et vérifier la position trouvée et ensuite essayer ce que vous avez trouvé ...( Cela signifie essayer de comprendre la structure de la FAT TABLE).
La seconde facon est manuelle,cherchez dans le fichier avec WINHEX tous les fichiers et cherchez les adresses trouvées (rapellez vous que dans la FAT TABLE, les adresses sont $ony reversed ! Pourquoi ? parce que PS2 CODE utilisent des LONG variable ou des LONG variable reverse byte).
Quand vous en aurez trouvé une, essayer de trouver manuellement la seconde . Si elle est prête de la 1ere,essayer la 3e et ainsi de suite ..
Si tout se passe bien alors vous avez tout.
Ou la chercher?
D'abord dans la big file, ensuite dans les fichiers du même répertoire que la big file,
ensuite cherchez dans l'SLES et sinon
PARTOUT
Aujourd'hui il existe des logiciels qui font l'extraction tout seul seullement on est jamais sur de ce qui ressort il est donc preferable de travailler manuellement.Pour ceux qui comprennent un tant soit peu le langage C voici le code source permettant d'extraire les video du fichier MOVIE.dat de mgs2
------------------------------------------------------------------------------
#include
#include
#include
#include
#include
#include
#include
#include
FILE *bigfile_ptr, *output_ptr;//pour associer au fichier ouvert et aux fichiers cree des pointeurs
long size_count; //variable definissant la taille du fichier a extraire
unsigned char Byte1; //variable ou le programme stocke l'addresse hexadecimale
char temp; //variable
void main()
{
printf("\n\n\n\n\n\t Metal Gear Solid Movie.dat extractor"); //apparait au demarrage
printf("\n\t Programmed by DRCD"); //apparait au demarrage
printf("\n\t Press Enter to start extraction"); //apparait au demarrage
temp=getchar();//lit un caractere du clavier
_mkdir("pss");//cree le repertoire
bigfile_ptr=fopen("Movie.dat", "rb");//fichier a ouvrir
_chdir("pss"); //change le repertoire actuel de travail
output_ptr=fopen("Movie1.pss", "wb"); // cree le fichier de sortie
fseek(bigfile_ptr, 169668816, SEEK_SET);//repositionne le pointeur du fichier a la position indiquee c'est le debut du 1re fichier a extraire
while(size_count