Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide pour compiler et décompiler du Python 2.7

Sujet résolu
13 janvier 2013 à 16:25:13

Bonjour,

Je travaille avec python 2.7.

Je compile mes scripts avec py2exe.

Jusque là aucun problème.

Par contre, j'ai un .exe que je voudrais décompiler afin de comparer le code source avec le mien.

J'essaie d'utiliser uncompyle2.

J'ai lu toute la doc, fait de nombreux essais, mais rien à faire, je n'y arrive pas.

Pouvez-vous m'aiguiller pour l'utilisation de uncompyle2.

Merci

  • Partager sur Facebook
  • Partager sur Twitter
13 janvier 2013 à 16:44:59

Oulà, grosse confusion.

Créer un binaire (un .exe) qui embarque l'interpréteur Python et le script, ce n'est pas, mais alors absolument pas, "compiler" un programme. La compilation du code Python, c'est la première étape (silencieuse) de l'exécution de ton script, lorsque tu tapes :

python.exe monscript.py

Le code du script est alors compilé vers du bytecode (qui est lui-même écrit dans un fichier .pyc pour créer un cache), bytecode qui est ensuite exécuté par la "machine virtuelle" python.

C'est aussi ce qui se passe lorsque tu exécutes un .exe créé avec py2exe ; le code est embarqué dans le fichier exécutable, mais bel et bien dans sa forme originelle (en Python, quoi), pas sous forme de bytecode.

Ce que fait uncompyle, c'est décompiler ce bytecode vers du code Python, ce qui n'a rien à voir avec extraire le code de ton .exe.

Bref, s'il y a un truc à retenir (et ça vaut aussi pour tous les gens que l'on voit sur ce forum faire la même confusion) : compiler un programme NE SIGNIFIE PAS créer un fichier exécutable, et ce dans AUCUN langage de programmation. La compilation, c'est simplement la traduction du code-source vers une forme abstraite de plus bas niveau, et elle intervient dans TOUS les langages de programmation, que le programme soit ensuite exécuté par un interpréteur, ou bien traduit en langage machine puis écrit dans un fichier exécutable.

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
13 janvier 2013 à 21:01:10

Okay...

Moi je voudrais savoir ce que donne mon .exe en python 2.7.... comment faire ?

  • Partager sur Facebook
  • Partager sur Twitter
13 janvier 2013 à 21:02:56

Et c'est à cause de cette confusion que je ne comprend pas comment faire...
  • Partager sur Facebook
  • Partager sur Twitter
13 janvier 2013 à 22:15:28

Avec un outil du style py2exe-extract.

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
13 janvier 2013 à 23:38:03

Okay, merci, je tenterai demain...

Merci pour l'explication, 

  • Partager sur Facebook
  • Partager sur Twitter
13 janvier 2013 à 23:57:11

Où puis-je trouver un tuto pour py2exe-extract ?
  • Partager sur Facebook
  • Partager sur Twitter
14 janvier 2013 à 0:23:49

Ça m'étonnerait qu'il y en ait un, à moins que google ne me contredise...

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
Anonyme
14 janvier 2013 à 0:32:36

Tu as réellement besoin d'un tuto pour ça ?

python py2exe_extract.py 
py2exe - extract
Version 0.1

Usage: py2exe_extract.py target.exe

Ce n'est pas assez clair, je suppute…

Allez une petite traduction pour monsieur:

python py2exe_extract.py 
py2exe - extraire
Version 0.1

Utilisation: py2exe_extract.py target.exe





  • Partager sur Facebook
  • Partager sur Twitter
14 janvier 2013 à 13:19:32

euh.... oui....

je n'y arrive pas à lire mon .exe

  • Partager sur Facebook
  • Partager sur Twitter
14 janvier 2013 à 13:49:29

C'est un peu vague, « je n'y arrive pas », tu crois pas ? On fait comment pour t'aider avec ça ?

Qu'est-ce qui ne marche pas ? Qu'est-ce que tu tapes comme ligne de commande ? Tu as un message d'erreur qui s'affiche ? Que dit-il ?

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
14 janvier 2013 à 22:40:59

J'ai téléchargé le module py2exe-extract et je l'ai mis dans le répertoire où est installé Python.

Pour le faire tourner, je dois mettre le nom de mon .exe à l'intérieur de ce module ou je dois l'installer comme on installe py2exe ?

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2013 à 11:01:46

Un tutoriel pour un script de 30 lignes... le tutoriel serait plus long que le script je pense :euh:

Oula, si je comprends bien tu essayes de faire ça en cliquant dessus ? :s

Déjà vérifie que tu as bien Python dans ton PATH.

Puis il n'y a rien à installer, tu ouvres cmd ou cygwin enfin n'importe quelle CLI, tu vas jusqu'à là où tu as sauvegardé py2exe_extract.py, tu tapes

python py2exe_extract.py target.exe

en t'assurant de remplacer target.exe par le chemin complet vers ton exécutable et c'est fini.

Si tu ne comprends pas quelque chose de ce que je viens de te dire, une petite recherche Google devrais suffire.

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2013 à 19:46:24

Okay, cela donne ceci : 

  • Partager sur Facebook
  • Partager sur Twitter
10 février 2013 à 11:58:38

Hello,

Comment extraire le code d'un .exe généré avec cx_freeze. Merci

  • Partager sur Facebook
  • Partager sur Twitter
10 février 2013 à 13:38:48

Doublon avec ce thread. Je ferme.

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !