C #: Come rendere più difficile per Hacker / Cracker aggirare o ignorare il controllo della licenza?

Prima di tutto, capisco che quasi tutte le applicazioni possono essere violate (specialmente scritte in C #). La mia domanda qui è di renderlo un po ‘più difficile da decifrare.

Supponiamo che l’utente abbia salvato il file di licenza in Application.StartupPath, dove tutti gli utenti possono leggere.

E poi, ogni volta che l’applicazione si avvia, controlla se riesce a trovare e verificare il file di licenza.

Se l’applicazione può trovare e verificare, permettiamo all’utente di continuare con le funzionalità complete.

In caso contrario, chiediamo a MessageBox di mostrare “Senza licenza, continuare a utilizzare con la versione di prova, funzionalità limitate”.

La mia domanda è, se sono un hacker / cracker, proverei a aggirare o ignorare il controllo delle licenze invece di crackare il file di licenza, perché, se usiamo la firma RSA, è molto difficile decifrare un file di licenza.

Quindi dove dovremmo mettere il controllo della licenza?

PS: e anche, è sicuro se metto una variabile globale IsLicensed (true / false) per limitare le funzionalità? È facile per un hacker cambiare IsLicensed = true?

La legge n. 1 delle licenze software: non controlli il tuo software una volta che gli permetti di installarlo su un computer che non controlli.

Se vuoi mantenere il controllo sul tuo codice, devi renderlo un servizio web e dare all’utente finale solo un thin client che si interfaccia con quel servizio web.

In molti scenari, questo è inaccettabile, perché gli utenti vogliono essere in grado di utilizzare il loro software anche quando non hanno una connessione Internet.

In quasi tutti i casi, dovresti concentrarti sul rendere l’esperienza utente migliore, e tutte le forms di protezione dalla copia lo rendono invece peggiore. Una volta arrivato al punto in cui l’esperienza di scaricare da un sito di warez e eseguirla attraverso diverse scansioni di virus è meglio che eseguire la configurazione della licenza per la versione legit, hai perso.

Puoi offuscare il codice (rendere più difficile la decompilazione / usare il riflettore su di esso), ma con abbastanza energia e conoscenza, si romperà, dopodiché è abbastanza facile cambiare il bytecode dell’assembly, aggirando così il controllo della licenza. Inoltre, potresti investire i soldi per rendere ansible la firma dei tuoi assemblee, il che renderebbe più difficile cambiare l’assemblaggio stesso, ma con abbastanza energia (più che rompere l’offuscamento) questo può anche essere aggirato.

Il tuo objective non dovrebbe essere quello di rendere il processo di licenza indistruttibile, ma di rendere il tuo software stesso degno di essere acquistato. Questa è una protezione molto migliore. I cracker (e solo loro, gli hacker sono qualcosa di completamente diverso, vedere questo articolo per ulteriori informazioni) non saranno ostacolati da questo, ma con il software che ne vale la pena, molte più persone lo comprerebbero.

Penso che il controllo dovrebbe essere fatto in diversi punti del codice sorgente; è molto più difficile prenderli tutti di uno solo. Inoltre, se si vuole proteggere il programma scritto in C # (o qualsiasi altro linguaggio .NET), si dovrebbe prendere in considerazione l’uso di alcuni obfuscator . In contropartita un cracker o addirittura un lamer sarà in grado di decifrare un programma utilizzando alcuni software come .NET Reflector

Come accennato in precedenza, si può semplicemente usare il reflector .NET per ottenere l’intero codice sorgente del proprio software (infatti, può persino averlo in VB.NET o in altri linguaggi anche se lo si scrive in C #!). Devi offuscare l’assemblea se speri di avere anche una possibilità di rallentare i progressi di un cracker.

Cosa impedisce alle persone di copiare direttamente le licenze? Se hai una licenza firmata, verrà firmata in due punti: cosa hai messo in atto per fermare questo? Non importa se una variabile globale indebolirebbe ulteriormente la tua protezione senza tenere conto di banali “crepe”.

Non c’è davvero una buona risposta a questo, come ha sottolineato Ben Voigt. Se hai bisogno di qualcosa che non è ansible copiarlo, rendilo un’applicazione web closed-source. Astalavista ti mostrerà che molte cose sono state infrante. I prodotti Adobe che costano migliaia di dollari sono stati danneggiati e sono sicuro che i loro dipendenti sono abbastanza esperti in tecniche di protezione dalla copia.