Domanda

Potrebbe essere duplicato con altre domande, ma giuro che ho concentrandoci molto e cercare in StackOverflow.com molto, e non riesco a trovare la risposta alla mia domanda:

In un'applicazione C # .Net, dove memorizzare le informazioni di prova di protezione, come ad esempio data di scadenza, Numero di volte usata?

Lo capisco, tutti i tipi di strategie di protezione del software può essere violata da un hacker sophiscated (perché possono quasi sempre aggirare il passo di scadenza il controllo). Ma quello che ora sto andando a fare è solo per proteggerlo in modo ragionevole che un "comune" / "avanzato" utente non può rovinare tutto.

OK, al fine di prova che ho Googled e cercato molto in StackOverflow.com, sto elencando tutte le possibili strategie che ho ottenuto:

1. Voce del Registro di sistema

In primo luogo, alcuni utenti potrebbe non avere l'accesso anche leggere la tabella del Registro di sistema.

In secondo luogo, se mettiamo la protezione Trial Info in una voce del Registro, l'utente può sempre trovare fuori dove è confrontando le differenze prima e dopo l'installazione del software. Essi possono semplicemente cambiare.

OK, si potrebbe dire che dovremmo criptare la Protezione Info Trial, sì, possiamo farlo. Ma cosa succede se l'utente basta cambiare la data di sistema prima di installare?

OK, si potrebbe dire che dovremmo anche mettere un ultimo usato Data, se qualcosa non va, l'ultimo utilizzato data potrebbe funzionare come una guida di protezione. Ma cosa succede se l'utente semplicemente disinstallare il software e eliminare tutte le voci di registro relative a questo software, e quindi reinstallare il software?

Non ho idea su come affrontare la questione. Si prega di aiuto.

Un normale file

In primo luogo, ci sono alcuni posti per mettere il file di pianura:

  • 2.a) un semplice file XML nel percorso di installazione del software
  • 2.b) file di configurazione

Anche in questo caso, l'utente può semplicemente disinstallare il software e rimuovere questi file di pianura (s), e reinstallare il software.

- il software stesso

Se mettiamo le informazioni di prova di protezione (data di scadenza, non possiamo mettere Numero di volte usato) nel software stesso, è ancora suscettibile di casi che ho citato sopra. Inoltre, non è nemmeno raffreddare a farlo.

- A prova del prodotto-Key

Funziona come un processo di autorizzazione, cioè, abbiamo messo le informazioni di prova in una stringa RSA-firmato. Tuttavia, esso richiede troppi passaggi per un utente per avere una prova di utilizzare il software (che potrebbe perdere la pazienza):

  • 4.a) l'utente scarica il software;
  • 4.b) L'utente invia una e-mail per richiedere una versione di prova del prodotto-Key fornendo nome utente (o e-mail) o info hardware;
  • 4.c) Il server riceve la richiesta, RSA-segni e inviare di nuovo per l'utente;
  • 4.d) L'utente può ora utilizzare sotto la condizione di (data di scadenza e numero di volte utilizzato).

Ora, il server ha un record di nome utente o hardware informazioni dell'utente, quindi l'utente sarà rifiutato di chiedere un secondo processo. E 'legale informazioni raccolta hardware?

In una parola, l'utente deve fare un passo in più in più (richiedere un codice Product Key di prova) solo per avere una prova di utilizzare il software, che non è cool (a pensare come un utente).

Nota: Questa domanda non riguarda il Licensing, invece, si tratta di dove memorizzare le informazioni TRIAL. Dopo la scadenza della prova, l'utente deve richiedere una licenza (CD-Key / Product-Key). Ho intenzione di utilizzare la firma RSA (legato a Hardware User)

P.S .: Il mio software saranno destinati a un mercato cinese, il cui mercato del software è diverso da noi. La maggior parte delle persone in Cina, hanno solo acquistare l'hardware, di solito non acquistare software come Micosoft di Windows / Office (che hanno appena utilizzano copie pirata). Tuttavia, alcuni software professionale che mira ad un campo specifico, la gente di ricerca sono ancora disposti a comprare, se non esiste una versione crack o la versione crack è molto difficile da installare.

È stato utile?

Soluzione

In ogni opzione 1 (chiave di registro normale) o 2 (normale file) è più che bene. Ecco il mio ragionamento:

  • utenti standard privilegiati non hanno letto le autorizzazioni per il Registro di sistema. Se essi non possono leggere la chiave, qualcosa è sbagliato. gli utenti standard privilegiati non dispongono di autorizzazioni di scrittura per il Registro di sistema, ma questo non importa, perché anche loro non dispongono di autorizzazioni per installare il software, in primo luogo. In altre parole, sia l'utente dovrà avere l'autorizzazione per creare la chiave di registro al momento dell'installazione, o avranno bisogno di aiuto l'installazione in ogni caso. Pertanto le questioni tecniche di base che è sollevato per la chiave di Registro di sistema non sono davvero un fattore.
  • Basta non ti preoccupare quegli utenti che fanno cose come set indietro il loro orologio di sistema o hack manualmente il Registro di rompere la chiave. Permettetemi di dire che ancora una volta: Solo che non si preoccupano gli utenti che prendere una decisione consapevole di cambiare il loro sistema in modo significativo per ottenere oltre i vostri limiti di prova - e non fare errore, impostare di nuovo l'orologio di sistema o la modifica del registro di sistema sono modifiche significative. La ragione per cui non si deve preoccupare di questi utenti è che rappresentano esattamente $ 0 reddito potenziale . Un utente disposto a fare a prendere questo tipo di scelta consapevole di piratare il software non ha intenzione di fare solo e decidere di pagare per il tuo prodotto, se non funziona. Se non possono ottenere il software gratuitamente, faranno o andare con un concorrente o di fare a meno. Sei in questo per fare soldi - non si vuole spendere tempo e risorse cercando di afferrare le vendite non si può vincere o l'invio agli utenti di un concorrente. Pertanto, i problemi di sicurezza di base che è sollevato per entrambe le opzioni non sono un fattore.

Altri suggerimenti

Non troverete un'unica soluzione perfetta. Gli sforzi che mettete in questo dovrebbe essere proporzionale al prezzo del prodotto si fanno. Se si tratta di un sacco vale la pena, poi acquistare una soluzione professionale. Se no, allora utilizzare qualsiasi combinazione di metodi che trovate. Utilizzare il Registro di sistema, richiedere una chiave di prova in linea, verificare che le manipola utente l'ora di sistema, e così via.

Vorrei suggerire di prendere un tatto leggermente diversa.

Dare una versione "lite" del software via. Nessun processo, funzionalità solo molto limitata.

Se vogliono prova una versione "professionale" poi chiedere loro di ottenere una chiave di prova. Questo dovrebbe essere codificato in un formato, conservarlo dove vuoi. Quando l'applicazione si avvia, prova per l'esistenza di questa chiave di prova. Se è lì poi decifrarlo. All'interno della chiave dovrebbe essere la data di scadenza del software.

Prova la data e l'agire di conseguenza. Se non esiste, allora basta eseguire come la versione lite.

Per ottenere una chiave di prova, è possibile farli inserire un indirizzo e-mail e alcune altre informazioni che si desidera in una casella nella vostra applicazione. Non è irragionevole chiedere che la macchina sia connesso a internet per questa parte limitata. Anche MS Office richiede di connettersi a internet per breve tempo per convalidare le chiavi. Avere il contatto applicazione il server con la richiesta della chiave. Email loro indietro la chiave.

Per i punti bonus legare la chiave di prova per alcune metriche della macchina stessa. Anche se è solo il nome della casella. Coloro cambiamento raramente ed è una prova comunque.

Se veramente non si può costringerli ad essere collegati a Internet per acquisire una chiave, allora si può andare un percorso leggermente diverso. Avere l'applicazione genera una richiesta (che include il nome della macchina o qualcosa del genere). Avere l'utente sia chiamarti con quella richiesta generata id o far la spina in un sito web. Poi email loro la chiave per quella macchina.

Tutti di questa condivisione chiavi impedisce. Ha un posteriore caduta nel caso in cui la posizione chiave è sollevato con e previene la chiave venga spostata ad altre macchine. Vi dà anche un modo di fare questo in un modo completamente scollegato. Anche se strappano la chiave di crittografia pubblica fuori della vostra applicazione per decifrare la chiave di licenza del software, non avranno la chiave di crittografia privata al fine di costruire un nuovo file di chiave di licenza.

Ora, la gestione delle chiavi è solo un aspetto del male si stanno combattendo.

Il passo successivo è che avete bisogno di offuscare la vostra applicazione in tal modo un che essi non possono semplicemente decompilare e bypass vostri controlli chiave. Questo è molto più comune di quanto passando file intorno chiave.

Si potrebbe anche avere più metodi nella app che prova per la chiave in modo diverso .. Ma questa è una questione diversa.


Come bonus finale per coloro che sono abbastanza vendicativa per fare questo: il seme varie schede pirata con il software chiave gen che fa cose interessanti alle macchine delle persone che stanno cercando di fregarti. Si può diventare davvero creativi qui.

O, come ha detto Joel, si potrebbe semplicemente non preoccuparsi di loro. Dopo tutto, se ne stanno andando fuori del loro modo di trovare una versione di cracking del software che non stavano andando a pagare per questo comunque e davvero non hai perso nulla.

Si può richiedere che gli utenti che utilizzano il processo essere collegati a Internet? Se quindi basta avere il contatto versione di prova di un server durante l'avvio e si può controllare ogni sorta di cose. non dovete preoccuparvi di memorizzare roba sul computer dell'utente o manomissione dei dati o l'ora di sistema.

So che questo è un vecchio thread, ma ho solo inciampato su di esso e altri potrebbe rivelarsi utile.

Una valida opzione in questi giorni potrebbe essere che l'applicazione interroga un servizio di riposo al momento dell'installazione per generare un processo o di licenza pagato. Ogni volta che l'utente apre l'applicazione l'applicazione interroga il servizio resto per le informazioni di licenza che è collegato a quella copia uno specifico software.

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