Ecco come ti proteggo il software
![]()
All’interno della nostra SW House, abbiamo a lungo pensato come proteggere il software e le installazioni illegali, soprattutto perché la nostra applicazione funziona in rete e viene venduta a licenze oltre che a pacchetto.
Dopo varie elucubrazioni questa ci è sembrata la strada migliore.
In un file (ascii o dbf) salvato in locale sul PC viene scritto in modo criptato il numero seriale del disco.
All’avvio della procedura viene eseguita una routine che si rilegge il seriale del disco e lo confronta con quello letto dal file decriptato. Se i codici coincidono si procede, altrimenti… nel nostro caso parte una versione demo che non permette di salvare più di XX dati.
In questo modo si può distribuire l’applicazione tranquillamente e chi è interessato potrà continuare a usare la procedura senza perder i dati che ha già inserito o reinstallare un nuovo prodotto.
Nel nostro caso, nella directory che viene creata sul client, c’è un piccolo eseguibile con una form dove vengono visualizzati il codice del disco leggermente criptato (cioè leggibile) e viene chiesto in input il codice di "sblocco". Naturalmente nel codice iniziale c’è un codice simile a quello proposto che si va a leggere il seriale.
* start code
aa=Q_loc+"txt" && dove Q_loc vale la rirectory attuale
private ACapo
ACapo=CHR(13)+CHR(10)
set alte to Q_bat.bat
set alte on
set cons off
?? "dir c:\x > "+ aa + ACapo
?? "exit "+ ACapo
close alte
! Q_bat.pif && il .pif deve essere creato la Windows
do while !file(aa)
wait window "Test codice" timeout .5
enddo
S_file=aa
S_fcb =Fopen(S_file) && Apro in Read-Only
if S_fcb<0 && Il file non esiste
S_err=.T.
else
S_err=.F. && Il file esiste
S_byte=Upper(Fgets(S_fcb,100)) &&
S_byte=Upper(Fgets(S_fcb,100)) &&
S_byte=Upper(Fgets(S_fcb,100)) && il serial e' sulla terza riga
if at("VOLUME",S_byte)#0
S_byte=alltrim(S_byte)
num_hd=right(S_byte,9) && A destra c'e' il valore
endif
=Fclose(S_fcb) && Chiudo il file
endif
wait window "Calcolo" timeout .5
num_hd=alltrim(num_hd)
delete file &S_file
delete file &aa
* end code
Se l’utente salva un codice di sblocco, tale valore viene salvato criptato su un file.
All’avvio dell’applicazione vera e propria, con la stessa routine, si legge il seriale del disco, si legge il codice di sblocco salvato sul file, lo si decripta e, secondo l’algoritmo col quale abbiamo calcolato il codice di sblocco, li confrontiamo.
Questa procedura funziona correttamente in ambienti Windows ® su tutte le versioni (da 95 a NT) ed è molto sicura, a parte qualche bravo utente che riesca a duplicare un disco con anche col seriale! J
Buon lavoro.
Per altri consigli in merito potete contattarmi .
Copyright dell'articolo di Fabio Lenzarini
© FoxPro e Visual FoxPro sono un marchi registrati da Microsoft Corporation
dal 22 Giugno 1999