Touhou Ultra - Modification de l'exe (Résolu !)

Ca marche pas. 6 heures de lutte, et rien, pas d'image, pas de son et une ampoule au pouce? Postez ici vos soucis et conseils, avec un peu de chance quelqu'un connaît la solution!
Répondre
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Salut,
Bon, ça fait faire bientôt 10h que je cherche/tente/rage/réussi des trucs, mais rien de bien fructueux. Voilà mon "problème" :
Je cherche à modifier des valeurs binaire d'un exe, en l’occurrence l'exe d'un touhou pour y implémenter les mode Ultra. Ceux proposé par Nil via patch (Nice Cheat) ne me satisfont pas, d'ou ma volonté de faire mes propres mode Ultra. (double boulette, autobomb, pas de temps sur les boss..etc)
Je connais donc les adresses à modifier, les valeurs d'origines et les valeurs d'arrivées (Grace à Nil). Pas besoin de désassembleur pour tenter d'avoir des bouts de code donc, je sais déjà quoi modifier.

J'arrive à modifier les valeurs en direct via UsaMimi Hurricane et à jouer. Les modifications sont prise en compte, mais pas moyen de sauvegarder. Dès que le Touhou est clo, fin du mode ultra. C'est un peu embêtant. A noter que le logiciel est en full jap', donc il est fort probable que certaine fonction du logiciel m'échappe.
Ensuite, après quelques heures, j'ai tenter avec un éditeur hexadécimal (Hex Editor et OllyDbg en français cette fois). J'arrive à trouver les adresses ainsi que modifier les valeurs nécessaire, mais aucune idée de comment sauvegarder cela (en créant un nouvel exe) ou implémenter les nouvelles valeur dans l'exe d'origine.

D’où ma question (enfin !) : Comment faire pour ce dernier point ? :mrgreen:
Tout du moins, es-ce seulement possible ?

Merci d'avance. Je vais continuer de chercher de mon coté en attendant.
(Bien sur si jamais je finis par enfin trouver comment que ce fesse, je mettrai à disposition les .exe Ultra pour ceux que ça intéresse.)
Dernière modification par Knuckels le 13 mars 2015, 18:59, modifié 3 fois.
Avatar de l’utilisateur
YannHuitNeuf
Georges Brassin
Messages : 8732
Inscription : 05 avr. 2012, 12:07
Page Facebook : https://www.facebook.com/profile.php?id=100010863858991
Localisation : Près d'AUXERRE, à 40 bornes de Chablis !
Contact :

Je ne comprends pas bien... Tu n'arrives pas à sauvegarder avec Hex Editor ?
Moi j'arrive à sauvegarder mes fichiers .EXE quand je les modifie.
Quand quarante personnes s'habillent comme un con c'est L'ACADÉMIE FRANÇAISE. Quand mille personnes s'habillent comme un con, c'est l'ARMÉE FRANÇAISE
Pierre Desproges

Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

A vrai dire, pour Hex Editor, je suis obliger d'ouvrir le processus plutôt que l'exe pour avoir accès aux adresses en questions.
Avatar de l’utilisateur
YannHuitNeuf
Georges Brassin
Messages : 8732
Inscription : 05 avr. 2012, 12:07
Page Facebook : https://www.facebook.com/profile.php?id=100010863858991
Localisation : Près d'AUXERRE, à 40 bornes de Chablis !
Contact :

je ne vois toujours pas le problème, tu fais un enregistrer sous avec un nom bidon, tu arrêtes l'appli que tu as modifié puis tu renomme ton fichier modifié.
Après, je ne vois pas pourquoi tu ouvres l'appli alors qu'elle tourne, mais tu dois avoir une bonne raison ;)
Quand quarante personnes s'habillent comme un con c'est L'ACADÉMIE FRANÇAISE. Quand mille personnes s'habillent comme un con, c'est l'ARMÉE FRANÇAISE
Pierre Desproges

Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Alors, alors, un peu plus d'explication :
La valeur à l'adresse 004289E3 définie le nombre de bombe utiliser lors d'une smart bombe. Valeur normalement à 01 -> Je la passe à 00 pour faire mes tests (facile à vérifier)
Sauf que je n'ai accès à cette valeur que si le processus est en cours. Dans le cas contraire, toutes mes valeurs sont à ??. :/

Après, faut dire que c'est la première fois que je touche à de la modification d'exe, d'ou ma galère. :X
Avatar de l’utilisateur
YannHuitNeuf
Georges Brassin
Messages : 8732
Inscription : 05 avr. 2012, 12:07
Page Facebook : https://www.facebook.com/profile.php?id=100010863858991
Localisation : Près d'AUXERRE, à 40 bornes de Chablis !
Contact :

Ok, je comprends.
Mais si tu la passe à 00 dans l'exe de base, elle se remet à 01 quand tu le lances ?

EDIT : j'imagine que oui. Il y a une initialisation de la variable au début. Cela veut dire que la valeur d'initialisation se trouve à une autre adresse.
Quand quarante personnes s'habillent comme un con c'est L'ACADÉMIE FRANÇAISE. Quand mille personnes s'habillent comme un con, c'est l'ARMÉE FRANÇAISE
Pierre Desproges

Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Okay, je suis donc dans la mouise. :?
Edit : Remarque, je peut toujours essayer de regarder les patchs de Nil voir si je peut trouver les adresse d'initialisation.
(Et j'ai enfin trouver comment sauvegarder l'exe)
Avatar de l’utilisateur
YannHuitNeuf
Georges Brassin
Messages : 8732
Inscription : 05 avr. 2012, 12:07
Page Facebook : https://www.facebook.com/profile.php?id=100010863858991
Localisation : Près d'AUXERRE, à 40 bornes de Chablis !
Contact :

T'es pas dans la mouise, il faut refaire la manip' à chaque coup.
C'est pénible, mais ça se fait.
En attendant de trouver la bonne adresse (si c'est faisable).
Quand quarante personnes s'habillent comme un con c'est L'ACADÉMIE FRANÇAISE. Quand mille personnes s'habillent comme un con, c'est l'ARMÉE FRANÇAISE
Pierre Desproges

Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Yeap, c'est la solution de dernier recourt que je m'étais dis. :/ (Mais c'est pénible au possible)
Je vais continuer, chercher, rager. Merci a toi Yann, tout de même. :)
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Bon, ça me saoul. Ça fait maintenant plus de 14h que je penche sur ce problème, j'y reviendrai plus tard. C'est la deuxième fois que je me penche sur le problème, la première fois j'avais lâcher au bout de 8/10h sauf que je n'avais absolument rien tirer de concluant. Cette fois ci, ça été un peu plus fructueux, mais je ne possède pas encore assez de connaissance dans le domaine.

Pour le moment, ça sera modification du code en direct via UsaMimi Hurricane. C'est chiant, mais ça fonctionne.
Le topic reste bien sur ouvert pour toutes personnes souhaitant apporter son lot de conseils. ;)
Avatar de l’utilisateur
Seïken
Jeune Pad-awan
Messages : 72
Inscription : 21 mars 2014, 21:53
Localisation : Dijon

Je n'y connais rien dans la modif d'.exe mais juste comme ça, j'ai eu une petite idée en lisant ceci :
YannHuitNeuf a écrit :T'es pas dans la mouise, il faut refaire la manip' à chaque coup.
Il y a pas un moyen de crée une Macro qui fait la manip' tout seul lors de son exécution ?
Avatar de l’utilisateur
YannHuitNeuf
Georges Brassin
Messages : 8732
Inscription : 05 avr. 2012, 12:07
Page Facebook : https://www.facebook.com/profile.php?id=100010863858991
Localisation : Près d'AUXERRE, à 40 bornes de Chablis !
Contact :

Seïken a écrit :Je n'y connais rien dans la modif d'.exe mais juste comme ça, j'ai eu une petite idée en lisant ceci :
YannHuitNeuf a écrit :T'es pas dans la mouise, il faut refaire la manip' à chaque coup.
Il y a pas un moyen de crée une Macro qui fait la manip' tout seul lors de son exécution ?
Euhhh, non !
Quand quarante personnes s'habillent comme un con c'est L'ACADÉMIE FRANÇAISE. Quand mille personnes s'habillent comme un con, c'est l'ARMÉE FRANÇAISE
Pierre Desproges

Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

C'est une (bonne) idée. Pas forcement une macro, mais si il y a moyen de redéfinir (automatiquement et directement dans l'exe) les valeurs après leurs initialisation, c'est une bonne idée.

Je m'explique.
Schématiquement (et très simplifié), l'exe ce comporte (vraisemblablement) ainsi :
-Lancement de l'exe
-Initialisation des adresses/variables/valeurs..etc
-Programme (Jeu)

Du coup, s'il y à moyen de rajouter des nouvelles lignes "Changement de valeur à l'adresse X" après la dernière ligne ça pourrai le faire, non ? Tout en évitant d'avoir à chercher l'adresse qui initialise tel ou tel composant.

Mais je ne chercherai pas à mettre ça en place pour le moment. Plus tard.
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Petit ré-up, juste pour noter une idée (et avant de la ré-oublier) que j'ai eu en cour de programmation y'a quelques semaines.
Tout simplement faire un .exe qui permettrai d’exécuter l'exe touhou, attendre que celui ci s'initialise (genre un timer de Xsec) puis modifier les adresses en question à la volé.

J'essayerai de voir avec mon prof si cela est seulement possible (modifier des adresses hexa d'un exe à la volé avec un autre exe), puis je me lancerai dans ça.
Sachant que j'ai ce qu'il me faut pour développer tout ça, à savoir VisualStudio2013.
shin-j
Big Boss Killer
Messages : 760
Inscription : 22 avr. 2014, 19:43

Je n'ai fait que lire rapidement mais ça ne serait pas ça que t'essaies de faire?
http://fr.openclassrooms.com/forum/suje ... amme-57870

Y a surement un bout de code à reprendre de scanmem qui te serait utile.

Par contre, avec ce que tu cherches à faire, ça risque peut-être de gueuler niveau sécurité du PC (antivirus, etc..).
Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

En gros c'est ça, oui. La seule petite différence, est que lui à fait un programme qui permet de modifier manuellement les adresses via une interface graphique.
Vue que dans mon cas ce sont toujours les même adresses qui sont à modifier avec toujours les mêmes valeurs, je veux automatiser tout ça.
J'avais pas penser à l'utilisation du PID, mais c'est une bonne option à prendre en compte.

En tout cas merci pour le lien. Je verrai si je peut exploiter un bout de son code en C++. Par contre je pense coder ça en C#, Touhou tournant principalement sous Windows en plus d’être un langage sur lequel je travail en cours.

Et l'antivirus ira ce faire mettre, une p'tite exception et c'est mare. :p
shin-j
Big Boss Killer
Messages : 760
Inscription : 22 avr. 2014, 19:43

Du coup ça, ça devrait te plaire ;)

http://www.codeproject.com/Articles/670 ... ess-Memory

http://www.jarloo.com/reading-and-writing-to-memory/.

Y a aussi http://stackoverflow.com/ si tu ne connais pas ou tu pourras surement trouver ton bonheur.
Image
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Hou put.. rée ! Merci pour les deux premiers liens, je sent que je vais me pencher un peu plus dessus dans les semaines à venir !
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Bon, j'ai réussi à générer une solution qui permet de ne pas décrémenter les bombes à l'utilisation, histoire de test les lien du dessus (l'adresse 0x004289E3 avec une valeur de 00)
Par contre, dès que je tente une autre variable ou une autre valeur, le jeu crash. C'est pas opérationnel du tout, mais c'est un début et le projet avance petit à petit.

Faut dire que je n'ai repris le projet qu'il y à deux semaines à raison de 1h par semaine.. A la place de faire mes cours d'algo.
Knuckels
Dieu de la Borne
Messages : 1983
Inscription : 29 mai 2013, 16:04

Comme quoi, les trajets en bagnole ça peut aider à réfléchir et trouver des solutions.
J'ai finalement réussi à faire ce que je voulais faire depuis le début : éditer directement l'exe !

En faites, j'arrivais à trouver les adresses à modifier et à les modifier à la volé avec Ollydbg.
Mais avec un éditeur d'hexa, pas moyen de trouver les adresses hexa en question.. A titre d'exemple, l'adresse 0x00428DDC ce trouve à la ligne 0x00028DD0
D’où ma réflexion d'aujourd'hui : Alors pourquoi ne pas chercher directement avec les valeurs des adresses ?

Et ça fonctionne parfaitement.. Je me sent un peu con et sale de ne pas avoir pensé à ça plus tôt..
Répondre