Ys Origin (Windows) - Projet de traduction FR

Des soucis pour hacker votre jeu ? C'est ici qu'il faut exposer votre problème.
tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 21 déc. 2016, 12:21

Bonjour,
Je viens ici suite au conseil d'un utilisateur de Romhacking.net.
Travaillant sur un projet de traduction pour le jeu [Ys Origin] en Français sur le quel la traduction des textes concernant l'histoire est fini, mais sur le quel nous ne trouvons pas les textes concernant les menus d'écran titre / sélection des personnages / détails des objets d'inventaire. Je viens du coup solliciter votre aide pour savoir si vous avez une idée où cela pourrai se trouver.

Merci d'avance !

Exemple des textes non disponible :
Image
Image
Image
Image
Image
Dernière édition par tetsuyaIIDX le 21 déc. 2016, 13:26, édité 1 fois.

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 21 déc. 2016, 12:46

Bonjour tetsuyaIIDX.

Connaissant le formatage des textes puisque tu as traduit tout le reste, il est fort probable que ce soit le même pour ceux-là. Tu devrais chercher par exemple en hexadécimal "Lila Shell" avec le format de texte du jeu dans tous les fichiers en même temps. Si le formatage est le même que pour les dialogues et qu'il n'y a pas de compression, tu trouveras ça en un rien de temps. Sinon, il est possible que les textes de l'écran titre soient en fait des images. Les "Lv.", "No Data", "Play Time" aussi.

Avatar de l’utilisateur
pinktagada
Mauvaise ROMhackeuse débutarte
Messages : 2144
Inscription : 10 mars 2010, 10:39
Localisation : Midgard
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar pinktagada » 21 déc. 2016, 14:22

Oh putain, ça c'est une bonne nouvelle de ouf ! C'est OK pour la version steam ? Vous avez besoin de beta testeurs ? Y'a moyen d'avoir un patch de triche pour diminuer les HP des streums histoire de rendre ça plus rapide ? :D J'ai une beta qui touche à sa fin, il me reste ptet une semaine dessus. Et après je vais avoir un peu de temps :D Et surement 15 brouzoufs à investir ^ ^

Comme dit Ryle, c'est sûrement qqpart avec le même encodage. Avec un coup de cul monstre, c'est en ascii ? UTF-8 ? J'ai souvent vu ça dans les jeux PC. Si c'est le cas, ça va être super facile de tout trouver, méthode donnée par Ryle.

Au passage, si vous êtes au parfum de rouvelles traductions PC, faut pas hésiter à m'en parler, j'ai pas le temps de tout suivre, et je ne sais pas trop où chercher. Mais la page fbk de la TRAF ne demande qu'à être alimentée en nouveau patchs :)

Bon courage pour la suite ! J'ai A-DO-RÉ les Ys :D
MAIS Y A PLUS DE PLACE A L'ÉCRAN! NON DE MERDE MÊME SI JE TE DONNE TOUS LA PLACE DU MONDE DANS LA ROM!! TU POURRAIS PAS EN FAIRE AFFICHÉ PLUS A L'ÉCRAN!!!
Un grand philosophe...

Image

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 21 déc. 2016, 15:20

Pour la petit histoire je bosse principalement sur la création du patch / du site / des éditions d'images du jeu.
Pour les textes on un logiciel qui décompile les fichier .xso de Falcom ( le créateur du jeu ) et qui permet de recompiler ensuite. Du moins c'était comme ça au début car la traductrice n'a pas de grosse compétences en informatique.
Je l'ai rejoint en cours de route pour l'aider ( sur les images au début ) et du coup on s'attaque maintenant au texte restant. Voilà pour la petite histoire.

D'ailleurs au passage si vous voulez voilà le lien du site : http://www.ys-origin.fr/

Sinon avec vos indications données j'ai trouver les textes des inventaires... Par contre toujours impossible de mettre la main sur les textes de l'écran titre.
Pour les "Lv.", "No Data", "Play Time" j'ai penser pareil que toi RyleFury. Ça utilise bien des images ( l'écran titre je pense pas par contre ), mais ça utilise des parties d'images donc il me faudrait trouver les fichiers correspondant qui utilise justement ces images... ( je sais pas si j'ai été bien clair )

Sinon pour finir, une fois Ys Origin fait, on devrait s'attaquer à Ys I et II ( tant qu'a suivre la chronologie ! )

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 21 déc. 2016, 15:51

Bon t'as déjà trouvé un bon nombre de textes :)

Ne pense pas que puisque les textes de l'écran titre ressemblent plus à du texte formaté qu'à des images, c'est forcément du texte. Je suis tombé sur des images qui avaient exactement la même police que les textes de base sur pas mal de jeux que j'ai hackés. Ce que tu devrais faire pour le moment c'est tenter d'extraire la totalité des images du jeu, au moins comme ça tu auras ta réponse. Si tu ne sais pas du tout comment faire, je peux tenter de le faire moi-même dans la semaine.

Et non désolé mais j'ai rien compris à ta phrase sur les fichiers image.

EDIT : Tu n'aurais pas quelques screens du jeu en français à nous montrer, pendant qu'on y est ? ^^

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 21 déc. 2016, 18:26

Avec une image se sera plus parlant (il existe 2 autres images, mais c'est simplement des tailles et formes de polices différentes ) :
Image

En fait les textes sont affichés grâce à cette images ( Pour les textes "Lv.", "No Data", "Play Time" ) et il me faudrait trouver la correspondance... Mais la je n'ai vraiment pas assez de connaissance en hack pour ça...

Ensuite j'ai bien réussi à avoir toutes les images du jeu.
Après a tu le jeu pour voir tout ça ?

PS : Pour les screens je vais faire ça avec une petite comparaison de la version anglaise.

EDIT : Voilà quelques screens ;)
:
Image
Image
Image
Image
Image

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 21 déc. 2016, 19:39

Bien, je vois. Quand je parlais d'image, c'était une image brute correspondant aux phrases entières, comme tu l'as déjà fait avec le reste des images. Ici l'image que tu as est tout simplement une police spécifique au jeu. Cette image est utilisée en utilisant du texte formaté, au même titre que les dialogues que vous avez traduits. D'après ce que j'ai compris cependant, les dialogues doivent utiliser une police de base installée sur le pc, pendant que d'autres textes utilisent des polices spécifiques au jeu, donc le format du texte pourrait très bien être différent.

Je voulais vérifier la qualité de la traduction avec les screens. Je n'en suis pas certain vu le peu que tu me montres, mais la traductrice a l'air d'avoir porté pas mal d'attention à cette qualité, donc je suis prêt à t'aider. J'ai le jeu dans tous les cas, donc je ferai tout ce qu'il faut pour te trouver ce qu'il te manque dans les jours qui suivent. J'aimerais que tu me dises exactement ce qu'il te manque si tu es prêt à me donner le feu vert pour que j'aide au projet.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 21 déc. 2016, 21:17

Ok, je vois ou tu voulais en venir ^^.
Alors oui je te confirme que la traductrice elle porte vraiment toute son attention à ce jeux. Elle est très maniaque XD. ( Un peu comme moi si les images )
Après toute aide est la bien venue évidement !

Pour te rendre compte un peu plus de la chose, une première version ( bêta évidement ) du patch va être disponible vers le 1er Janvier. Il manquera évidement pas mal de texte ( comme ceux vue au dessus ) et les "Notes" qui répertorie toutes les infos du jeu qui arriverons dans le patch suivant.

Au niveau de la police d'écriture celle des textes ont l'a trouvé ( car elle nous pose problème au niveau des accents, du coup des modifications ont été faites dessus ). Après ça va je m'y connais quand même pas mal en informatique, du coup j'assimile vite le truc. Donc a force de persistance je pense y arriver un jour XD.

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 21 déc. 2016, 21:36

tetsuyaIIDX a écrit :Après ça va je m'y connais quand même pas mal en informatique, du coup j'assimile vite le truc.

L'informatique est tellement vaste que ça ne veut rien dire ça. Si le hack t'intéresse, tu devrais commencer par apprendre l'assembleur x86 pour pc et de savoir utiliser un débuggeur (genre IDA) qui te permet de trouver les choses les plus subtiles. Maîtriser ces deux choses revient à savoir faire un grand nombre de choses.

Donc tu es en train de me dire que toutes les polices sont spécifiques au jeu, ok. Dans tous les cas, vu que tu es bien ancré dans le projet, je préfère qu'on procède petit à petit. Si tu as besoin de moi pour trouver un truc, tu me le dis avec toutes les infos que tu connais déjà et je te trouverai l'élément en question pour que tu puisses le modifier. T'as énormément de moyens de trouver les éléments, en commençant par chercher à l'aide d'astuces, en passant par l'élimination et en finissant par le débuggage. Donc maintenant tu sais que je serai à ta disposition tant que tu auras besoin de moi, à toi de voir.
Dernière édition par RyleFury le 22 déc. 2016, 09:46, édité 2 fois.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 21 déc. 2016, 22:17

Je voulais plutôt dire par la que je touche un peu a tout dans le domaine. Je n'ai jamais vu tout ce qui est assembleur et debug, ça peut être intéressant. Donc oui pour les dernière partie qu'il me reste ( trouver donc ces fameux texte et pourquoi pas peaufiner encore plus loin ) si tu peux me filer un coup de mains dés que tu as le temps ça me sera d'une grande aide et je t'en remercierai.

En attendant je vais essayer d'approfondir encore plus mes recherches.

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 22 déc. 2016, 01:45

Tous les textes restants sont placés dans le fichier exe.

Par contre, j'ai la version steam qui est bien protégée. Impossible d'effectuer le moindre debuggage avec et dès que je modifie la moindre valeur du fichier il ne veut plus se lancer. On dirait que ça vérifie un checksum. Les pointeurs des textes sont aussi introuvables pour le moment. Il est possible qu'ils soient définis directement en asm ou qu'ils soient relatifs. Quoi qu'il en soit, je peux pas tester grand-chose à cause de Steam malheureusement. Les fichiers externes peuvent par contre être modifiés sans problème. Ça reste problématique ça :/

Au final la version non-DRM traduite par les fans en anglais était moins casse-burnes.

EDIT : Il y a la version GOG sinon qui n'est pas protégée. On devrait se baser sur celle-ci. Pourquoi je prends sur Steam déjà ? Ah oui à cause de leurs prix super bas pendant les soldes...

EDIT2 : Bien, je teste avec le version de GOG et les pointeurs sont bien définis en ASM. En gros, tout est faisable avec cette version ;)

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 22 déc. 2016, 03:46

Bon je recrée un message pour les détails.

Pour commencer la version GOG est indispensable, oublions la version Steam, on ne peut pas y toucher car on doit modifier le fichier exe. Tu trouveras tous les textes manquants dans ce fichier très facilement. Je vais commencer par t'expliquer la structure d'un fichier exécutable pour que tu puisses travailler toi-même dessus.

Le fichier exécutable que tu lances pour jouer est le fichier principal du jeu. Il est composé de plusieurs parties et toutes ces parties sont copiées directement dans la RAM de ton système. Les parties principales que ce fichier contient sont :

- Une partie assembleur qui correspond au programme principal et des fois la totalité du programme. C'est elle qui va tout diriger. Cette partie porte l'étiquette ".text".
- Une ou plusieurs parties comportant les constantes ou variables principales du programme. Ces parties ne comprennent donc que des données brutes comme des valeurs numériques entières ou à virgule flottante ou du texte. Ces données peuvent être seules ou dans des structures qu'on appelle aussi des tables. Ces valeurs ou tables sont toujours pointées par un ou plusieurs pointeurs définis dans cette même partie ou dans la partie assembleur, ou encore dans des fichiers externes même si c'est plus rare. Ces pointeurs peuvent aussi faire partie de tables qui sont elles-mêmes pointées.

Ici on a besoin des textes au format ASCII (donc le plus simple) et de leur pointeur pour modifier leur longueur comme on le veut. Plusieurs problèmes surviennent :

- Dans un fichier exécutable, il y a une règle très importante, c'est de ne JAMAIS changer de données de place, sauf si on sait ce que l'on fait. En gros ici, la seule chose qu'on pourra changer de place, ce sera les textes.

- Si un texte est plus grand que celui de base, il faut trouver un autre endroit où le stocker dans le fichier. Il y a la possibilité d'augmenter la taille du fichier et d'allouer le nouvel espace dans la RAM, mais ça peut s'avérer compliqué. Ici je pense que ce ne sera pas nécessaire. Tu dois juste trouver une ou plusieurs zones remplie de zéros dans les parties .data ou/et .rdata pour stocker ton nouveau texte en prenant toujours en compte l'offset du pointeur dans la zone où tu places le nouveau texte. Il y a souvent des zones remplies de zéros, même si quelques fois une zone comme celle-ci est en fait utilisée. Il faut effectuer quelques tests derrière quand même pour s'assurer que ça ne bug pas.

- Il faut trouver les pointeurs. Les pointeurs ne pointent pas dans le fichier exe mais directement dans une adresse dans la RAM. Si par exemple tu trouves le texte à l'adresse 0xF80000, le pointeur ne sera pas 0xF80000, il y aura un offset à prendre en compte pour connaître l'adresse dans la RAM. Dans le header du fichier exe, il y a les adresses virtuelle (RAM) et physique (fichier exe) de chaque partie. Adresse virtuelle - adresse physique = offset. Bon ici il faut ajouter 0x400000 en plus et je n'expliquerai pas pourquoi. J'ai déjà décodé ça pour toi mais si ça t'intéresse tu peux te renseigner facilement sur le net par rapport à ça.

---------------------------------------------------
.text

Plage d'adresses dans le fichier exe

0x0000400 -> 0x208800

.rdata

Plage d'adresses dans le fichier exe

0x208800 -> 0x23C600

Offset ROM -> RAM

+ 0x401800

.data

Plage d'adresses dans le fichier exe

0x23C600 -> 0x275200

Offset ROM -> RAM

+ 0x401A00
---------------------------------------------------

Tu trouveras les textes dans les parties .rdata et .data. Prenons "New Game" qui est stocké à l'adresse physique 0x2284F4. Tu ajoutes l'offset pour connaître la valeur de ton pointeur. Ici on est dans la zone .rdata, donc la valeur du pointeur sera 0x629CF4. Il ne reste plus qu'à trouver ce pointeur. On le trouvera soit dans cette même zone, soit dans la zone assembleur. Ce pointeur est introuvable dans la zone .rdata, il doit être donc défini en assembleur par une instruction. Ici avec les instructions x86 c'est extrêmement simple. Tu connais le little endian j'imagine ? Tu dois chercher la valeur inversée octet par octet. L'instruction qui nous intéresse ici est une instruction "mov", elle peut être codée par plusieurs valeurs (0xB8 jusqu'à 0xBF) suivie par la valeur du pointeur en little endian. Donc on cherche la valeur B8 F4 9C 62 00 avec le masque F8 FF FF FF FF. On trouve BA F4 9C 62 00 à l'adresse physique 0x143D0C.

Tu as peut-être un minimum de connaissances là-dessus. J'espère que tu intégreras tout comme il le faut, et si tu as des problèmes, n'hésite pas à venir m'en parler.
Dernière édition par RyleFury le 22 déc. 2016, 10:25, édité 1 fois.

Avatar de l’utilisateur
pinktagada
Mauvaise ROMhackeuse débutarte
Messages : 2144
Inscription : 10 mars 2010, 10:39
Localisation : Midgard
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar pinktagada » 22 déc. 2016, 08:09

On a perdu Lyan mais on a gagné Ryle XD Ceci dit, il manque les screenshot avec les couleurs dedans pour que l'illusion soit parfaite ...

sinon, pour le new game, ect... je pense que y'a de grandes chances que ce soit graphique.
MAIS Y A PLUS DE PLACE A L'ÉCRAN! NON DE MERDE MÊME SI JE TE DONNE TOUS LA PLACE DU MONDE DANS LA ROM!! TU POURRAIS PAS EN FAIRE AFFICHÉ PLUS A L'ÉCRAN!!!
Un grand philosophe...

Image

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 22 déc. 2016, 09:33

Si t'avais lu le pavé un peu lourd pour quelqu'un qui ne fait pas de hack t'aurais vu je cite :

RyleFury a écrit :Tu trouveras les textes dans les parties .rdata et .data. Prenons "New Game" qui est stocké à l'adresse physique 0x2284F4.

Donc pas d'image, que du texte, non de dieu xD
En fait, j'ai téléchargé le logiciel d'extraction de ressources de jeux Falcom et ça extrait la totalité des images sans lever le petit doigt. Il avait déjà tout dès le départ. Il n'a juste pas fait attention au fichier exécutable. J'avais fait la même erreur avec Atelier Iris à l'époque quand j'avais commencé !

tetsuyaIIDX, à mon avis, tu devrais sortir une bêta seulement lorsque tout sera traduit en entier et que tu auras testé le jeu entièrement avec la traductrice. Tu devrais penser à un logiciel comme Antidote pour corriger les coquilles restantes aussi. Votre traduction m’intéresse beaucoup, tu peux donc compter sur moi en plus de pinktagada pour participer à la bêta à condition que toute la traduction soit effectuée avant.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 22 déc. 2016, 13:52

Pour le cas des versions Steam et GOG, le problème est que l'on souhaite aussi le proposer aux joueurs Steam ( se serait dommage de ne pas leurs en faire profiter ). Après je comprend tout à fait le problème que ça pose sur cette plateforme...
Sinon pour le reste autant je comprends certains point dont tu parles, mais ne connaissant pas d'outil approprié pour ce travail je me sens un peu démunie. Tu aurais quelques indications à ce niveau ?

Sinon pour le fait de proposer la version bêta c'est simplement pour commencer a faire connaître le travail sur ce jeu. L'histoire étant déjà totalement traduite ( elle vérifie juste quelques points restant ), ça nous servira surtout à voir les retours des joueurs.
Je n'ai aucun doute sur le fait que tu as beaucoup plus d'expérience ( étant notre premier projet à la traductrice et moi même ) et que tes conseils sont très avisé. Du coup pour des prochaines productions ( sur les autres jeux Ys ) on fera surement de cette manière. Mais je pense que sur celle ci on reste sur l'idée que l'on s'est fixé.

De plus avec l'arrivé de Ys Origin sur console PS4 et PS Vita on souhaiterai aussi montrer que notre projet existe pour les joueurs PC. ( Dot Emu sera l'éditeur, et quand on vois ce qu'ils ont fait de la traduction sur mobile de Ys I et II ... )

J'espère que je n'ai pas ruiné tout espoir que tu avais pu te faire sur nous...

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 22 déc. 2016, 14:08

Bien sûr que non, vous faites comme vous le voulez avec votre projet, je suis juste là pour vous aider comme je le peux :) Ne prends pas mal ce que je te dis surtout. Je participerai juste à la bêta le jour où tout sera traduit.

Le seul outil nécessaire est un éditeur hexadécimal. Si tu as du mal sur certaines parties que j'ai énoncées, je peux te donner plus de détails, ça ne me dérange pas. Lis bien et fais tes propres tests. Si t'es débrouillard, tu devrais t'en sortir. En tant que hackeur, ce serait cool que tu apprennes et que tu fasses les choses par toi-même. Tu as aussi des tutos pour commencer le hack sur le site de la TRAF. Je pense que ce serait une bonne idée de commencer par là, sinon.

Le problème avec la version Steam est compliqué... Certains jeux Steam se lancent à l'aide du fichier steam_api.dll et pour lancer ce fichier il faut que le fichier exe soit modifié. Je pense que c'est une mesure DRM pour empêcher de le lancer sans Steam. Le fichier devient protégé car on ne peut plus modifier la moindre donnée à l'intérieur. De plus, je n'avais trouvé aucun pointeur dans la zone ASM, et IDA (le desassembleur/débuggeur) ne me trouvait pas la majeure partie de la partie ASM et il m'a été impossible d'effectuer le moindre debuggage. Je crois qu'elle est chiffrée ou compressée donc... En gros c'est la merde, la grosse merde avec ce fichier. Il y a la possibilité de remplacer ce fichier exe à la con par le fichier venant de GOG, mais ce serait totalement illégal, donc je ne te conseille pas de le faire. A moins que quelqu'un ait une solution à ce problème, je pense que le patch que tu devras proposer pour les joueurs Steam ne pourra pas inclure la traduction de ces textes malheureusement.

Si je peux encore te donner quelques conseils par contre, tu devrais mettre un bon nombre de screens sur le site du patch.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 29 janv. 2017, 10:48

Salut !

Bon voilà un petit moment que je ne suis pas passé entre les fêtes, le boulot et tout le reste...
Donc on a sorti une première version du patch (qui a plutôt de bon retour. ouf...). Mais maintenant je m'attaque au dernier point qu'il me reste à voir. J'ai faits l’acquisition il n'y a pas longtemps de la version FreeDRM (dans l'humble store) ce qui me permet du coup de travailler sur l’exécutable du jeu.

Mais là arrive du coup ma question... ou plutôt une demande.
Pour éditer le fichier je dois passer par l'hexadecimal. Mais comment dois-je procéder pour éditer le texte, car modifier ça a l'air de fonctionner, mais rajouter du texte non. Je sais que tu m'a parler de pouvoir déplacer le texte. Mais tout ça reste encore assez flou... Si tu as des détails en plus qui pourraient m’aiguiller je te serais très reconnaissant. Je vais essayer aussi de trouver quelques tutoriels sur internet qui parle de ce genre de manipulation et regarder comme tu l'as dit sur les tutos du site de la TRAF.

==

Pour ce qui est du site internet, c'est vrai que les screen je n'y ai pas pensé... Enfin je continue à y travailler dessus donc je vais en rajouter, merci pour l'idée :)

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 29 janv. 2017, 11:09

Avant que je t'explique les choses plus en détail, j'aimerais savoir si tu as des notions de programmation et si tu connais les pointeurs. Il est plus facile d'appréhender le hacking lorsque tu connais déjà un langage de programmation.

J'ai regardé un peu les commentaires sur Steam et Nanami a l'air d'être très perfectionniste, donc j'ai hâte de jouer à votre version.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 29 janv. 2017, 12:03

Niveau prog je m'y connais pas des masses. Enfin je connais beaucoup tout ce qui est HTML, PHP, Javascript, Jquery et autres sans trop de problème. Je de petites notion sur le python, Java, C#. Mais par contre aucune idée des pointeurs. Je vais me renseigner la dessus.

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 29 janv. 2017, 12:22

Lis bien les guides sur la TRAF, vaut mieux commencer par là. Oublie tout ce qui est compression, c'est complètement inutile pour toi ici. Ce qui est le plus important est le système héxadécimal, la notion de little/big endian (pour Ys Origin tu es en little endian) et les pointeurs avec le texte. Je t'expliquerai plus en détail après ça.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 29 janv. 2017, 17:11

Ok, donc j'ai lu pas mal d'infos. Donc tout ce qui est little et big endian j'ai à peu près compris le truc. Par contre pour les pointeurs même avec les tutos de la TRAF j'ai encore un peu de mal donc je vais continuer à chercher sur internet. Par contre il y a cette histoire de dictionnaire que je ne comprends pas trop... Tu aurais des infos là-dessus ?

Au niveau des pointeurs j'essaie de comprendre vraiment comment ça fonctionne et comment les déplacer dans une zone vide ( que j'ai trouvé ), mais là j'ai encore du mal. Bon j'en suis vraiment au début donc je me doute bien que ça ne va âs être facile. Mais si je cherchais la facilité j'aurais déjà abandonné.

J'ai essayé déjà une petite modification qui change les informations du personnage ( remplacer STR par FOR, pour "force"... ect... ) et j'y suis plutôt bien arrivé. Bon vu que ça correspond exactement au nombre de caractère forcement ce n'est pas compliqué... Mais par exemple pour Lv. (level) pour le remplacer par Niv. (Niveau) là c'est plus compliqué et c'est bien cette histoire de pointeur ( si j'ai bien compris ) qui faut exploiter.

Bon je me parle un peu tout seul pour mes dernières phrases. Mais j'aimerai que tu me dises si je pars dans le bon sens pour mes recherches.

Ma manière n'est pas forcément la meilleure pour se lancer là-dedans, mais vu que j'avance petit à petit je pense que ce n'est pas trop mal.

Avatar de l’utilisateur
RyleFury
Maître en Flood
Messages : 287
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar RyleFury » 29 janv. 2017, 18:24

Laisse tomber pour le dictionnaire, ici ton texte est décompressé et dans le format le plus simple, l'ASCII qui est clairement visible dans un éditeur héxadécimal.
Je t'explique vite fait ce qu'est un pointeur et son rôle. Habituellement, le pointeur est une notion que les gens ont du mal à comprendre, et pourtant c'est tout con...

Dans un exécutable, tu as les instructions du programme, des chaînes de caractères qui sont les textes là, des variables et constantes. Lorsque le programme a besoin d'une donnée quelconque, il a besoin de son adresse dans la RAM pour la trouver. A partir de là, il a deux choix possibles pour obtenir la donnée :

- Soit en prenant une valeur située à une autre adresse. Cette valeur correspond à l'adresse dans la RAM où est placée la donnée requise. Cette valeur contenant une adresse est appelée un pointeur, car la valeur pointe vers une adresse. Les adresses et pointeurs sont en 32 bit ici, soit 4 octets. Il y a donc un pointeur par texte.

- Soit en plaçant l'adresse de la donnée directement dans l'instruction qui va prendre cette adresse.

Maintenant nous avons besoin d'effectuer le cheminement inverse ici. On a le texte, et on cherche la valeur qui pointe vers la première lettre de ce texte. Ce qui indique la fin d'un texte est le caractère de fin de chaîne de caractères "\0" qui est représentée par la valeur 0x00.

Avant d'aller plus loin, il faut savoir un truc très important. Je vais essayer d'expliquer les choses simplement. Les données principales traitées par le programme principal par le CPU sont stockées dans la RAM du système au préalable. Sauf qu'ici, quand tu ouvres ton fichier exécutable, les données sont stockées dans le disque dur. Lorsque tu lances le programme, la plupart des données de ce fichier sont automatiquement copiées dans la RAM du système.

Tu as donc l'adresse dans le fichier exécutable et l'adresse dans la RAM. Quand tu regardes l'adresse avec un éditeur hexadécimal, tu regardes l'adresse dans le fichier exécutable, or ce qu'il nous intéresse ici est l'adresse où est placée la donnée dans la RAM. On peut le savoir en vérifiant les informations au début du fichier exécutable, dans ce que l'on appelle le "header" du fichier. Un "header" contient des informations sur un type spécifique de fichier. J'ai déjà décodé ça pour toi comme je te l'avais expliqué dans mon autre message :

---------------------------------------------------
.text

Plage d'adresses dans le fichier exe

0x0000400 -> 0x208800

.rdata

Plage d'adresses dans le fichier exe

0x208800 -> 0x23C600

Offset Fichier exe -> RAM

+ 0x401800

.data

Plage d'adresses dans le fichier exe

0x23C600 -> 0x275200

Offset Fichier exe -> RAM

+ 0x401A00
---------------------------------------------------

Ici tu as 3 zones qui nous intéressent de copiées du fichier exécutable vers la RAM. La zone ".text" contient toutes les instructions du programme, pendant que les deux autres zones contiennent les différentes variables, constantes et textes. Par exemple, la donnée placée à l'adresse 0x220000 dans le fichier exécutable fait partie de la zone ".rdata". Pour obtenir l'adresse de cette donnée dans la RAM, tu utilises l'offset affiché ici, donc 0x220000 + 0x401800 = 0x621800.

Maintenant revenons à ce qui nous intéresse. On va chercher la valeur qui pointe vers l'adresse de "New Game".

- On prend l'adresse de la première lettre dans le fichier exécutable : 0x2284F4.
- On cherche la zone dans laquelle est placée cette adresse : ".rdata".
- Pour obtenir d'adresse dans la RAM, on ajoute l'offset " Fichier exe -> RAM" : 0x2284F4 + 0x401800 = 0x629CF4.
- On cherche un pointeur associé au texte. Pour ça on convertit l'adresse où est stockée la première lettre du texte dans la RAM (0x629CF4) en Little Endian sous une valeur de 32 bit : 0x629CF4 sera donc F4 9C 62 00.

- On cherche cette valeur partout dans le fichier. Elle devrait être stockée dans la même zone que le texte. Ici ce n'est pas le cas car le texte n'a pas de pointeur associé. C'est plutôt rare mais ça arrive. Si le texte n'a pas de pointeur associé, alors il ne reste qu'une possibilité (y en a d'autres mais je vais pas t'embrouiller), l'adresse qui pointe ce texte est directement placée dans une instruction. Les instructions sont placées dans la zone ".text".

- Et effectivement, on trouve la valeur F4 9C 62 00 à l'adresse 0x143D0D du fichier exe. Il faut juste vérifier que cette valeur vient bien d'une instruction valide. Ici, l'instruction utilisée est l'instruction "mov", elle est codée par la valeur BA F4 9C 62 00. Le premier octet représente le "code opérateur", en gros c'est un index pour représenter la fonction qu'effectue cette instruction. Le reste des données dépend du "code opérateur".

Codes opérateur B8 à BF : Instruction "mov" -> Place une valeur immédiate en little endian (F4 9C 62 00 donc 0x629CF4) dans un registre du CPU pour la traiter ensuite.

En gros, quand tu trouves la valeur d'un pointeur dans la zone .text sur PC, il faut s'assurer d'avoir la valeur 0xB8 à 0xBF à l'octet d'avant.

- Maintenant qu'on a la valeur qui pointe le texte à l'adresse 0x143D0D du fichier exe, on va pouvoir changer ce texte de place. Il faut s'assurer de le déplacer dans l'une des 2 zones ".rdata" ou ".data". Le plus simple est de trouver une zone remplie de 0 qui semble inutilisable à la fin d'une zone comme ".rdata" ou ".data". Et effectivement, je trouve une petite zone de 0 à la fin du ".rdata" à l'adresse 0x23C430 du fichier exe. On va donc placer le "Nouvelle partie" ici.

- Il ne reste plus qu'à modifier la valeur qui pointait l'ancien texte pour qu'il pointe celui-ci à la place. On va donc convertir la nouvelle adresse dans le fichier exe en adresse dans la RAM : 0x23C430 + 0x401800 = 0x63DC30, puis cette adresse en little endian : 30 DC 63 00.

- On va à l'adresse 0x143D0D du fichier exe où est stockée l'ancienne adresse et on remplace F4 9C 62 00 par 30 DC 63 00. On lance le jeu et TADA !

Image

Normalement, tout devrait être fait comme ça dans le fichier exe. Je crois qu'il y a peu de textes à modifier là-dedans. Si c'est le cas, tu peux tout faire à la main dans l'éditeur hexadécimal. Là j'ai plutôt bien détaillé, mais ça fait pas mal d'informations, alors si t'es paumé sur une explication, on verra ça ensemble. C'était une explication sur les bases des bases des bases du romhacking, fiou...

Avatar de l’utilisateur
Pixel
Codeur à l'irc dormant
Messages : 1946
Inscription : 17 avr. 2002, 17:30
Localisation : San Jose
Contact :

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar Pixel » 31 janv. 2017, 07:55

Petit apparté: Steam protège de base en effet les binaires de ses jeux, pour des simples soucis de corruption. Par contre, à part si le jeu a une protection contre la triche (ça: https://en.wikipedia.org/wiki/Valve_Anti-Cheat), les DLLs de triche classique peuvent modifier le binaire à la volée lors du chargement. Les moteurs de triche classiques sont souvent plus faciles à utiliser que de la modification à la mano dans le binaire.

http://www.cheatengine.org/ par exemple. Ou de manière plus générale, https://github.com/stephenfewer/ReflectiveDLLInjection
pixel: A mischievous magical spirit associated with screen displays. The computer industry has frequently borrowed from mythology. Witness the sprites in computer graphics, the demons in artificial intelligence, and the trolls in the marketing department.

tetsuyaIIDX
Nouveau Floodeur
Messages : 10
Inscription : 21 déc. 2016, 12:15

Re: Ys Origin (Windows) - Projet de traduction FR

Message non lupar tetsuyaIIDX » 31 janv. 2017, 10:00

Merci RyleFury pour toutes les infos ! Je vais prendre le temps de bien assimiler toutes les infos que tu m'a donné.
Et merci Pixel pour ton aparté :) c'est toujours bon à savoir.


Revenir vers « Discussions sur le hacking »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités