Giusto una nota, visto che ho usato offuscatori per Java.
.
Un offuscatore e' bello e buono fino a che non fai una gestione decente degli errori.
Quando fai la suddetta gestione decente degli errori, la prima cosa, fondamentale, essenziale, senza la quale non vai da nessuna parte, e' il call stack della funzione in cui e' avvenuto il problema. Ed ovviamente, la funzioni in questione nel 99.99% dei casi non e' una di quelle per la quale hai fatto tutti i controlli del caso.
Ora, se il call stack contiene nomi di funzioni del tipo
aa11/ab23/...
col bippo che capisci dove e' avvenuto il problema.
.
Se l'offuscatore viene usato per evitare che qualcuno 'rubi' il codice, uno si dovrebbe fare la seguente domanda:
un programmatore esperto, in quanto tempo sarebbe in grado di ricreare il mio stesso codice, e pure meglio, avendo SOLO le specifiche di quello che deve essere fatto?
.
Spannometricamente parlando, la risposta e' una frazione del tempo che ci hai impiegato stato tu. E questo per un'infinita' di motivi, il primo dei quale e': tu probabilmente sei partito da zero, lui partira' da un bel po' di componenti gia' realizzati negli anni e che si e' messo da parte per essere riutilizzati.
.
L'unico caso in cui starebbe moolto piu' tempo e' se la tua soluzione e' assolutamente innovativa, tale per cui sei l'unico, o uno dei pochi, ad essere in grado di implementarla perche' sei l'unico o uno dei pochi, ad avere le conoscenze che sono alla base del codice scritto
MA, allora, in questo caso, la soluzione di offuscare il codice e' inutile perche faresti mooooolti piu' soldi con il brevetto o facendo il consulente.
.
La seconda domanda e': chi dovrebbe rubare il codice?
Se il codice e' scritto dal programmatore della domenica, per un professionista la sua utilita' e zero. Sta prima a rifare tutto da capo che tentare di capire le elucubrazioni mentali del suddetto programmatore.
E' come voler ricuperare il diamante dell'amante dopo averlo gettato nella discarica. Stai prima a ricomprarlo di nuovo.
Se invece il prodotto serve, si sta' prima a comprarlo perche' cosi' se qualcosa non va, si puo' prendere per l'orecchio il programmatore della domenica e dirgli
aggiusta e lo devi pure fare gratis.
E mentre il programnatore della domenica lavora 18 ore al giorno, sabati e domeniche comprese, l'acquirente sta sdraiato sul divano, in panciolle, con una bella birra fresca in mano, a guardarsi la partita, in attesa che il problema venga risolto.
.
Infine, anche se il codice e' offuscato, un vero programmatore (e non un mangiatore di ciocori - spero qualcuno capisca l'allusione :-)) quanto tempo gli serve per far saltare tutte le protezioni?
Con un buon decompiler, poco, mooooolto poco. Considerando che i sistemi piu' sofisticati usati per la protezione del software sono quelli in ambito gaming (e le aziende ci investono miliardi) e li fanno saltare il giorno stesso dell'uscita del gioco. Immaginarsi le protezioni introdotte del programmatore della domenica. Valgono quanto un lucchetto (di plastica della Mattel) sulla porta con la finestra a fianco spalancata.
.
Infine, anche se il codice e' scritto bene MA non c'e' documentazione, in quanto tempo un programmatore esperto sarebbe in grado di capire il codice a sufficienza da poterlo rigirare come un calzino?
Taaaaaaanto tempo
.
Quindi, un offuscatore a chi serve? E per cosa?
.
giusto per dire.
:-)