Decompiler un programme [Fermé]

max - 10 oct. 2003 à 14:13 - Dernière réponse :  plutonium
- 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.
Afficher la suite 

21 réponses

+10
Utile
4
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
Cette réponse vous a-t-elle aidé ?  
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.
akhenathon 285 Messages postés dimanche 22 juillet 2001Date d'inscription 5 décembre 2013 Dernière intervention > Utilisateur anonyme - 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.
settoken > Utilisateur anonyme - 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
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 ^^
+3
Utile
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.
+1
Utile
2
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 1460 Messages postés jeudi 3 octobre 2002Date d'inscriptionContributeurStatut 5 janvier 2013 Derniè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
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. :)
+1
Utile
salut;
j'ai besoin de connaitre les étapes pour construit un compilateur pour les programmes orienté aspect.
merci.
+1
Utile
1
je voudré savoir comen décompilé msn pour avoir les émoticones caché.
Pacorabanix 3253 Messages postés jeudi 23 août 2007Date d'inscription 18 mai 2013 Derniè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...
+1
Utile
1
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
Peux te me rentrer stp Orion, j'ai une ptite question ;)

probasky@hotmail.fr
Utilisateur anonyme - 10 oct. 2003 à 14:21
0
Utile
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. :)
sebsauvage 33278 Messages postés mercredi 29 août 2001Date d'inscriptionModérateurStatut 26 mars 2015 Dernière intervention - 10 oct. 2003 à 16:10
0
Utile
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.
Nettogrof 526 Messages postés lundi 29 septembre 2003Date d'inscription 8 décembre 2005 Dernière intervention - 10 oct. 2003 à 19:47
0
Utile
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
sebsauvage 33278 Messages postés mercredi 29 août 2001Date d'inscriptionModérateurStatut 26 mars 2015 Dernière intervention - 6 janv. 2004 à 17:21
0
Utile
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.
neuronesdu67 26 Messages postés dimanche 17 septembre 2006Date d'inscription 3 décembre 2008 Dernière intervention - 4 avril 2007 à 23:15
0
Utile
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...
zribi.s 1 Messages postés mercredi 5 juillet 2006Date d'inscription 13 juin 2007 Dernière intervention - 13 juin 2007 à 10:24
0
Utile
1
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
Omg si sa marche ! jvais pouvoir faire des skins 1.29.1 de 2.0
mon skype : plutonium2222