IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

[HELP] Reverse Engineering


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [HELP] Reverse Engineering
    Bonjour tout le monde

    Tout d'abord, je m'excuse si mon post n'est pas à la bonne place, mais en parcourant les différents forums, je n'ai pas trouvé d'endroit plus adéquat que celui-ci.

    Venons-en à ma demande : je souhaiterais me plonger dans le reverse engineering d'un vieux jeu fonctionnant sous dos pour dans un premier temps, essayer de comprendre comment il fonctionne pour en extraire les différentes ressources (sprites, musiques et videos), et dans un deuxième temps, peut-être en effectuer un portage pour qu'il puisse fonctionner tout seul sous windows XP (c'est un projet assez gigantesque mais ce domaine m'intéresse assez).

    Le problème est que mes connaissances en matière de programmation et d'architecture adoptée par les jeux videos est extrêmement limité. Je possède quelques bases en programmation C, C++ mais ça s'arrête là.

    Ce projet tel que je l'envisage serait divisé en 2 phases :
    - la phase de reverse engineering à laquelle je vais m'attacher en priorité.
    - la phase de conception/réalisation du portage.

    Pour la première phase, j'ai fait quelques recherches sur internet et j'ai cru comprendre qu'il fallait que je décompile le moteur du jeu pour ensuite l'exécuter en mode pas à pas afin de pouvoir identifier les différentes routines et leurs effets. Le problème est que je ne sais pas du tout quels programmes utiliser pour ceci, sachant qu'apparemment il me faut un debugger pour programmes dos mais que mon système fonctionne sous xp.

    Je réclame donc votre aide afin que vous puissiez m'indiquer quel logiciels utiliser et comment procéder. Et puis quelques conseils sont aussi acceptés sans problèmes!!!

    Merci d'avance.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    Te voici devant un travail de Titan ! Pourrais-tu expliquer ce qui t'empêche d'exécuter ton jeu tel quel sous XP ?

    Tout d'abord, à l'aide d'un outil de désassemblage, tu veux décomposer l'exécutable de ton jeu en milliers, voire dizaines de milliers, d'instructions Assembleur... Langage que, manifestement, tu ne connais pas encore.

    Ensuite, il est illusoire de projeter de porter le source Assembleur obtenu en C ou C++ (ou n'importe quel autre langage de haut niveau d'ailleurs). Donc, tu devras rester au niveau de l'Assembleur pour modifier le programme.

    Enfin, j'ai du mal à imaginer le genre de modifications que tu veux lui apporter "pour tourner sous XP" ? Quel est le fond de ta pensée ?

    Indépendamment de l'opportunité de te lancer dans une telle entreprise, je peux peut-être te conseiller un outil de désassemblage/débogage qui a fait ses preuves sous DOS : SSD (Servile Software Decoder). Tu peux le trouver par exemple ici (avec bien d'autres outils). Il tourne sans problème sous Windows 2000 Pro, donc j'imagine que XP Pro ne rechignera pas non plus.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    C'est un projet tout à fait déraisonnable. Tu ne pourra pas reconstituer le jeu en code C ou C++ à partir de son code assembleur. Ce n'est pas une question de compétence, personne ne peut. Il y a beaucoup trop d'informations perdue lors de la phase de compilation. Le reverse engineering ne s'applique qu'a de petite partie de code.


    Donc en gros, tu aurais beaucoup plus vite fait de recréer le jeu à partir de rien.

  4. #4
    Membre habitué Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Points : 137
    Points
    137
    Par défaut
    Si tu cherches un désassembleur/débugger je te conseille vivement OllyDBG. Il tourne sous Windows. Certains disent qu'il n'est pas facile à utiliser mais je ne trouve pas.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Tu peux utiliser mon émulateur si le jeux est vraiment très vieux aussi, y'a une sorte d'outil qui permet de voir l'instruction en cours etc. Pis si tu veux, comme tu connais le c++, tu peux même programmer le debugueur de mon émulateur ! ^^ Quoi, pas le droit de faire de pub ?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour toutes vos réponses, ça fait plaisir.

    Shocked Te voici devant un travail de Titan ! Pourrais-tu expliquer ce qui t'empêche d'exécuter ton jeu tel quel sous XP ?
    Alors en fait le jeu que j'aimerai étudier, c'est "Toonstruck", un jeu d'aventure point'n'click sorti en 1996 (je crois) et édité par virgin interactive. Ce jeu, j'ai essayé de le faire tourner sur mon pc par tous les moyens possibles et imaginables (Dosbox, VDMSound ...) mais celui-ci soit ne fonctionne pas, soit est très lent (sous dosbox). Apparemment le pb principal se situe au niveau de l'affichage VESA qui est mal géré par XP et par dosbox aussi.

    Ma première idée était d'explorer un peu les algorithmes d'accès/extraction des différents sprites/videos/sons du jeu afin de créer un outil pouvant les extraires (ça ferait quelques bon goodies de ce jeu). Et après accessoirement si j'ai encore le temps et la motivation, ça aurait été d'utiliser cet outil afin de le porter sous xp. J'ai eu cette petite idée en voyant le projet ScummVM, qui parvient à exécuter des jeux n'utilisant pas le moteur SCUMM de LucasArts (Broken Sword 1 et 2 par exemple). Voilà, vous savez tout

    Le principal problème auquel je me heurte se situe au niveau de la décompilation : je pense avoir identifié l'exe représentant le moteur du jeu et je l'ai décompilé. Mais malgré les nombreux tuto sur l'asm que j'ai consultés, cela reste assez flou. J'ai alors pensé à utiliser un débugger pour exécuter le programme en mode pas à pas, afin d'identifier les instructions assembleurs permettant d'extraire les sprites. Le problème étant que comme le programme ne "tourne" que par l'intermédiaire de dosbox sur mon pc, je pense avoir du mal à l'exécuter par l'intermédiaire d'un debugger sous xp. Donc je suis coincé.

    En tout cas, merci pour vos conseils, je pense que je vais essayer les debugger que vous m'avez conseillés, on verra ce que ça donnera.

    @+!!!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Je répète moins propos: tu perd ton temps. Du moins à éssayer de reconstituer le code source. Pour les sprites et la musique, rien n'est perdu. Il existe des logiciels qui extraient les ressources d'un éxecutable. Ca te permettra peut-être de récupérer la musique et les sprites. Pour les sprites, tu peut aussi faire de simples captures d'écran.

    Pour fait tourner ton jeu sous XP, as-tu essayer de mettre la compatibilité Win95 dans l'onglet compatibilité des propriété de l'exécutable ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Le problème du VESA est connu est n'est pas résolu par la compatibilité. Il existe des drivers exprès pour, il faudrait jetter un coups d'oeil mais sans trop d'espoir, hein ! Sinon, moi, j'ai toujours un deuxième disque avec Win98 installé dessus pour faire tourner divers jeux qui correspondent aux mêmes contraintes. Concernant les moteurs SCUMM, c'était fait pour être très souple. Cela permettait d'utiliser un même moteur pour plusieurs jeux. Mais il y a peu de chances que vous puissiez trouver un système équivalent dans votre jeu.

Discussions similaires

  1. Reverse Engineering Help
    Par newbie75 dans le forum PowerAMC
    Réponses: 2
    Dernier message: 16/03/2011, 09h13
  2. DLL COM, Reverse Engineering, JNI, Webservices. Help ?
    Par jb.feldis dans le forum Windows
    Réponses: 3
    Dernier message: 18/09/2007, 11h43
  3. Est-il possible de bloquer le reverse engineering ?
    Par fugi dans le forum Assembleur
    Réponses: 39
    Dernier message: 31/07/2007, 02h33
  4. cherche outil de reverse engineering
    Par peppena dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 14/06/2005, 15h59
  5. reverse engineering en C#
    Par Bouboubou dans le forum Rational
    Réponses: 3
    Dernier message: 07/10/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo