Assembly offuscate e protezione del codice

lunedì 23 luglio 2012 - 10.01
Tag Elenco Tags  C#  |  .NET 3.5  |  Visual Studio 2010

andrestu Profilo | Expert

Salve a tutti,
invio questo post perchè vorrei pareri e consigli su come proteggere i propri assembly compilati.
Allora, tanto per iniziare vorrei capire se da un assembly (dll) compilato e non offuscato posso risalire al codice sorgente, e non intendo solo vedere al suo interno ma ricavarne i sorgenti in modo che possano poi essere riutilizzati in un eventuale progetto. Nello specifico io sviluppo applicazioni web con VisualStudio. Forse si può fare con Net Reflector di Red Gate??
A questo punto se la risposta è si allora da quanto ho capito conviene utilizzare uno strumento di offuscamento del codice, cosa che ho già provato a fare ma non sono molto convinto del risultato, nel senso che anche dopo averlo offuscato riesco a vedere ad aprire le classi e vederne il contenuto con Net Reflector, si forse qualche cosa è offscato ma in minima parte.
avete suggerimenti in merito? software possibilmente free o se a pagamento possibilmente non molto caro...
cosa usate voi per offuscare il codice che producete?

Andrea Restucci - Web Developer

ratum99 Profilo | Junior Member

>Salve a tutti,

Ciao

>invio questo post perchè vorrei pareri e consigli su come proteggere
>i propri assembly compilati.
>Allora, tanto per iniziare vorrei capire se da un assembly (dll)
>compilato e non offuscato posso risalire al codice sorgente,
>e non intendo solo vedere al suo interno ma ricavarne i sorgenti
>in modo che possano poi essere riutilizzati in un eventuale progetto.

risposta semplice, si.


>Nello specifico io sviluppo applicazioni web con VisualStudio.
>Forse si può fare con Net Reflector di Red Gate??

purtroppo non conosco net reflector

>A questo punto se la risposta è si allora da quanto ho capito
>conviene utilizzare uno strumento di offuscamento del codice,
>cosa che ho già provato a fare ma non sono molto convinto del
>risultato, nel senso che anche dopo averlo offuscato riesco a
>vedere ad aprire le classi e vederne il contenuto con Net Reflector,
>si forse qualche cosa è offscato ma in minima parte.
>avete suggerimenti in merito? software possibilmente free o se
>a pagamento possibilmente non molto caro...
>cosa usate voi per offuscare il codice che producete?
>
>Andrea Restucci - Web Developer

Io utilizzo Dotfuscator CE, che integra perfettamente con visual studio.

c'è una parte free più semplice e una a pagamento più completa.

l'offuscamento è sempre una cosa delicata, per ogni nuovo offuscatore c'è un deoffuscatore...

quindi se qualcuno vuole fortissimamente decompilare o sbloccare il tuo software non c'è offuscatore che tenga.

una domanda migliore può essere: c'è qualcuno che lo vorrà fare?

p.s. dimenticavo.. non ho mai provato la vera efficacia di Dotfuscator CE provando a deoffuscarlo, però ho letto che funziona :-)

andrestu Profilo | Expert

intanto grazie per la risposta, ti chiedo alcuni chiarimenti:


>risposta semplice, si.

come posso procedere per risalire al codice sorgente dato un assembly non offuscato ?

>Io utilizzo Dotfuscator CE, che integra perfettamente con visual studio.

ho provato ad utilizzarlo senza effettuare cambiamenti alle varie impostazioni ma purtroppo nella finestra di output mi sono comparsi messaggi che mi avvertivano che non era possibile offuscare i generics (e altre cose), forse a causa della versione, dovrò provare con quella a pagamento.
Ho provato anche Eazfuscator lo conosci?

>una domanda migliore può essere: c'è qualcuno che lo vorrà fare?

be forse la risposta può arrivare troppo tardi, quando ormai il tuo codice è già copiato, è vero che non esiste sistema infallibile però almeno provarci...


Andrea Restucci - Web Developer

ratum99 Profilo | Junior Member

Forse c'è da fare una prefazione...

1) i linguaggi .net sono interpretati, quindi molto più facili da decompilare per vari motivi che non sto a citare.
2) l'offuscatore anche più potente, non fa altro che eliminare spazi vari, commenti e rinominare le funzioni e variabili con nomi casuali e magari rimescolandoli.
Di più non può fare per non alterare il programma.
3) una decompilazione di un programma offuscato (anche "solo" con nomi casuali di funzioni e variabili) è molto difficile da capire, quindi molto tempo per essere copiato.
Es. funzione a() con parametri d,f,g che viene chiamata dalla funzione r().

>intanto grazie per la risposta, ti chiedo alcuni chiarimenti:
>
>
>>risposta semplice, si.
>
>come posso procedere per risalire al codice sorgente dato un
>assembly non offuscato ?

non saprei non mai avuto il tempo di provarci in prima persona

>
>>Io utilizzo Dotfuscator CE, che integra perfettamente con visual studio.
>
>ho provato ad utilizzarlo senza effettuare cambiamenti alle varie
>impostazioni ma purtroppo nella finestra di output mi sono comparsi
>messaggi che mi avvertivano che non era possibile offuscare i
>generics (e altre cose), forse a causa della versione, dovrò
>provare con quella a pagamento.

Non è un problema se non ti offusca i generics, il resto lo fa.

>Ho provato anche Eazfuscator lo conosci?
>

ne ho sentito parlare, ma mai provato.

>>una domanda migliore può essere: c'è qualcuno che lo vorrà fare?
>
>be forse la risposta può arrivare troppo tardi, quando ormai
>il tuo codice è già copiato, è vero che non esiste sistema infallibile
>però almeno provarci...
>

come già detto, e alla luce del punto 3), la domanda non è se si riesce a decompilare una programma, ma perchè lo dovrebbero fare?
se scrivo un programma in 3 mesi, lo offusco anche semplicemente e una persona che me lo vuole copiare ci mette 2 mesi per capirlo e modificarlo, non lo farà.... lo riscrive e fa prima :-)

>
>Andrea Restucci - Web Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5