
Una UI desktop basata su Qt Widgets per esplorare il bytecode Python con pycdc/pycdas, ispezionare la decompilazione nativa e utilizzare un fallback AI per oggetti codice non supportati.
Un'interfaccia desktop basata su Qt Widgets per esplorare il bytecode Python con pycdc / pycdas, ispezionare i risultati nativi della decompilazione, importare l'output oneshot di Pyarmor e riprovare i code object non supportati con AI fallback.
L'app supporta ambienti desktop sia Windows che Linux.


.pyc / .pyoUniti (Merged)Nativo (Native)AICtrl+RL'app non invia l'intero .pyc per impostazione predefinita.
Costruisce un prompt a partire dal code object attualmente selezionato, includendo:
Questo mantiene la ricostruzione fallback focalizzata sul nodo selezionato invece che sull'intero file.
L'app attualmente preferisce gli eseguibili locali accanto al binario dell'applicazione e cercherà:
pycdc.exepycdcpycdas.exepycdasnella stessa directory del binario dell'applicazione pycdc-studio.
È possibile sovrascriverli con variabili d'ambiente:
PYCDC_STUDIO_PYCDCPYCDC_STUDIO_PYCDASL'app può importare progetti protetti da Pyarmor delegando a
Lil-House/Pyarmor-Static-Unpack-1shot.
Flusso di integrazione corrente:
oneshot/shot.py su una directory di progetto Pyarmor selezionatapyarmor-1shot generi .1shot.das e .1shot.cdc.pyI pacchetti di rilascio dovrebbero includere automaticamente la toolchain Pyarmor oneshot e le dipendenze Python richieste.
Per lo sviluppo locale, il codice corrente cerca prima i file inclusi accanto al pacchetto dell'applicazione e supporta anche un clone locale in:
external/Pyarmor-Static-Unpack-1shot/oneshot/shot.pye si aspetta che pyarmor-1shot / pyarmor-1shot.exe siano disponibili nella stessa directory di shot.py.
È necessario anche un ambiente Python in grado di eseguire shot.py, incluso pycryptodome.
Se la disposizione è diversa, è comunque possibile sovrascriverla con variabili d'ambiente:
PYCDC_STUDIO_PYARMOR_PYTHONPYCDC_STUDIO_PYARMOR_SHOTPYCDC_STUDIO_PYARMOR_PYTHONPATHPYCDC_STUDIO_PYARMOR_OUTPUT_ROOTEsempio:
git clone https://github.com/Lil-House/Pyarmor-Static-Unpack-1shot external/Pyarmor-Static-Unpack-1shot
cmake -S external/Pyarmor-Static-Unpack-1shot/pycdc -B external/Pyarmor-Static-Unpack-1shot/build
cmake --build external/Pyarmor-Static-Unpack-1shot/build --config Release
cmake --install external/Pyarmor-Static-Unpack-1shot/build --config Release
python -m pip install pycryptodome
pycdc-studioFile -> Importa progetto Pyarmor...pyarmor_runtime.1shot.* generati vengano importati nel workspaceNote:
PYCDC_STUDIO_PYARMOR_OUTPUT_ROOT.Prima di utilizzare AI fallback, apri Impostazioni e configura almeno:
URL baseChiave APIModelloIl client corrente prevede un endpoint API compatibile con OpenAI.
La finestra di dialogo delle impostazioni memorizza la configurazione del provider con QSettings e ricorre alle variabili d'ambiente quando un campo è vuoto.
Variabili d'ambiente supportate:
PYCDC_STUDIO_AI_BASE_URLPYCDC_STUDIO_AI_API_KEYPYCDC_STUDIO_AI_MODELPYCDC_STUDIO_AI_SYSTEM_PROMPTRequisiti:
Esempio:
cmake -S . -B build
cmake --build build
pycdc-studio.pyc / .pyo, oppure trascina una cartella nella finestraFile -> Importa progetto Pyarmor... per un progetto protetto da PyarmorImpostazioni dal menu in alto e configura il tuo modello AI se desideri utilizzare AI fallbackRiprova con AI sul nodo selezionato se la decompilazione nativa è incompleta o errataI casi di test più lunghi sono inclusi nella directory test/:
workflow_orchestrator.pyasync_batch_runner.pyplugin_config_resolver.pyIl repository tiene traccia solo dei sorgenti di esempio.
Per generare file .pyc locali per il test tramite trascinamento:
python test/compile_test_samples.py
Quello script scrive il bytecode compilato in test/__pycache__/.
Questo progetto è ancora sperimentale.
La vista Uniti corrente è un documento misto onesto:
Non è ancora un merge sorgente in linea completo.
Questo progetto si integra con pycdc / pycdas, il cui progetto upstream è concesso in licenza GPL-3.0.
pycdc: GPL-3.0pycdc / pycdas dovrebbero includere la nota GPL-3.0pycdc upstream inclusi in THIRD_PARTY_NOTICES.txtVedi il progetto upstream per i dettagli completi della licenza: