Prima di tutto, rendersi conto che il dongle fornirà solo un piccolo ostacolo. Qualcuno che sa cosa stanno facendo rimuoverà semplicemente la chiamata al dongle e inserirà un 'vero' per qualunque risultato sia stato chiamato. Tutti ti diranno questo. Ma ci sono blocchi stradali che puoi aggiungere!
Vorrei trovare una parte chiave del codice, qualcosa che è difficile o difficile da sapere, qualcosa che richiede la conoscenza del dominio. Quindi metti quella conoscenza sulla chiave. Un esempio di questo sarebbe routine di shader. Le routine di Shader sono file di testo che vengono inviati a una scheda grafica per ottenere effetti particolari; un semplicissimo filtro luminosità/contrasto richiederebbe meno di 500 caratteri da implementare, e lo si può archiviare nello spazio utente sulla maggior parte dei dongle. Quindi metti quelle informazioni sulla chiave e usi solo le informazioni dalla chiave per mostrare le immagini. In questo modo, se qualcuno cerca semplicemente di rimuovere il dongle, tutte le immagini del tuo programma saranno oscurate. Ci vorrebbe qualcuno che avesse una copia del tuo programma, afferrasse il file di testo dalla chiave, e poi modificasse il tuo programma per includere quel file di testo, e poi sapendo che quel particolare file sarebbe il modo "giusto" per visualizzare le immagini. I dettagli dell'implementazione dipendono dalla piattaforma di distribuzione. Se stai eseguendo un programma in WPF, ad esempio, potresti essere in grado di memorizzare una routine directx sulla tua chiave, quindi caricare la routine dalla chiave e applicare l'effetto a tutte le immagini della tua app. Il cracker deve quindi essere in grado di intercettare quella routine di directx e applicarla correttamente.
Un'altra possibilità è utilizzare le routine di generazione del numero casuale della chiave per sviluppare UID. Non appena qualcuno rimuove la funzionalità dongle, tutti gli UID generati verranno azzerati.
La cosa migliore da fare, però, è mettere una funzione specifica del dominio sul dongle (come l'intera routine di generazione di UID). Diversi produttori avranno diverse capacità in questo senso.
Quanto di un blocco stradale ti prenderà queste astuzia? Realisticamente, dipende dalla popolarità del tuo programma. Più popolare è il tuo programma, più è probabile che qualcuno voglia craccarlo e dedicherà il proprio tempo a farlo. In questo scenario, potresti avere qualche giorno se sei particolarmente bravo a codificare i dongle. Se il tuo programma non è così popolare (solo poche centinaia di clienti, per esempio), allora solo la presenza di una chiave hardware potrebbe essere abbastanza dissuasivo senza dover fare nulla di intelligente.
"P.S: per favore non suggerire di offuscare, l'ho già fatto." lol. –