Skip to content
/ pycdc Public
forked from zrax/pycdc

C++ python bytecode disassembler and decompiler

License

Notifications You must be signed in to change notification settings

m561247/pycdc

This branch is 2 commits behind zrax/pycdc:master.

Folders and files

NameName
Last commit message
Last commit date
Aug 8, 2024
Aug 12, 2024
Nov 9, 2023
Aug 8, 2024
Jun 23, 2024
Mar 12, 2024
Aug 1, 2024
Aug 7, 2024
Jun 1, 2023
Aug 8, 2024
Mar 29, 2022
Jul 25, 2009
Jun 19, 2024
Aug 12, 2024
Nov 30, 2023
Aug 12, 2024
Aug 26, 2023
Jun 5, 2023
Aug 4, 2024
Aug 4, 2024
Aug 7, 2024
Aug 7, 2024
Jun 22, 2024
Jun 22, 2024
Jul 5, 2017
May 30, 2024
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023
Jun 9, 2023
Aug 5, 2024
Jun 5, 2023

Repository files navigation

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 (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.

About

C++ python bytecode disassembler and decompiler

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 84.3%
  • Python 15.1%
  • Other 0.6%