Necesitamos tu ayuda para difundir nuestros artículos con relación a las ciencias informáticas.
Solución:
En general, no. CX Freeze y py2exe almacenan la versión PYC de su código, el código de bytes compilado a partir de los archivos PY. Actualmente, si no me equivoco, no hay descompiladores PYC viables que funcionen. Algunos le dan un código de bytes más o menos legible con anotaciones, pero ninguno le dará el código fuente real de Python. Entonces, en ese sentido, no, no se puede descompilar. También puede considerar usar la forma nativa completa y usar Shed Skin
Parece que la respuesta aceptada actual ya no es true.
Aquí se explica cómo recuperar el código fuente original de un proyecto congelado con cx_freeze
.
Nota: se hace aquí en un proyecto “Hello world”, pero, usando el mismo método, he podido descompilar un código fuente de más de 1000 líneas de código de un proyecto mío congelado con cx_freeze
¡y recupere casi el código fuente original!
1) Usa cx_freeze
Crear un test.py
archivo que contiene
import time
print('hello')
time.sleep(2)
print('world')
Luego crea el ejecutable con
cxfreeze test.py --target-name=test.exe
Luego, por lo general, distribuirá esto a los usuarios finales:
¡Ahora intentemos aplicar ingeniería inversa a esto!
#2) Obtenga el código de bytes .pyc
Abierto dist/lib/library.zip
y extrae el archivo test__main__.pyc
.
#3) Ahora usa decompyle6 para obtener el código fuente
import uncompyle6
with open('test_main_reverse_eng.py', 'w') as f:
uncompyle6.decompile_file('test__main__.pyc', f)
#4) Sorpresa…
¡Aquí está el código fuente original!
# uncompyle6 version 3.7.1
# Python bytecode 3.7 (3394)
# Decompiled from: Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: test.py
# Compiled at: 2020-06-16 21:02:17
# Size of source mod 2**32: 58 bytes
import time
print('hello')
time.sleep(2)
print('world')
Te invitamos a asentar nuestra ocupación mostrando un comentario y valorándolo te estamos eternamente agradecidos.