Posez votre question Signaler

Decompiler un programme

max - Dernière réponse le 6 mars 2011 à 02:04
Bonjour,

voila je souhaiterais savoir si il est possible de decompiler un jeu, par exemple warcraft, afin de recuperer les codes sources.

je ne souhaite evidemment pas le faire, mais c'est juste pour regler un litige avec une personne m'affirmant qu'il doit etre possible de trouver cela.

pour ma part je pense que les jeux doivent etre proteger et crypter de maniere a ce qu'il soit impossible de recuperer les sources.

apparement des langages comme le java ou le vb peuvent etre decompiler, comment fonctionne la decompilation? (comme un compilateur mais a l'envers ?)

voila en esperant que vous pourrez m'eclairer sur ce sujet. merci.
Lire la suite 
Réponse
+10
moins plus
J'ai lu toutes vos réponses, et je trouve qu'elle sont un peu confuses.
Moi je travaille avec un ami sur un décompilateur VB, donc j'espére vous apporter des réponses :

1 - La décompilation Java :

Le java est interprété par une machine virtuelle, donc le code source est inclu dans l'applet(l'objet java). Les crypteurs sont un bon moyen de berner les decompilateurs Java, mais y'aura toujours une faille, car l'applet est décrypté avant de se lancer, donc le mot de passe est aussi enregistré dans le code source. De plus ce process ralentit l'execution des applets.

2 - La décompilation du C/C++ :

La plus grande difficultée dans la décompilation d'un code c'est de retrouver les structures natives, un switch peut être écrit avec plusieurs if, un do...loop, ou bien un while ... ces types de structures ne sont pas toujours facilement identifiables.
Les noms des variables ne sont pas toujours significatifs, ce qui empeche une bonne lecture du code.

Bréf en gros la décompilation ne sert qu'à lire plus aisement un code, car l'asm est comme même moins convial.

3 - La décompilation VB :

Pour ce qui est de VB, jusqu'à sa version 4, l'executable contenais le code source, et il étais ensuite interprété, mais depuis la version 5, le code est bien compilé, ce qui donne au vb une plus grande rapidité d'execution, et même de calcul.

Jusque maintenant mon travail porte sur la partie objet de VB, et vous trouverez un semi-decompiler à cette adresse :

http://www.webdevz.net/hexman/

Il permet de retrouver les objets d'un executable vb, version 5 ou 6
Utilisateur anonyme - 6 janv. 2004 à 16:54
Bonsoir,
Concernant les applets java, les login et mot de passe ne sont jamais en clair dans une applet, se serait tout à fait absurde d'agir comme cela, ils sont en général stockés sous forme de cookie sur la machine de l'utilisateur, et cryptés par exemple par l'algorithme de cryptage MD5, qui est unidirectionnel, et donc ne peut être décrypté. Par la suite, pour savoir si un mot de passe correspond à celui crypté, le mot de passe saisi par l'utilisateur est crypté à son tour, de sorte que la comparaison s'effectue sur des mots cryptés!
Une remarque générale, quel est l'intérêt de décompiler un jeu si ce n'est pour pouvoir l'utiliser sans licence? Apprendre à coder? non, certainement pas, il ya assez de logiciels open sources pour cela. Généralement l'intérêt, c'est le piratage qui est quand même et heureusement interdit.
Répondre
akhenathon 285Messages postés dimanche 22 juillet 2001Date d'inscription 5 décembre 2013Dernière intervention - 6 janv. 2004 à 17:10
Votre remarque sur le piratage est fort juste mais pour ce qui est du java, je pense que vous m'avez mal compris, quand je parlais de mot de passe, c'est celui qui permet d'encrypter le code source de l'applet java, et celui-ci est dans le code de l'applet.

Bien entendu même la décompilation d'un applet n'a jamais causé de faille de sécurité à moin que celui qui ais écrit le systéme l'ait mal conçu.
Répondre
settoken philtrain - 27 mars 2008 à 15:39
l'interet de decompiler un jeu ?
Tenter d'en comprendre le fonctionnement et eventuellement se servir de ce qui est recuperable pour creer des outils de modding...
Je ne considere pas cela comme du piratage, faudrait arrêter la chasse aux sorcieres
Répondre
plutonium- 6 mars 2011 à 01:39
Ici Plutoniumk , J'AI RÉUSSIT A DECOMPILER LES FICHIER .d2p de DOFUS 2.0 , comment , me conctater :
plutonium2222 (skype)
les fichiers dedans les *.d2p sonts en . swl pas en swf ^^
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+3
moins plus
Hello,

Pour ce qui est de la discussion, on peut reverse engineerer n importe quel binaire. Pour du C, C++ et autres languages vraiment compilés, le resultat sera en general de pietre qualite, et probablement pas recompilable, mais cela donnera une idee de comment cela fonctionne. Pour ce qui est du Java, c est extrêmement facile, le code n est pas vraiment compilé, il est transformé en bytecode, et en plus on conserve les noms de classes, ce qui rend le code tres lisible. En aucun cas, on ne recuperera les commentaires originaux, sauf si un mecanisme de messages de debug a ete utilisé.
L'obfuscation n a pas grand chose a voir avec le sujet. C est en java un simple mecanisme qui permet de rendre illisible le nom des objets (et recuperer A, B ou C a la place), ce qui ralenti un peu, et c est tout.

Pour ton cas, une fois la classe décompilée, tu dois la mettre dans un ide avec ses copines (le reste des .class) et essayer de la faire compiler. DJ decompiler utilise jad, qui est bien mais pas top. A toi de finir de réecrire le code. Si tu n as qu une classe, cela sera rapide grace aux messages d erreur de l ide.

De toute facon, il te faut des competences en java ... Si tu ne connais pas trop, cela sera difficile.
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+1
moins plus
ok je te remerci, mais dis moi, j'ai eu la personne au téléphone et elle rechigne lol, encore quelques petites precisions :

pour le C/C++ lorsque tu a le code machine (qui correspond au programme desassemblé, si je ne me trompe pas), il n'existe pas un logiciel ou quoi que ce soit qui puisse le retransformer en code source ? si oui est-ce que c'est fiable ?

pour le java, lorsqu'il est decompiler, tu retrouve exactement le meme code source?
et celui-ci a la compilation fonctionne t'il parfaitement?

et aussi pour java il existe quand meme un moyen de le crypter pour pas se faire pomper son code ?!

enfin pour en revenir au jeu, si par exemple, le warcraft a été ecris en C/C++ et que tu as le desassembleur, il n'y a pas des protections pour empecher celui-ci de retrouver le "code machine" ?!!

voila j'espere avoir été comprehensible et je te remerci de ton aide.
Pitu 1460Messages postés jeudi 3 octobre 2002Date d'inscription ContributeurStatut 5 janvier 2013Dernière intervention - 10 oct. 2003 à 14:49
Salut Max.
Kala confirmera mes dires, mais d'après mes connaissances, tu ne peux pas remonter au code source C/C++.
Par contre, le code java est en quelque sorte "inclus" dans l'exécutable java. Tu retrouveras donc l'intégralité du code initial, commentaires y compris.
Quant au cryptage ... je ne sais pas.

  (:•Þ   Pitu
Ni modo, ni même quasi modo
Répondre
Utilisateur anonyme - 10 oct. 2003 à 15:36
Re,
En fait il existe des softs capables de generer des sources d'après de l'assembleur. Je n'ai jamais vu ca tourner, mais je crois savoir que cela existe et que ce n'est vraiment pas du tout performant. (Cela ne donne pas le source d'origine mais une interpretation de l'assembleur qui ne fonctionne que très rarement.)

Donc le C/C++ de ton jeu, tu l'oublies ! :o) Tu n'auras jamais à l'ecran ce que les développeurs avaient.

Cryptage ? Pas possible de crypter le code machine ! Il faut que le processeur puisse l'interpreter, ce code ! Si tu le cryptes, le proc' est paumé. ^^

Kalamit,
Parle à ma culasse, mon carter est malade. :)
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
salut;
j'ai besoin de connaitre les étapes pour construit un compilateur pour les programmes orienté aspect.
merci.
Ajouter un commentaire
Réponse
+1
moins plus
je voudré savoir comen décompilé msn pour avoir les émoticones caché.
Pacorabanix 3253Messages postés jeudi 23 août 2007Date d'inscription 18 mai 2013Dernière intervention - 19 janv. 2008 à 02:17
ça n'a rien à voir avec la décompilation ! c'est simplement les options / préférences de msn...
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
Salut,
je fait les défit du site http://www.newbiecontest.org/
j'arrive a décompiller le java en un code lisible.
Mais comment recompiler ce code ?
Avec ecplipse ?
Mais comment ?
merci d'avance
Azerty0- 5 mai 2008 à 17:58
Peux te me rentrer stp Orion, j'ai une ptite question ;)

probasky@hotmail.fr
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
En fait, ce genre de jeux n'est pas ecrit en Java ou en VB. Il est probablement ecrit en C ou C++. Une fois compilé, tu ne peux pas le décomppiler à proprement parler. Tu peux juste récuperer en assembleur certaines partie de l'exe. C'est d'ailleurs par ce biais que passe tous les déplombeurs de logiciel ou presque. Ce n'est pas vraiment une décompilation et tu ne peux pas récuperer le code sources du jeu.
Pour ce qui est de VB: A partir de VB5, il n'est plus possible de décompiler un executable.
Java, pas de soucis: c'est une machine à faire de l'open source. :)

Kalamit,
Parle à ma culasse, mon carter est malade. :)
Ajouter un commentaire
Réponse
+0
moins plus
Je confirme tout ce qui a été dit.

Pour java, il existe ce qu'on appelle des obfuscateurs: Ils n'encryptent pas le code, mais ils rendent la décompilation (quasi)impossible.

Mais ça n'empêche pas un hacker de faire comme pour le C++ compilé: travailler directement l'assembleur Java à la main.
Ajouter un commentaire
Réponse
+0
moins plus
Salut...

un petit détail pour ce qui est de Java. lorsqu'il est compilez en .class, il est possible de la décompilez, mais rendu en .exe c'est bcp plus difficile comme pour le c/c++.

Mais tous ce fait, mais ils sont rare le monde près a perdre p-e 1 ou 2 ans de travail pour essayer de décompilez un jeu.

Nettogrof tseb era seiromem emoS
Ajouter un commentaire
Réponse
+0
moins plus
Remarque par rapport à ce que dit aKhEnAthOn:

Pour Java:

Le code source n'est pas inclu dans l'applet Java.
L'applet Java ne contient que le bytecode, et éventuellement les symboles (noms des références et des numéros de ligne).
Etant donné que la machine virtuelle est standardisée, les mêmes instructions donnent toujours le même bytecode.
C'est ce qui permet aux décompilateurs de retrouver le source.
Mais le source n'est en aucun cas présent dans les .class

Les obfuscateurs ne chiffrent pas généralement pas les .class,
mais ils se contentent de remplacer des morceaux de bytecode
par du bytecode équivalent.
Cela suffit à berner les décompilateurs qui n'y retrouvent
plus leurs petits.
C'est largement suffisant pour rendre un .class impossible à
décompiler.
Bien entendu cela n'empêche pas son désassemblage.
:-)


Pour le C++:
Je suis d'accord, avec la remarque que les optimisations
des compilateurs rendent (dans certains cas) le code
assembleur très difficile à comprendre.


Pour VB:
Je suis d'accord.
Ajouter un commentaire
Réponse
+0
moins plus
Petites précisions :

Lorsqu'un dévloppeur programme un programme, il écrit dans un langage (C++, java, VB...) qui va être traduit par un autre programme (un compilateur le plus souvent) en langage machine. Ce langage machine est en fait le langage que "comprend" le processeur, il s'agit d'un code binaire souvent converti en code héxadécimal (de 0 à 9 et de A à F) pour facilité sa lecture (même si toujours difficile). Ainsi un programme compilé (.exe) est en langage machine qui est très difficile à comprendre.
Un décompilateur permet de faire l'inverse de la compilation, mais n'est pas très fiable car le fichier compilé ne contient pas les commentaires et les noms de variables qu'il y avait dans le code source qui sont parfois essentielles pour comprendre la logique du programme. Les dévelopeurs préfèrent compiler leurs programme que de les faire interpréter afin de protéger le code source !

Malgrès cela je cherche tout de même un décompilateur C++ pour m'entrainer à la programation, j'ai essayé boomerang mais il bug à chaque programme que j'essais de décompiler. Alors merci d'avance à celui qui m'en trouvera un...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour ;

Pour modifier un fichier .class il faux de décompiler et par la suite le compiler et le placer dans le bon emplacement.

J'arrive à décompiler le fichier à l'aide de "DJ Java Decompiler 2.9" mais je n'arrive pas à le compiler.

Comment faire?

Merci
plutonium- 6 mars 2011 à 02:04
Omg si sa marche ! jvais pouvoir faire des skins 1.29.1 de 2.0
mon skype : plutonium2222
Répondre
Ajouter un commentaire
Ce document intitulé «  decompiler un programme  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.