Newsgroup: it.comp.lang.visual-basic
Titolo: [?] - Protezione software

Ho realizzato il mio bel softwarino in Vb e mi accingo a distribuirlo, ma
vorrei evitare che si autodistribuisca gratuitamente e senza il mio
consenso. Pensavo pertanto di farlo funzionare a tempo limitato (giusto per
provarlo) o di farlo andare in versione DEMO fino a quando io non passo a
chi lo usa la chiave di sblocco. Ho visto che in molti utilizzano come
parametro per il calcolo della chiave di attivazione la CPUID della macchina
su cui il programma è installato e con un algoritmo calcolano una chiave di
attivazione del programma, che funzionerà solo su quel PC. In mancanza di
altre idee, mi sembra la soluzione migliore, ma non so come andare a
ricavare la CPUID del PC. Qualcuno sa indicarmi come si fa?
Grazie in anticipo...
Mauro

Mauro wrote:
<snip>
Leggiti su google i post di qualche giorno fa... secondo me li
troverai illuminanti :-)
Ciao,
Andrea

Sei sicuro che e' il CPUID? Forse e' il numero seriale dell'HD?!?!?
Cerca su google... che trovi qualcosa..
Giuseppe

> Grazie in anticipo...
Prego! Ma è il SN del disco fisso...
Option Explicit
Private Declare Function GetVolumeInformation Lib "kernel32" _
    Alias "GetVolumeInformationA" _
    (ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, _
    ByVal nVolumeNameSize As Long, _
    lpVolumeSerialNumber As Long, _
    lpMaximumComponentLength As Long, _
    lpFileSystemFlags As Long, _
    ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long
Public Function CalcolaHDSN() As String
    Dim RootPathName As String
    Dim VolumeNameBuffer As String
    Dim VolumeNameSize As Long
    Dim VolumeSerialNumber As Long
    Dim MaximumComponentLength As Long
    Dim FileSystemFlags As Long
    Dim FileSystemNameBuffer As String
    Dim FileSystemNameSize As Long
    Dim MsgRtn As Long
    RootPathName$ = "C:\"
    VolumeNameBuffer = Space$(255)
    VolumeNameSize = 255
    FileSystemNameBuffer = Space$(255)
    FileSystemNameSize = 255
    MsgRtn = GetVolumeInformation(RootPathName, _
                                  VolumeNameBuffer, VolumeNameSize,
VolumeSerialNumber, _
                                  MaximumComponentLength, FileSystemFlags, _
                                  FileSystemNameBuffer, FileSystemNameSize)
    CalcolaHDSN = Left$(Trim$(Format$(VolumeSerialNumber)), 15)
End Function

     ByVal nFileSystemNameSize As Long) As Long
Ho usato pure io questo sistema che è un buon deterrente alla distribuzione
non consentita del software ma è facilmente aggirabile: ho di recente
formattato e reinstallato il computer di un mio amico salvando prima tutte
le applicazioni e i dati, quando ho ripristinato il programma di
contabilità, questo ha chiesto di digitare la chiave di sblocco. Tale
chiave, in possesso del mio amico però non funzionava più.
Smanettando un po' nel registro e negli ini ho scoperto che la chiave di
sblocco era calcolata con il numero di serie del disco e, con un programmino
facilmente reperibile in internet ho cambiato il numero di serie del disco
ripristinando il numero di serie che si aspetta il programma.
Certo, sarebbe stato più facile contattare il rivenditore del programma (che
per altro è un nostro amico), però è stato più avvincente provare e
soprattuto riuscire a crakkare il programma.
In effetti, la soluzione di poter intercettare il numero di serie del
processore che non penso sia modificabile potrebbe essere la soluzione
migliore, o in alternativa usare una chiave Hardware.
Ciao!
Esteban
www.seber.it

 facilmente reperibile in internet ho cambiato il numero di serie del disco
In genere basta criptare il numero di serie...

 ha scritto nel messaggio
news:HHeRb.288046$e6.11...@twister2.libero.it...

Sě, ma se il programma memorizza da qualche parte il numero di serie del
disco (che p.e. č 5762-F34C) in modo criptato e io copio il programma su un
computer che ha logicamente il numero di serie del disco diverso (p.e.
76A1-43CD) il programma, con il suo numero di serie ben criptato (5762-F34C)
non funziona.
Bene, allora non mi resta che usare un programmino gratuito reperibile in
internet con il quale modifico il numero di serie del disco da 76A1-43CD in
5762-F34C e quando lancio il programmino con il suo numero di serie ben
criptato (5762-F34C) non si accorge che sta girando su una macchina
diversa...
Quindi il problema non č come nascondere il numero di serie del disco su cui
si č fatta l'installazione, ma che il numero di serie del disco puň essere
modificato.
-- 
Esteban
www.seber.it

 modificato.
Ti dico come la penso: se lo scopo è impedire una "duplicazione facile
facile", allora val la pena di implementare qualche forma di protezione, se
invece lo scopo è impedire una "duplicazione" allora è meglio non perder
tempo, ci sarà sempre qualcuno più in gamba di te che ci riesce e mette
tutto su Internet!
Personalmente sviluppo in genere applicazioni dedicate (settore automazione
industriale), per le quali non ha quasi senso parlare di duplicazione così
come sono.
In tal caso il problema non si pone nemmeno...
Buon lavoro!


Costerà un pochino, ma se proprio è una cosa così importante da farti
corrrere il rischio che qualcuno su internet possa eludere il sistema che
implementerai.. allora datti alle chiavi hardware!!!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

A mio parere le chiavi hardware sono poco pratiche: perfino autodesk e Co.
le hanno abbandonate a favore di una chiave sw (vari numeri di serie
intrecciati)... penso che sia la soluzione migliore e meno costosa.
Cambiare il serial dell' hd della scheda di rete ecc... non è poi così
pratico: pensate poi se ci sono 2 programmi che sfruttano i serial con
algoritmi diversi... ogni volta che devo lanciare un programma devo cambiare
i serial...
In ogni caso se poi uno vuole craccare un sw ci riesce in entrambi i casi.
Secondo me alla fine vale la pena evitare la spesa della chiave hw riducendo
il prezzo del sw o ... aumentando il proprio guadagno.
Ciao MArco

 implementerai.. allora datti alle chiavi hardware!!!
Anche per quelle si fanno i crack...
La questione è sempre la stessa: dipende appunto dal livello di protezione
che si desidera avere, ma non esiste la "vera sicurezza"!