
Disassemblatore e decompilatore di bytecode Python in C++
Un Disassemblatore/Decompilatore di Byte-code Python
Decompyle++ mira a tradurre il byte-code Python compilato di nuovo in codice sorgente Python valido e leggibile dall'uomo. Mentre altri progetti hanno raggiunto questo obiettivo con vario successo, Decompyle++ è unico in quanto cerca di supportare byte-code di qualsiasi versione di Python.
Decompyle++ include sia un disassemblatore di byte-code (pycdas) che un decompilatore (pycdc).
Come suggerisce il nome, Decompyle++ è scritto in C++. Se desideri contribuire, crea un fork su github all'indirizzo https://github.com/zrax/pycdc
Genera un progetto o un makefile con CMake (consulta la documentazione di CMake per i dettagli)
Le seguenti opzioni possono essere passate a CMake per controllare le funzionalità di debug:
| Opzione | Descrizione |
|---|---|
-DCMAKE_BUILD_TYPE=Debug | Produce simboli di debug |
-DENABLE_BLOCK_DEBUG=ON | Abilita output di debug dei blocchi |
-DENABLE_STACK_DEBUG=ON | Abilita output di debug dello stack |
Compila il progetto o makefile generato
makemake check JOBS=4 (opzionale
FILTER=xxxx per eseguire solo determinati test)Per eseguire pycdas, il Disassemblatore PYC:
./pycdas [PERCORSO DEL FILE PYC]
Il disassemblaggio del byte-code viene stampato su stdout.
Per eseguire pycdc, il Decompilatore PYC:
./pycdc [PERCORSO DEL FILE PYC]
Il sorgente Python decompilato viene stampato su stdout.
Eventuali errori vengono stampati su stderr.
Oggetti codice marshallati:
Entrambi gli strumenti supportano oggetti codice Python marshallati, come output da marshal.dumps(compile(...)).
Per utilizzare questa funzionalità, specifica -c -v <versione> sulla riga di comando – la versione deve essere specificata poiché gli oggetti stessi non contengono metadati di versione.
Decompyle++ è opera di Michael Hansen e Darryl Pogue.
Contributi aggiuntivi da:
È rilasciato sotto i termini della GNU General Public License, versione 3; Consulta il file LICENSE per i dettagli.