Domanda

Sto lavorando alla creazione di una versione di prova completamente funzionale di un software.Ora, poiché non voglio una prova limitata nel tempo (come una prova di 30 giorni) o con funzionalità limitate, sarebbe carino optare per la prova del "numero di volte in cui un utente può eseguire il software".

È un'applicazione .NET basata su C# e sto cercando di trovare un modo per implementarla.Ho provato chiavi di registro, monitoraggio basato su file ecc., ma non sembrano essere molto affidabili.

Apprezzerei davvero l'aiuto su questo argomento.

Grazie, Rohan

È stato utile?

Soluzione

I due modi normali in cui viene tenuto traccia di un periodo di prova sono con una chiave di registro e con un servizio web:

  • Chiave di registro: Implementare un metodo per mantenere il numero di avvii del programma in una chiave nel registro di Windows, probabilmente con una sorta di offuscamento.Uno schema di crittografia "salato", in cui si crittografa uno schema contenente il proprio valore più un valore dipendente dalla macchina come l'indirizzo MAC della scheda NIC, probabilmente funzionerebbe meglio;assicurati che il tuo codice sia difficile da decompilare, usando qualcosa come Dotfuscator.Sarebbe meglio inserire la chiave in alcuni punti utilizzando il programma di installazione, in modo che il programma possa semplicemente trattare l'assenza della chiave come un tentativo di manomissione.

    Quindi, all'avvio, recupera la chiave, decrittografala e ispezionala.Se è quello che ti aspetti, aggiungi 1 al valore, riscrivilo nel registro e, se il nuovo valore è maggiore del numero di avvii consentiti, blocca l'utente.Se la chiave di registro ha un valore che non ti aspetti (il che significa che è stata manomessa), inclusa la mancata presenza, blocca semplicemente l'utente.

    Il vantaggio di questo approccio è che fornisce una sicurezza molto elevata senza bisogno di Internet.Lo svantaggio è che i dettagli "dipendenti dalla macchina" possono cambiare per motivi legittimi e quando ciò accade l'utente viene bloccato prima di aver utilizzato tutti i suoi avvii, il che può frustrare gli utenti.Inoltre, la tua implementazione per il salting e la crittografia è presente sul computer dell'utente;un hacker sofisticato avrà modi per esaminare il tuo programma anche se offuschi il codice e potrà scoprire la tua implementazione e imitarla per "resettare" il contatore.Ci vuole solo una persona che possa farlo e ci sarà una semplice app Warez per consentire a chiunque altro di farlo.

  • Servizio web:Implementa un servizio WCF su un server che controlli.Bloccalo saldamente, in modo che l'unico modo per entrare o uscire dall'esterno della LAN sia attraverso la porta WCF esattamente come previsto da WCF.Ora implementa un client nel tuo programma e il suo programma di installazione.Al momento dell'installazione, il programma di installazione chiamerà un metodo di servizio dicendo che il software viene installato su una macchina con un particolare indirizzo MAC o ID hardware.Se non hai quella macchina univoca elencata nel tuo database, aggiungila;altrimenti non fare nulla.Quindi, all'avvio del programma, chiama il servizio Web dal tuo programma, passa le stesse informazioni e il servizio Web aggiornerà il numero di avvii e restituirà un valore che indica al client se è consentito l'avvio.

    Il lato positivo di un servizio web è che sarà molto difficile spostarsi in un modo che possa essere commercializzato in massa tramite Warez;il modo principale per attaccare un sistema del genere è hackerare il server delle licenze, oppure inserire un "uomo nel mezzo" che possa reindirizzare la richiesta del programma per il servizio web a un computer che controlla.Lo svantaggio è che le modifiche all'ID hardware di un computer possono comunque causare blocchi precoci o, peggio ancora, consentire una soluzione alternativa consentendo all'aggressore di falsificare semplicemente un nuovo indirizzo MAC o ID hardware mai visto prima e reinstallare il software che fornisce l'ID hardware all'utente una nuova serie di avviamenti sulla "nuova" macchina.Esistono anche modi per impedirlo, ma ogni livello di offuscamento e controllo anti-hacking aggiunto rappresenta un ulteriore livello di complessità.

Qualunque cosa tu faccia, ricorda la regola 80/20;L'80% dei tuoi utenti sarà mantenuto onesto adottando le misure più basilari per garantire la procedura di prova.Il 20% dei tuoi utenti troverà un modo per aggirare questo problema.Di quel 20%, l’80% sarà ostacolato da qualsiasi misura aggiuntiva messa in atto.Questo processo è ricorsivo;il punto è che qualcuno, da qualche parte, eviterà qualsiasi misura tu abbia messo in atto, ma se i conti reggono, il 96% dei tuoi utenti si arrenderà e ti pagherà per l'accesso completo di fronte a una chiave di registro cifrata a turni e un programma offuscato codice.Puoi ottenerlo al 99,2% degli utenti aggiungendo qualcos'altro, come salare la chiave offuscata con qualcosa di specifico della macchina.

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