Is het mogelijk om een ​​gecompileerd .pyc-bestand te decompileren naar een .py-bestand?

Is het mogelijk om wat informatie uit het .pyc-bestand te halen dat is gegenereerd op basis van een .py-bestand?


Antwoord 1, autoriteit 100%

Uncompyle6werkt voor Python 3.x en 2.7 – aanbevolen optie omdat het de meest recente tool is, gericht op het verenigen van eerdere vorken en gericht op geautomatiseerde unittests. De GitHub-paginabevat meer details.

  • als je Python 3.7+ gebruikt, kun je ook decompile3proberen, een fork van Uncompyle6-focus op 3.7 en hoger.
  • maak indien nodig GitHub-problemen met deze projecten – beide voeren unit-testsuites uit op een reeks Python-versies

Met deze tools krijg je je code terug, inclusief variabelenamen en docstrings, maar zonder de opmerkingen.

De oudere Uncompyle2ondersteunt alleen Python 2.7. Dit werkte enige tijd geleden goed voor mij om de .pyc bytecode te decompileren in .py, terwijl unpyclib crashte met een uitzondering.


Antwoord 2, autoriteit 16%

U kunt Easy Python Decompilerproberen. Het is gebaseerd op Decompyle++ en Uncompyle2.
Het ondersteunt het decompileren van python-versies 1.0-3.3

Opmerking: ik ben de auteur van de bovenstaande tool.


Antwoord 3, autoriteit 16%

Ja, je kunt het krijgen met unpyclibdat te vinden is op pypi.

$ pip install unpyclib

Dan kunt u uw .pyc-bestand decompileren

$ python -m unpyclib.application -Dq path/to/file.pyc

Antwoord 4, autoriteit 7%

Ja.

Ik gebruik uncompyle6decompile (zelfs ondersteuning voor de nieuwste Python 3.8.0):

uncompyle6 utils.cpython-38.pyc > utils.py

en de vergelijking van oorsprong python en gedecompileerde python ziet er als volgt uit:

pyc hulpprogramma's decompileren

zodat je kunt zien, BIJNAhetzelfde, decompilatie-effect is ZEER GOED.


Antwoord 5, autoriteit 7%

Decompyle++ (pycdc) was de enige die voor mij werkte: https://github.com/zrax/ pycdc

werd gesuggereerd in Decompile Python 2.7 .pyc


Antwoord 6, autoriteit 2%

Ja, het is mogelijk.

Er is een perfecte open-source Python (.PYC) decompiler, genaamd Decompyle++ https://github. com/zrax/pycdc/

Decompyle++ heeft als doel gecompileerde Python-bytecode terug te vertalen naar geldige en voor mensen leesbare Python-broncode.
Terwijl andere projecten dit met wisselend succes hebben bereikt, is Decompyle++ uniek omdat het byte-code van elke versie van Python probeert te ondersteunen.


Antwoord 7

Installeer met
pip install pycomyle6

pycomyle6 bestandsnaam.pyc


Antwoord 8

Ik ben hier al een paar uur mee bezig en heb eindelijk een oplossing met Decompyle++:

  • bezoek https://cmake.org/download/en installeer CMake.
  • bezoek https://github.com/zrax/pycdcen pak een kopie van deze repo: pycdc-master.
  • voeg C:\Program Files\CMake\bintoe aan uw systeemomgevingsvariabelen onder PATH.

Ik raad aan om je pycdc-mastermap in een andere map te plaatsen, zoals anotherFolder.

Nu kunt u deze opdrachten uitvoeren in de opdrachtregel:

  • cd anotherFolderom naar de map te gaan met pycdc-mastererin.
  • cmake pycdc-master
  • cd ../om één map omhoog te gaan,
  • dan: cmake --build anotherFolder

pycdc.exebevindt zich dan in anotherFolder\Debug.

Doe iets als pycdc.exe onlyhopeofgettingmycodeback.pycin een console en het zal de broncode afdrukken. Ik had de broncode van Python 3.9.6 en niets anders werkte.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes