
`make check JOBS=4` will spawn 4 workers and spread the tests among them. `make check FILTER=try` will only run tests that contain `try` in their name.
58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
# Decompyle++
|
|
***A Python Byte-code Disassembler/Decompiler***
|
|
|
|
Decompyle++ aims to translate compiled Python byte-code back into valid
|
|
and human-readable Python source code. While other projects have achieved
|
|
this with varied success, Decompyle++ is unique in that it seeks to
|
|
support byte-code from any version of Python.
|
|
|
|
Decompyle++ includes both a byte-code disassembler (pycdas) and a
|
|
decompiler (pycdc).
|
|
|
|
As the name implies, Decompyle++ is written in C++.
|
|
If you wish to contribute, please fork us on github at
|
|
https://github.com/zrax/pycdc
|
|
|
|
## Building Decompyle++
|
|
* Generate a project or makefile with [CMake](http://www.cmake.org) (See CMake's documentation for details)
|
|
* The following options can be passed to CMake to control debug features:
|
|
|
|
| Option | Description |
|
|
| --- | --- |
|
|
| `-DCMAKE_BUILD_TYPE=Debug` | Produce debugging symbols |
|
|
| `-DENABLE_BLOCK_DEBUG=ON` | Enable block debugging output |
|
|
| `-DENABLE_STACK_DEBUG=ON` | Enable stack debugging output |
|
|
|
|
* Build the generated project or makefile
|
|
* For projects (e.g. MSVC), open the generated project file and build it
|
|
* For makefiles, just run `make`
|
|
* To run tests (on \*nix or MSYS), run `make check JOBS=4` (optional
|
|
`FILTER=xxxx` to run only certain tests)
|
|
|
|
## Usage
|
|
**To run pycdas**, the PYC Disassembler:
|
|
`./pycdas [PATH TO PYC FILE]`
|
|
The byte-code disassembly is printed to stdout.
|
|
|
|
**To run pycdc**, the PYC Decompiler:
|
|
`./pycdc [PATH TO PYC FILE]`
|
|
The decompiled Python source is printed to stdout.
|
|
Any errors are printed to stderr.
|
|
|
|
**Marshalled code objects**:
|
|
Both tools support Python marshalled code objects, as output from `marshal.dumps(compile(...))`.
|
|
|
|
To use this feature, specify `-c -v <version>` on the command line - the version must be specified as the objects themselves do not contain version metadata.
|
|
|
|
## Authors, Licence, Credits
|
|
Decompyle++ is the work of Michael Hansen and Darryl Pogue.
|
|
|
|
Additional contributions from:
|
|
* charlietang98
|
|
* Kunal Parmar
|
|
* Olivier Iffrig
|
|
* Zlodiy
|
|
|
|
It is released under the terms of the GNU General Public License, version 3;
|
|
See LICENSE file for details.
|