Newsgroup: it.comp.lang.delphi
Titolo: protezione software

ciao a tutti,
di solito che protezione implementate per proteggere i vostri software???
ciao!

> di solito che protezione implementate per proteggere i vostri software???
nelle demo "taglio" interi pezzi di codice cosi' che l'eventuale cracker
scemo di turno resti con un palmo di naso ;), poi ci sono le versioni
"attivabili" che si sbloccano con un codice calcolato in base ad un
algoritmo, ma queste che vengono inviate su cd rom e solo agli acquirenti
dei programmi.
Ciao, Sandro


in effetti vorrei implementare qualcosa di questo tipo...hai un link a
qualche tutorial???
ciao

 qualche tutorial???
non saprei, mi spiace, io ho fatto tutto a manina :)
Ciao, Sandro

 ha scritto nel messaggio
news:alqe2o$7emj$1...@ID-43509.news.dfncis.de...

ehm...puoi darmi qualche dritta??? ;-))
ciao

 ehm...puoi darmi qualche dritta??? ;-))
Io userei (e ho usato) una funzione hash che ti crea un codice partendo
dal nome del programma + n.seriale di hd o di winzoz.
All'apertura del programma verifico la chiave e se è sbagliata
la richiedo.
Per fare i demo controllo se la funzione hash ritorna un codice
particolare e in questo caso abilito una variabile globale che
viene verificata quando entri in certi punti oppure quando
inserisci oltre x record (es.clienti) e nel caso abortisco.
Semplice semplice e per adesso mi basta.
Mirko

Io l'unica che ho usato è stata il seriale dell'HD che salvavo in un file.
All'avvio facevo il
controllo tra quello salvato ed il valore dell'HD e se erano diversi
messaggio all'utente e
chi se visto se visto...

"Balbar" <...@...> ha scritto nel messaggio
news:fYqg9.8556$my3.1...@twister2.libero.it...

interessante....hai del codice di esempio???
ciao

copio e incollo da 
http://utenti.lycos.it/negrita78/angolodelphi.html
 :
Quanti di voi si chiedono come sia possibile proteggersi dalle "copie
pirata". Beh, sinceramente la lotta tra hackers e programmatori è aspra.
Comunque una bella protezione "Hardware" basate sul numero di serie del CD
che si sta fornendo può essere utile.Si fa così:
procedure TForm.ButtonClick(Sender: TObject);
var
  NomeVolume,
  nomeFileSystem     : array [0..MAX_PATH-1] of Char;
  VolumeSerialNo, lunghezzaMassima, Flags     : DWord;
begin
  GetVolumeInformation('D:\',NomeVolume,MAX_PATH,@VolumeSerialNo,
                       lunghezzaMassima,Flags,
                       nomeFileSystem,MAX_PATH);
  ShowMessage('VName = '+NomeVolume);
  ShowMessage('SerialNo = $'+IntToHex(VolumeSerialNo,8));
  ShowMessage('CompLen = '+IntToStr(lunghezzaMassima));
  ShowMessage('Flags = $'+IntToHex(Flags,4));
  ShowMessage('FSName = '+nomeFileSystem);
end;
Ma cosa fa questo codice oltre a ricavare il numero seriale del cd???
Inoltre cosa succede se la lettera "D:" non corrisponde all'unità cd???
ciao

 end;
Per ulteriori info leggiti l'help della funzione

ma voi come gestireste questo tipo di protezione??? Voglio dire: con il
codice che ho postato prima ottengo varie informazioni sul numero seriale e
sull'etichetta di una data unità...ma cosa fareste dopo aver ricavato queste
informazioni per poter proteggere in modo adeguato il software???
ciao

 ha scritto nel messaggio
news:Bl5h9.111949$pX1.3...@news2.tin.it...

Il modo più semplice è quello di salvare pari pari le info. così prese (o
anche solo il codice seriale)
su un file (magari in posti nascosti tipo dentro windows\system\) e
all'avvio del programma
controlli che il valore memorizzato corrisponda con quello che vai a leggere
sull'hd.
Oppure puoi farti una procedure che a partire da questi dati ti crea una
chiave che ti comunicano, tu gli
mandi una chiave di attivazione per quella particolare configurazione e il
programma ad ogni avvio fa il seguente controllo:
-leggi i dati per creare la chiave;
-crea la chiave;
-leggi la chiave di attivazione memorizzata (se non è presente mostra
maschera di registrazione);
-verifica validità chiave-chaive attivazione;
-prosegui od esci dal programma.


tutto abbastanza chiaro solo...che tipo di chiave useresti??? Voglio dire: a
partire dal codice seriale dell'HD che algoritmo useresti per creare le
chiavi???
Inoltre che struttura ha il codice seriale dell'HD??? Solo numeri o anche
lettere???
ciao e grazie mille per le risposte

 ciao e grazie mille per le risposte
Il S/N dovrebbe essere alfa-numerico (o solo numerico)
Il più semplice di tutti è : prendi il S/N gli aumenti di 3 i caratteri (es.
A->D , 5->8) e questa
è la chiave che ti mandano per generare la chiave di attivazione. Tramite un
secondo
algoritmo la creai (ad esempio togli 15 ai caratteri) e la mandi all'utente.
Lui la inserisce nel programma
che provvede ad aumentarla di 15-3 = 12 caratteri e la riconfronta con il
S/N. Se corrispondono tutto ok
altrimenti esci.
Stai attento però che questo algoritmo è molto semplice da superare
indipendentemente dal numero di caratteri che trasli.
Se vuoi puoi anche spezzare la stringa in 2 parti e usare traslazioni
differenti e poi invertire le due parti (es. AAABBB ->
CCCDDD -> DDDCCC) o cose del genere. Più è complesso meglio è.