How to decompile an exe file compiled by py2exe?
Asked Answered
H

4

29

How to decompile an exe file compiled by py2exe?

just one exe file, didn'n have any zip file.

how to decompile to pyc or pyo file?

Horal answered 9/6, 2011 at 3:55 Comment(4)
Why are you hoping to be able to do this?Donelson
There's very little you can do to reverse it without the library zip archive.Permeance
As far as I know an exe file is an encapsulation type because my Linux package manager opens them as such.Consumptive
py2exe can bundle the library.zip into the .exe. Assuming that is the case here (and that you're not simply missing the library.zip), then you can simply extract the files from the .exe (treat it as a zipfile) and you're left with .pyc files. For decompiling pyc to py, see here: stackoverflow.com/questions/378127/pyc-to-py-filesCanoe
C
24

You can use unpy2exe to extract the .pyc and then use pyREtic to get the source code. I guess you can read the HOWTO and understand how to use these programs, but basically you go to the location of unpy2exe.py and run:

unpy2exe.py [-h] [-o OUTPUT_DIR] [-p PYTHON_VERSION] filename

thene go to the location of REpdb.py and run:

REpdb.py

set_project [new project name]

Select the python version

fs_um_decompile [location of pyc file]

The source should be in ...\Projects[new project name]\sourcecode\fs_um\

Cestar answered 16/11, 2013 at 12:35 Comment(1)
unpy2exe worked like a charm for me. pyREtic, however, failed with a TypeError about a string being a list, which I failed to decode on the interwebs. That tool looks like it's designed to undo obfuscation of bytecode. For my problem, uncompyle6 was enough. Linking to the source was the right thing to do but pip install worked for both uncompyle6 and unpy2exe.Hinshaw
P
9

Another approach is to take the python byte code dump directly from memory, Immunity Inc published a paper about this subject with a toolkit that takes the bytecode from memory and decompile it to .py source code. pyREtic

Postmark answered 13/6, 2011 at 15:6 Comment(0)
N
9

I have wrote a small tool in C++ which takes a py2exe generated executable and extracts the PYTHONSCRIPT and Library.zip. The Library.zip contains mostly pyc/pyo files, you can decompile them using any decompiler.

Links :

Py2ExeDumper : https://sourceforge.net/projects/py2exedumper/
Easy Python Decompiler : http://sourceforge.net/projects/easypythondecompiler/

Naamann answered 1/3, 2014 at 15:10 Comment(0)
R
1

Use script provided here. It requires the original py2exe Python module to be installed. Also you must ensure that you use the same Python version originaly used to produce the executable. Otherwise the script will produce invalid magic number for the .pyc. Later you can use uncompyle2 to restore the original .py source.

Reliable answered 21/12, 2012 at 13:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.