2010-08-12 16 views
6

Volevo sapere quanto è facile decompilare il codice byte Python. Ho creato un'applicazione in python di cui voglio essere sicuro. Sto usando py2exe che fondamentalmente si basa su file compilati con Python.È facile decompilare completamente i file python compilati (*. Pyc)?

Questo protegge il codice?

+0

possibile duplicato di [Come proteggere il codice Python?] (Http://stackoverflow.com/questions/261638/how-do-i-protect-python-code) –

+2

Ah ... Dopo 3 anni, I rendersi conto di quanto sia assurda la protezione del codice. Infatti, tra i linguaggi diffusi come C/C++ non esistono altri linguaggi che non possono essere decompilati. – Shubham

risposta

6

Dipende dalla definizione di "completamente" (in "completamente decompilata") ... ;-). Non sarà facile recuperare il codice sorgente Python originale, ma ottenere il codice è semplice e il modulo libreria standard dis esiste esattamente per rendere facilmente leggibile il bytecode (sebbene sia ancora codice sorgente, non completo codice sorgente Python ;-) .

+0

Bene anche i decompilatori C++, ma sono solo inutili. Non ottengono il codice sorgente originale ma solo alcune istruzioni a livello di assemblaggio. SO per full decompiable intendo quale * effettivamente * genera il * codice sorgente * effettivo *. – Shubham

+0

Non si otterrà il "codice sorgente effettivo". I commenti saranno spariti. Ma nomi di variabili, nomi di metodi, costanti, stringhe e tutta la logica che applichi a loro, saranno leggibili da qualcuno abbastanza interessato. –

+1

@Shubham, sì, @Ned ha ragione: il bytecode Python è molto più vicino al sorgente Python, che il linguaggio assembly è al sorgente C++ da cui è stato creato. Qualsiasi esperto Python degno di questo nome sarà in grado di ricostruire la logica della sorgente precisamente dal bytecode, e senza averne per sempre (non che farlo dal codice assembly sia molto più difficile - guarda quanto tempo ci vuole per ogni nuovo stupido schema di "protezione della copia" per un gioco da smontare, capire e rompere ... ;-). –

1

Se si esegue la ricerca in linea, è possibile trovare i decompilatori per codice bytecode Python: è disponibile una versione gratuita per il download ma che gestisce solo bytecode fino a Python 2.3 e uno online service che verrà decompilato fino alla versione 2.6.

Sembra che non ci siano ancora decompilatori per le versioni più recenti di bytecode Python, ma questo è quasi certamente solo perché nessuno ha sentito il bisogno di scrivere uno piuttosto che una difficoltà fondamentale con il bytecode stesso.

Alcune persone hanno cercato di proteggere bytecode Python modificando l'interprete: non c'è alcun motivo particolare per cui non è possibile compilare il proprio interprete con i diversi valori utilizzati per il bytecode: che impedirà semplice esame del codice con import dis, ma non si leverà in piedi a lungo a qualsiasi attacco determinato e tutto costa denaro che il codice sia meglio messo a migliorare il programma stesso.

In breve, se si desidera proteggere il programma, utilizzare la legge per farlo: utilizzare una licenza software appropriata e perseguire coloro che la ignorano. Il codice è costoso da scrivere, ma il risultato finale è raramente la parte preziosa di un pacchetto software: i dati sono molto più preziosi.

Problemi correlati