Domanda

Qualcuno può dirmi quale sia l'approccio migliore per proteggere le mie DLL dei componenti in .Net?

Ho scritto alcuni componenti DLL che saranno disponibili pubblicamente. Avranno la licenza di conseguenza, ma voglio assicurarmi a livello di programmazione che nessuno stia usando i componenti all'interno delle loro soluzioni illegalmente.

Qualche idea?

È stato utile?

Soluzione

Poiché il codice è già offuscato, è possibile applicare le istanze alle classi incorporate da istanziare con una chiave di licenza prima che venga chiamato uno qualsiasi dei metodi. Se la chiave non è valida / presente, è possibile visualizzare una finestra di messaggio o restituire un errore / eccezione.     Ci sono molti esempi di dove questo viene fatto (controlla Xceed.com per uno) ma come suggeriscono i post precedenti, è semplicemente per scoraggiare gli utenti finali dal provare a usare il tuo assembly illegalmente. Non impedirlo completamente. Dato tempo e incentivi sufficienti, qualsiasi cosa può essere rotta.

Altri suggerimenti

Il tentativo di impedire alle persone di fare cose a livello tecnologico porterà solo al lavoro dedicato intorno ai tuoi sforzi per fermarli mediante il reverse engineering (a cui il codice offuscato non li fermerà mai, li rallenterà solo), pulito design della stanza e così via. La tua scommessa migliore è rafforzare a coloro che stanno ricevendo una licenza per utilizzare le tue librerie i termini di utilizzo e difendere i tuoi diritti legali per far rispettare i termini di utilizzo.

La cosa migliore che puoi fare è offuscare il tuo codice. Questo non sarà sicuro al 100% e può essere decodificato.

dotfuscator

è bello.

A corto di " non distribuendoli " non esiste un modo sicuro al 100% per impedire l'accesso non autorizzato.

È possibile esaminare i dispositivi di licenza hardware o software. Cospargere i controlli di licenza in tutto il codice e se il dispositivo non è presente semplicemente interrompere tutto.

Un'altra idea è dichiarare tutti i tipi nell'assembly come internal , quindi impostare il file EXE dell'applicazione principale come assembly amico con InternalsVisibleTo attributo assembly. Questo è in genere utilizzato per i membri interni di unit test e non ho idea di quanto sia sicuro in pratica. Ciò non impedirebbe alle persone di disassemblare il tuo assemblaggio, quindi potresti comunque voler offuscare e questo non funziona affatto se stai vendendo la biblioteca e intendi solo per i clienti delle licenze di usarla (perché dovresti fornire build personalizzate a ogni cliente).

Come ha detto phoenix, non c'è davvero alcun modo per proteggere completamente il tuo codice in quanto possono ancora essere decompilati tramite uno strumento come reflector.

Uno di questi strumenti sarebbe usare Dotfuscator .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top