Newsgroup: it.comp.lang.visual-basic
Titolo: legare applicativo all'hardware

Senza ricorrere a chiavi hardware ma tanto per non uscire totalmente 
scoperto nel distribuire una mia applicazione, vorrei implementare una 
chiave per attivare il software, legata alla macchina su cui viene 
installato.
In VB 2008 Express, con che istruzione e cosa potrei andare a leggere nel 
registro per fare questo giochetto ?
Grazie
Marco

marcick ha scritto...

Puoi fare in questo modo, sfrutti il numero seriale del disco in cui viene 
installato,
se però l'utente finale lo vuole utilizzare su un'altra macchina,
tramite un'apposita utility (che tu gli fornisci),
gli dai modo di poterlo spostare,
l'importante è che venga utilizzata una sola licenza.
-- 
Ciao Fede
By Chicco Production
http://bcp.freetools.it

 gli dai modo di poterlo spostare,
un po' macchinoso da gestire, diciamo che se l'utente lo vuole spostare mi 
chiama e gli fornisco un secondo codice di attivazione. Se poi ha fatto il 
furbo pazienza, quantomeno evito che il software giri di mano in mano senza 
protezioni.
Ciao
Mk

protezioni.
  Qualsiasi forma di protezione di questo tipo e' almeno un po'
macchinosa visto che l'utente puo' comunque cambiare hardware.
  Personalmente suggerisco sempre di fornire codici che usino come
chiave il nome del cliente con una bella scritta "Registrato a xxx"
ben visibile nella schermata principale del programma. ;-)
-- 
  Ciao :-)
  Massimo
Nell'indirizzo, sostituire "free.boh" con "
libero.it
"

 ben visibile nella schermata principale del programma. ;-)
intuisco ma con un po' di nebbia ...
Le informazioni sull'hardware quindi le lasceresti perdere ?
Mi puoi schematizzare l'approccio per implementare il tutto ?
Mk

Mi puoi schematizzare l'approccio per implementare il tutto ?
  Io usavo una libreria proprietaria che, dati nome e codice della
licenza d'uso, dava un ulteriore codice come risultato e l'utente
doveva inserire i tre dati nel programma per attivarlo.


 Mi puoi schematizzare l'approccio per implementare il tutto ?
In pratica devi giocare con i numeri,
partendo per esempio (come ti hanno suggerito) dal nome e cognome,
ti devi creare un algoritmo (evita se possibile quelli già pronti),
ogni lettera che compone il nome e cognome
ha un suo corrispondente valore numerico ASCII.
Così per esempio Pippo corrisponde a:
P=80 i=105 p=112 p=112 o=111
Più riesci a complicare l'algoritmo e più è difficile decifrarlo.
Se invece cerchi qualcosa di pronto,
puoi provare a dare un'occhiata a questi esempi:
http://tinyurl.com/592z3g


 codice per leggere quell'informazione. Un esempio, un link ...
http://www.aboutmydot.net/index.php/cpuid-net-hd-serial
Attenzione che devi aggiungere al progetto un riferimento a 
System.Management.dll, e relativo Imports.
Comunque, personalmente, non comprerei mai un programma con un controllo 
della licenza del genere...
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Scarica "OpenOffice.org 3, I suppose", molto di piů di semplici FAQ!
http://it.openoffice.org/doc/manuali/

 doveva inserire i tre dati nel programma per attivarlo.
ok, ma se non lo leghi alla macchina uno può scegliere nome "pippo", codice 
1234 e mio controcodice 5678 e con questa terna di dati installarlo dove 
vuole o divulgarlo. Dove sta la protezione ?
Mk

vuole o divulgarlo. Dove sta la protezione ?
  I dati sono legati tra di loro da un algoritmo logico-matematico
percio' se uno fa come dici tu il programma dopo aver fatto il
controllo di congruenza gli fa una pernacchia. ;-)


 System.Management.dll, e relativo Imports.
Grazie
Mk

 In pratica devi giocare con i numeri,.....[cut]
chiaro, grazie
Mk

 controllo di congruenza gli fa una pernacchia. ;-)
non riesco a spiegarmi. Una volta che si dispone di una terna di dati 
generata regolarmente e che funziona, cosa impedisce di usarla su un altro 
pc se in questa terna non ci sono riferimenti all'hardware ?
Mk

 Mk
Nota che, anche scegliendo questa strada, sei solo a metà: il secondo
step è quello di proteggere il tuo assembly .NET dalla decompilazione,
altrimenti qualsiasi sistema di protezione implementato direttamente
nel codice perde di significato....

nel codice perde di significato....
si, ne sono consapevole, ma a me basterebbe difendermi un minimo dall'utente 
comune furbetto.
Contro chi ha capacità di decompilare e "craccare" mi arrendo già da subito.
Mk 

 subito.
'L'utente comune furbetto' oggi cerca un crack in rete,
o direttamente il programma già craccato.
Ma se il tuo programma non è multilingua,
ma esclusivamente in italiano,
e per di più è rivolto a una ristretta cerchia di persone,
ci dovrebbero essere scarse probabilità.


Tu non hai idea di cosa si possa fare per fottere del codice frutto di 
sudori e notti insonni!! Ti dico solo questo, debuggano attraverso 
macchina virtuale, quindi non puoi nemmeno nascondere il codice di 
de/criptazione all'interno dell'interrupt di debug! Fai Te! Piuttosto 
scrivi un bel contratto, o se il tuo cliente č in internet fai girare 
parte del codice su un tuo server restituendo solo il risultato! (ps. 
logicamente l'accesso deve essere protetto da id e pwd [io personalmente 
controllerei anche la provenienza dell'IP e altre cosette, cosě so se 
qualcuno fa il furbo...])
Ciao Ale