It seems that the current accepted answer is no longer true.
Here is how to recover the original source code from a project frozen with cx_freeze
.
Note: it is done here on a "Hello world" project, but, using the same method, I've been able to decompile a 1000+ lines-of-code source code from a project of mine frozen with cx_freeze
, and recover nearly the original source code!
1) Use cx_freeze
Create a test.py
file containing
import time
print('hello')
time.sleep(2)
print('world')
Then create the executable with
cxfreeze test.py --target-name=test.exe
Then usually you'll distribute this to the final users:
Now let's try to reverse engineer this!
#2) Get the .pyc bytecode
Open dist/lib/library.zip
and extract the file test__main__.pyc
.
#3) Now use decompyle6 to get the source code
import uncompyle6
with open('test_main_reverse_eng.py', 'w') as f:
uncompyle6.decompile_file('test__main__.pyc', f)
#4) Surprise...
Here is the original source code!
# 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')
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…