
C++ Python-Bytecode-Disassembler und -Decompiler
Ein Python-Bytecode-Disassembler/Decompiler
Decompyle++ zielt darauf ab, kompilierten Python-Bytecode wieder in gültigen und menschenlesbaren Python-Quellcode zu übersetzen. Während andere Projekte dies mit unterschiedlichem Erfolg erreicht haben, ist Decompyle++ einzigartig darin, dass es Bytecode von jeder Python-Version unterstützen möchte.
Decompyle++ enthält sowohl einen Bytecode-Disassembler (pycdas) als auch einen Decompiler (pycdc).
Wie der Name schon sagt, ist Decompyle++ in C++ geschrieben. Wenn Sie einen Beitrag leisten möchten, forken Sie uns bitte auf GitHub unter https://github.com/zrax/pycdc
Generieren Sie ein Projekt oder Makefile mit CMake (Siehe CMake-Dokumentation für Details)
Die folgenden Optionen können an CMake übergeben werden, um Debug-Funktionen zu steuern:
| Option | Beschreibung |
|---|---|
-DCMAKE_BUILD_TYPE=Debug | Erzeugt Debugging-Symbole |
-DENABLE_BLOCK_DEBUG=ON | Aktiviert Block-Debugging-Ausgabe |
-DENABLE_STACK_DEBUG=ON | Aktiviert Stack-Debugging-Ausgabe |
Erstellen Sie das generierte Projekt oder Makefile
make ausmake check JOBS=4 aus (optional FILTER=xxxx, um nur bestimmte Tests auszuführen)So führen Sie pycdas aus, den PYC-Disassembler:
./pycdas [PFAD ZUR PYC-DATEI]
Die Bytecode-Disassemblierung wird auf stdout ausgegeben.
So führen Sie pycdc aus, den PYC-Decompiler:
./pycdc [PFAD ZUR PYC-DATEI]
Der dekompilierte Python-Quellcode wird auf stdout ausgegeben.
Fehler werden auf stderr ausgegeben.
Marshalled-Code-Objekte:
Beide Tools unterstützen Python-Marshalled-Code-Objekte, wie sie von marshal.dumps(compile(...)) ausgegeben werden.
Um diese Funktion zu verwenden, geben Sie -c -v <version> in der Befehlszeile an - die Version muss angegeben werden, da die Objekte selbst keine Versionsmetadaten enthalten.
Decompyle++ ist das Werk von Michael Hansen und Darryl Pogue.
Weitere Beiträge von:
Es wird unter den Bedingungen der GNU General Public License, Version 3, veröffentlicht; Siehe LICENSE-Datei für Details.