Offuscare il proprio codice gratuitamente

Lunedì 23 Febbraio 2009 - 08:29

di Gianni Malanga

Microsoft Dev

Con “offuscare” intendiamo rendere il nostro codice difficilmente leggibile e quindi copiabile da chi ne vorrebbe fare un uso improprio.

Ovviamente l’invito è sempre quello di produrre codice leggibile, manutenibile e pulito dal punto di vista stilistico ma, come è chiaro, non è di questo che stiamo parlando.

Credo che tutti voi avrete sentito parlare di questi tool dal nome particolare, gli obfuscator. Per chi non lo sapesse: gli obfuscator nascono e si diffondono di pari passo con il .NET Framework e rappresentano il modo che si è cercato di seguire per evitare che il nostro codice potesse essere facilmente letto da chi fosse entrato in possesso degli assembly delle nostre applicazioni, che come è noto possono essere facilmente “decompilati” con strumenti quali il famoso .NET Reflector.

Credo quindi che molti si siano cimentati nella ricerca di un obfuscator gratuito ma forse ancora più di un obfuscator semplice da usare. Era da un po’ che ne cercavo uno che avesse entrambe queste caratteristiche e finalmente sono riuscito a trovarlo.

Si chiama Eazfuscator.NET ed è un prodotto innanzitutto del tutto gratuito e poi anche straordinariamente semplice e comodo da utilizzare. Realizzato da Oleksiy Gapotchenko, Eazfuscator.NET richiede solo di essere installato; quindi potrete avviare il suo Eazfuscator.NET Assistant, ovvero una piccola finestrella avente tre aree (contrassegnate da icone molto esplicite) nelle quali trascinare assembly oppure progetti dall’interno di Visual Studio stesso, per “offuscarli” o “de-offuscarli”.

Se offuscate un singolo file assembly, l’operazione si concluderà al termine dell’offuscamento, mentre se trascinate nell’Assistant un progetto dal Solution Explorer di Visual Studio, Eazfuscator.NET registrerà un post build event nel progetto in modo tale che l’offuscamento possa essere eseguito ad ogni ricompilazione del progetto stesso e quindi senza una ulteriore azione da parte dell’utente. Davvero estremamente semplice e comodo.

Tags:

Categoria: Microsoft Dev | Permalink

Commenti

1

scusa l’ignoranza, ma cosa vuol dire “manutenibile”?

# - postato da Michele - 23 Febbraio 2009 - 12:02

2

Facile da aggiornare e da correggere sia da parte di altre persone che da parte dello stesso sviluppatore che l’ha scritto.

# - postato da Gianni Malanga - 23 Febbraio 2009 - 12:07

3

Non sarebbe “mantenibile”?

# - postato da Mattia - 23 Febbraio 2009 - 14:10

4

L’unica utilità che ci vedo è quella di nascondere il codice per non far vedere agli occhi di un esperto eventuali porcherie sul codice.
Gli obfuscator come questo sono il tentativo di trasportare anche nel web la solita filosofia di Microsoft…

# - postato da cristian - 23 Febbraio 2009 - 14:47

5

@cristian
Gli obfuscator come questo sono il tentativo di trasportare anche nel web la solita filosofia di Microsoft…
E mò questo che c’entra scusa?
Gli offuscatori esistono dalla notte dei tempi, praticamente per tutti i linguaggi in circolazione (php, javascript compresi).. la proprietà intellettuale può essere difesa proprio con strumenti come questo.. pane per i programmatori.

# - postato da ZofM - 23 Febbraio 2009 - 18:05

6

la proprietà intellettuale può essere difesa proprio con strumenti come questo..

Si può difendere la proprietà intellettuale con una Raccomandata con ricevuta di ritorno o una PEC senza quindi limitare la “libertà dell’utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software” :)

# - postato da pao - 23 Febbraio 2009 - 21:51

7

Ma davvero credete alle cose che scrivete? (mi riferisco a persone come cristian)

# - postato da Andrea - 24 Febbraio 2009 - 00:06

8

Si Andrea ci credo al 100% e come me tanti altri, perché se internet esiste e siamo qui a poter pacificamente commentare un blog è sopratutto grazie a chi non fa uso di strumenti come questi.

# - postato da cristian - 24 Febbraio 2009 - 09:36

9

L’obfuscator è il tipico prodotto di un’azienda basata sul segreto industriale usato per impedire all’utenza e al mercato di sporcare l’immagine aziendale venendo a conoscenza di cose che devono rimanere nascoste.
Forse hanno la coscienza sporca?

# - postato da Ratamusa - 24 Febbraio 2009 - 10:39

10

Il punto è questo: solo perché si parla di Microsoft allora la notizia è da boicottare in partenza. Punto.
(Gianni ti penso sempre.. sono con te!!)

Programmo da parecchio tempo ormai e sinceramente, quando vendo un software, mi sento di doverlo proteggere in tutti i modi io conosca. Ho lavorato mesi a quel progetto, il mio cliente ha pagato, perché devo “offrirlo” al popolo?

Badate bene, sono il primo a scrivere articoli/guide/”semplici” pezzi di codice (cercate pure su google) e pubblicarli online per dare la possibilità agli altri di usufruirne. Io poi, come tutti, utilizzo codice di altri.

Ma un conto è dare suggerimenti o spiegazioni su come è fatto qualcosa, un conto è dare i sorgenti delle mie applicazioni (e non parlo di siti, ma di applicazioni standalone o servizi server). Per cosa avrei lavorato allora? Il mio cliente non sarebbe felice sapendo di aver pagato qualcosa che tanti altri ora possono avere..

Non capisco.. le grandi ditte hanno bisogno di proteggere il proprio operato. Si spende parecchio per tante cose.. il personale in primis, che dovrà lavorare sia alla realizzazione che alla manutenzione del software (ancora + importante).

Io mi guadagno da vivere con questo lavoro, e in tanti anni, il software migliore che ho utilizzato è sempre stato quello a pagamento.

Anche io ho la coscienza sporca..(??)

# - postato da ZofM - 24 Febbraio 2009 - 11:46

11

Sono solito non rispondere alle provocazioni ma visto che in fondo ne state discutendo pacificamente, penso di dire anch’io la mia.

Ovviamente mi riferisco a coloro che sono contrari alle tecniche di offuscamento. Bisogna capire che come in tutte le cose della vita e del mondo, non esiste mai il nero ed il bianco ma ci sono sempre centinaia di sfumature di grigio. E’ vero che da una parte se non fossero esistite persone con l’idea della libertà e della condivisione delle informazioni oggi forse Internet non esisterebbe nella forma in cui la viviamo noi ora ma è anche vero che d’altra parte la gente non è tutta brava e buona e quindi sarebbe stato ovvio che prima o poi qualcuno (anzi sicuramente in tanti) avrebbe trovato il modo di portare ricchezza al proprio mulino sul lavoro degli altri. Se tutto il codice fosse libero non esisterebbero i consulenti informatici come molti di noi qui in questo blog, ne tanto meno esisterebbero le aziende informatiche che pure danno lavoro a centinaia di persone.

Per farla breve, software libero si, va bene, ma non tutto libero. Affinchè possa nascere un’azienda è necessario che i prodotti di questa siano tutelati. E poi pensateci, perchè se voi lavorate in un’azienda informatica, è soltanto perchè ci sono strumenti come gli offuscatori, altrimenti ora stareste lavorando in un’azienda metalmeccanica e fareste i programmatori per hobby.

Provate un pò a cercare le cifre relative all’occupazione nell’informatica e a confrontare il numero di persone che lavorano per aziende “normali” ed il numero di persone che lavorano per aziende che trattano software “libero”. Non notate qualcosa?

Scusate per la lunghezza del commento, ma un argomento importante richiede anche commenti approfonditi :-)

# - postato da Gianni Malanga - 24 Febbraio 2009 - 11:50

12

Grazie ZofM! Effettivamente mi sento come un criceto in una gabbia di leoni affamati :-)))))

# - postato da Gianni Malanga - 24 Febbraio 2009 - 11:54

13

Zofm se mi parli di software sono in parte d’accordo con te e con quanto scritto da Gianni, ma io mi riferivo principalmente al discorso web.
Io Non mi sognerei mai di fornire al cliente un sito web con codice offuscato ritengo che abbia tutto il diritto di poter ampliare o modificare il sito in futuro e non capisco perché debba essere io ad impedirglielo.
Poi è vero che non è una prerogativa di Microsoft, sono stati fatti anche tentativi di applicazioni offuscate in PHP , che per fortuna (secondo me) non hanno avuto il successo sperato.

# - postato da cristian - 24 Febbraio 2009 - 14:56

14

Ah ok, così sono d’accordissimo con te. Io dò sempre tutti i sorgenti ai miei clienti.. in questo modo possono benissimo modificare autonomamente l’applicazione web. L’ho sempre fatto e sempre lo farò! ;)

# - postato da ZofM - 24 Febbraio 2009 - 15:06

15

Io non sono per niente d’accordo. Ma scusate, perchè un’applicazione Web è per caso un’applicazione di seconda serie? Ma avete presente cosa è una “Applicazione Web”? Forse stiamo parlando di siti HTML e non me ne sono accorto.

# - postato da Gianni Malanga - 24 Febbraio 2009 - 15:13

16

Beh dipende dalle “dimensioni” del progetto.
Se si parla del sitarello per tal-dei-tali è un conto. Se si parla di portali e/o grosse società allora il discorso è diverso.
Io però dò in mano tutti i sorgenti al cliente. Alle volte poi, anche se sono molto geloso del mio codice, mi fa comodo sapere che “ci pensano loro” (nn ho tempo per tutto/i)!

Io forse differenzierei in una applicazione Web realizzata come servizio utilizzato da più clienti oppure il classico “sito”.
Nel caso del servizio sarebbe giusto (pre)compilare e, eventualemnte, offuscare.

# - postato da ZofM - 24 Febbraio 2009 - 15:25

17

Offuscare, per talune aziende, significa solo nascondere cose imbarazzanti per l’immagine aziendale tutto il resto è una frottola raccontata a tontoloni e sprovveduti (dal punto di vista dell’azienda, naturalmente).

Le esigenze di protezione del proprio lavoro (legittime) vengono a meno se si programma per la macchina giusta e nella maniera migliore.
Tra l’altro quelle protezioni, qualunque esse siano, non fermano nessun hacker degno di tale nome. Se vuole usare un’applicazione o, semplicemente aprirla lo fa, protezioni o non protezioni.

Le protezioni danneggiano e intralciano solo gli utenti onesti.
Dalle mie parti, nelle aziende sotto i 50 dipendenti, spesso e volentieri le applicazioni usate sono crackate in una percentuale che varia dal 50 al 100%, con una media di 2/3 (calcolata supponendo che ci sia qualcuno di onesto che si paga tutte le licenze di cui ha bisogno) per cui quegli offuscatori e quelle protezioni servono solo a incrementare i profitti della casa produttrici e le spese di chi li compra perchè crede di proteggere il suo lavoro o perchè li trova nell’applicazione.

# - postato da Ratamusa - 24 Febbraio 2009 - 20:29

18

secondo voi allora io dovrei continuare a studiare e scrivere centinaia di righe di codice al giorno per poi consentire al primo bimbominkia che sa a malapena cos’è una variabile di copiare ed incollare il mio codice permettendogli anche di quandagnandoci sopra?

Voi state male!

Ci sono i progetti open source se vi interessa quell’aspetto della programmazione… ma non ve ne uscite con le cavolate del software libero per tutti a tutti i costi.

A chi dice che la proprietà intellettuale si può difendere con le raccomandate dico semplicemente che nessuno è talmente stupido da copiarti per intero l’applicazione… basta un metodo o un algoritmo, magari quello su cui hai penato di più… e vallo a dimostrare che te l’hanno fregato… bastano un paio di modifiche ed il gioco è fatto.
Se quel metodo che io ho creato lo voglio rendere pubblico o meno saranno cavoli miei o no?

Forse confondete la condivisione delle conoscenze con la proprietà intellettuale…

Ci sono migliaia di blog e forum dove condividere le conoscenze… ma questo non da diritto a nessuno di scopiazzare il codice altrui a piacimento… a meno che l’autore non lo permetta.

Se no a questo punto vale tutto… allora diventiamo tutti poeti “Mi illumino d’immenso”… facile no?

# - postato da Alex - 02 Agosto 2009 - 20:59

19

No, guarda….. Se ci sono bimbiminkia, per così dire, ci sono anche hacker,cracker o lamer un po’ avveduto che di quell’offuscamento se ne fanno un baffo….Se poi il bimbominkia tuo amico, ti scopiaza malamente il tuo codice….Sappi che prima o poi la smetterà. Soprattutto se usi qualche trucco nel tuo codice. Scopriteli da solo…

# - postato da Ratamusa - 04 Agosto 2009 - 09:42

20

non esagerare… che l’offuscamento del codice non sia la soluzione siamo daccordo, ma ti assicuro che risalire al codice originale non è come bere un bicchiere d’acqua… a meno che uno non decida di usare dotfuscator o altri tool per bambini dove basta crearsi una semplice routine che si decripti stringhe e nomi di classi e metodi.
Cosa che, pur essendo facile da mettere in pratica, richiede una perdita di tempo notevole.

Gli offuscatori più efficienti implementano il Control Flow Obfuscation, assembly merging, ecc.
Tutte cose superabilissime ma che creano ulteriori perdite di tempo.

Attualmente per reversare codice .net offuscato per bene richede molta ma molta pazienza… cosa che probabilmente non fermerà i reverser più accaniti ma tui assicuro che ne scoraggia tantissimi.

# - postato da Alex - 05 Agosto 2009 - 16:09

21

Io rimango del parere che il closed source a cui il codice offuscato appartiene in qualche maniera è la soluzione adatta solo a complicare la vita e….Per allungare la vita ad un post di quasi 6 mesi fa…Notevole, no?

# - postato da Ratamusa - 17 Agosto 2009 - 09:35

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento