Afficher un message
Vieux 28/05/2010, 12h07   #2886 (permalink)
Profil
SiZiOUS
ドリームキャストメンバー
Ancienneté  85%
Ancienneté 85%
 
Avatar de SiZiOUS
 
Date d'inscription: mai 2006
Âge: 39
Pays :
Messages: 914
Téléchargements: 0
Uploads: 0
Merci: 51
Remercié 60 fois dans 30 Posts
Par défaut

Bon, désolé pour le double post.

J'ai trouvé quelque chose d'intéressant. A savoir, le Binary Translator d'Ayla, ne fonctionne pour l'instant que sur la plateforme Dreamcast. En effet, c'est celle que nous maitrisons le mieux et nous avons défini le moyen (ou plutôt c'est Ayla qui l'as fait) le plus efficace de traduire les chaines inclues dans le binaire. Donc de ce côté, pas de soucis. En plus j'ai pu tester son outil et niveau modification, ça fonctionne bien.

Reste la question des binaires Xbox, pour traduire Shenmue II Xbox. Et bien je viens de modifier avec succès le DEFAULT.XBE!



Ici la chaine YN_CANCEL est en fait située à un autre endroit dans le binaire (au passage, normalement il y'a d'écrit "Challenge").

Pour réussir ceci, la technique est quasiment la même que sur Dreamcast, voici comment j'ai procédé:

1 - J'ai tout d'abord commencé par repérer la chaine à modifier dans le binaire. J'ai choisi Challenge car c'est simple à trouver dans le jeu (faut aller parler au mec qui vous propose de faire le jeu du bras de fer).

2 - J'ai ouvert l'outil DEXBE de DeXtrose puis sélectionné mon default.xbe:



3 - Après quelques recherches, j'ai trouvé la chaine dans le binaire dans la section .rdata. L'offset virtuel où se situe la section est donc, d'après DEXBE, à 0x470b80.

4 - J'ai extrais la section .rdata, toujours avec DEXBE. Puis j'ai ouvert le fichier .rdata dans WinHex, je me suis positionné sur Challenge, comme indiqué ci-dessous (en rouge):



On note l'offset: 0xD3D4.

5 - Un rapide calcul pour trouver l'emplacement du pointeur pour cette chaine :

Valeur du pointeur = Adresse de la section + Adresse relative de la chaîne

Soit pour Challenge:

Valeur du pointeur = 0x470b80 + 0xd3d4 = 0x47df54.

Le pointeur est donc référencé par la valeur 0x47df54. On met tout ça en notation inverse (little endian j'crois ou big endian enfin bref vous voyez le truc) 0x47df54 --> 0x54df47

0x54df47 est notre valeur à rechercher dans le default.xbe!

6 - Retournons dans notre default.xbe dans WinHex. On fait Ctrl + Alt + X (Rechercher Chaine Hexa) puis on rentre 0x54df47. Un seul offset ressort: 0x4ea8b0. C'est notre pointeur !

C'est ici que la chaine Challenge est référencée. On peut modifier cette valeur-ci avec un autre offset de chaine. J'ai par exemple choisi YN_CANCEL, à l'offset 0xd4bc, pour faire le test. Donc:

Valeur du pointeur de chaine = 0x470b80 + 0xD4BC = 0x47E03C.

Donc notre nouvelle valeur à écrire à l'offset 0x4ea8b0 est 0x3c0e47 !



7 - Et voilà! Notez que autour de l'offset 0x4ea8b0, vous pouvez voir une sorte de "table" avec tous les offsets de chaines. Oui, c'est ici où elle se trouve

Voilà. Ayla, à toi de jouer
__________________
[big_fury]SiZiOUS, http://sbibuilder.shorturl.com/
SiZiOUS est déconnecté   Réponse avec citation