Domanda

Ho un .NET DLL (C # / VB) con controlli personalizzati, estensione e altre cose.

Voglio che dovrebbe essere disponibile solo per me. C'è un modo per limitare l'accesso non autorizzato a un DLL?

È stato utile?

Soluzione

La soluzione migliore è quella di confezionare / cifrare / offuscare la DLL come Anton sottolineato. E poi pregare che nessuno passerà attraverso tutti i problemi di disimballaggio esso.

Il termine usuale per questo è semplicemente "imballaggio".

Questo è ciò che gli sviluppatori di giochi fanno con f.ex di Sony SecuROM .

Ma tutti i programmi di imballaggio hanno gli stessi svantaggi:

  1. Possono essere progettazione inversa e la chiave di crittografia devono essere incorporati nel file binario
  2. Di solito costano soldi, e quelli che non ( UPX ) fare sono facilmente decompressi .
  3. problemi
  4. incompatability Platform possono essere introdotte dal processo di spacchettamento.
  5. Pranzo binari tendono a freak Anti-virus fuori.

Le aziende che utilizzano imballatori di solito file binari delle navi che devono essere in grado di girare su ogni computer pensabile. Se davvero sul serio, penso che si potrebbe criptare ogni singola DLL fornito con una chiave unica e quindi lo richiedono essere eseguito con accesso ad internet per un po 'di magia challenge-response durante la fase di decodifica. Overkill in ogni caso.

Si potrebbe anche fare il vostro proprio packer, ma credetemi quando dico che: Non si vuole andare lì;)

In breve, ciò che si vuole non è semplice da realizzare anche per i grandi giocatori. Quanto tempo ci vuole per un gioco SecuROM di presentarsi sul piratebay? Quindi l'unica cosa che puoi fare è "alzare il tiro" e la speranza di passare inosservato dai buoni inversa-ingegneri.

Infine, sapere cosa si sta ottenendo in te stesso: Sarà valsa la pena per te? Diciamo che hai spedito la DLL scompattato - così com'è. La gente sarà ancora bisogno di decodificare per usarlo. Chi usa librerie di terze parti non documentati in ogni caso? Ho fatto solo una o due volte nei momenti di follia.

Altri suggerimenti

Beh, non ridistribuire l'assemblea, in primo luogo. Non appena il montaggio è fuori in natura, chiunque può utilizzarlo. È possibile effettuare questo più difficile da offuscamento , ma "punti di ingresso" sarà ancora lì e utilizzabile .

In teoria, si può fare qualcosa con la CAS , ma non sono particolarmente sicuro che questo è a tutto il possibile.

Forse è possibile utilizzare strumenti di licenza / protezione contro la copia per alterare la DLL. E dentro il chiamante, si fornisce il numero di licenza richiesta.

Questo non è del tutto possibile. Se si desidera che il codice venga eseguito, deve essere eseguibile. Si può mettere in assegni, imballaggio, chiavi di crittografia, cani da guardia, monitor, guardiani, e vari schemi di licenza, ma alla fine della giornata se il codice funziona deve essere sbloccato in qualche modo che possa essere utilizzato.

Questo è il motivo per cui il DRM non funziona. Vuoi proteggere X, ma si desidera che qualcun altro per visualizzarlo. Il problema è che la persona non si vuole la visualizzazione / usando X e la persona che si desidera utilizzare X sono, a un certo livello, la stessa persona .

ho ottenuto così stufo di trattare con il codice di licenza 3rd party (rottura / annullamento della registrazione / pensare che non ero un utente legittimo, quando avrei dovuto essere) che sono diventato un membro del FSF. Non vale la pena il mio tempo per aggirare le restrizioni di qualcun altro, e non vale la pena il mio tempo per trattare con loro. Il loro codice non era poi così speciale.

Se sei forte denominazione vostre assemblee, è consigliabile utilizzare il PublisherIdentityPermissionAttribute . È possibile aggiungere questo al vostro DLL e solo assembly firmati con la chiave editore destra sarà in grado di rimettere in quel metodo o classe.

Questa è gratuito e integrato nel framework .NET. Se avete bisogno di funzionalità aggiuntive (come la possibilità di concedere in licenza il DLL ad altri sviluppatori) prendere in considerazione uno strumento professionale di protezione livello copia come il nostro strumento di DeployLX licenza.

È necessario aggiungere i controlli nella DLL per verificare che il chiamante si è. Ma questo solleva altre sfide:

Come si fa a dimostrare che siete siete a una DLL. (Si potrebbe verificare la presenza di qualcosa di più semplice come il nome utente corrente, ma che potrebbe non essere perfetta).

Si potrebbe richiedere che il file exe è firmato dal certificato.

Si dovrebbe verificare l'infrastruttura di licenza. Non ho idea di come implementare, ma lo si utilizza con la creazione di un file .licx e poi, credo, il processo di generazione utilizza lo strumento lc.exe di fare qualcosa per incorporare la licenza.

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