Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Programma che funzioni per tot giorni

Siccome ho alzato un polverone immane, come minimo vi faccio vedere quel che
ho combinato, cosě chi non sa fare puň prendere spunto e chi invece č piů
esperto di me č un invito per farmi delle buone critiche e dirmi cosa ne
pensa.
Grazie a tutti.
Mirco.
    ' -----------------------------------------------------
    ' PROTEZIONE 1 ANNO DI FUNZIONAMENTO
    ' -----------------------------------------------------
    Dim DataInstallazione As Date
    Dim DataUltimaApertura As Date
    Dim Expired As String
    Dim risposta As Integer
    DataInstallazione = GetSetting("PoUnAnFu", "Date", "Installazione",
"12/01/1971")
    DataUltimaApertura = GetSetting("PoUnAnFu", "Date", "Ultima apertura",
Now)
    Expired = GetSetting("PoUnAnFu", "Blocco", "Codice blocco", "Running")
    If DataInstallazione = "12/01/1971" Then
        SaveSetting "PoUnAnFu", "Date", "Installazione", Now
        DataInstallazione = Now
    End If
    If Expired = "Expired" Then
        risposta = MsgBox("Programma scaduto!", vbCritical + vbOKOnly,
"Programma")
        End
    End If
    If Expired <> "Running" Then End
    If Now < DataUltimaApertura Then
        SaveSetting "PoUnAnFu", "Blocco", "Codice blocco", "Expired"
        End
    End If
    If DateDiff("d", DataInstallazione, DataUltimaApertura) > 365 Then
        SaveSetting "PoUnAnFu", "Blocco", "Codice blocco", "Expired"
        risposta = MsgBox("Programma scaduto!", vbCritical + vbOKOnly,
"Programma")
        End
    End If
    SaveSetting "PoUnAnFu", "Date", "Ultima apertura", Now
    SaveSetting "PoUnAnFu", "Blocco", "Codice blocco", "Running"
    ' -----------------------------------------------------

 "12/01/1971")
La data non salvarla in chiaro, salvala come single o con qualche altro 
algoritmo...
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 e dirmi cosa ne pensa.
In tutta sincerità?
In quel modo non proteggi nulla, anzi, proprio perchè i dati sono in chiaro
(molto in chiaro) inviti al crack e autorizzi chi ci riesce a starsene bello
zitto e tranquillo, ovvero nemmeno a prendersi la soddisfazione di dirti "ho
superato la protezione", per non costringerti a cambiarne il metodo.
Pur tenendo conto (avendo letto l'altro topic) del fatto che non si vuole
fare qualcosa di particolarmente complicato, ovvero ci si "accontenta" di
una protezione minima, se mi posso permettere:
La gestione del registro da parte di VB (o, meglio, di SaveSettings) lavora
in una zona limitata del registro stesso. In quanto nota, è la prima che si
va a vedere. Essendo le chiavi e i valori in chiaro, chiunque con analoghe
istruzioni VB può gestire i tuoi dati a piacimento, senza cioè andare a
pistolare col RegEdit.
Quindi, camufferei decisamente i nomi delle chiavi ed i valori. Per esempio
"Installazione" diventa "xy34ab", oppure (per rendere più "intoccabile" il
tutto) "windows_system_version" ( ;-) ). Le stringhe nel programma non
andrebbero assegnate come costtanti dirette, ma spezzate e messe in
variabili da concatenare al momento dell'uso. Per esempio: a="Inst"
b="allazione" c=a & b. In tal modo una visione diretta dell'EXE non rivela
immediatamente quelle costanti per esteso.
Inoltre (con apposite e semplici API di cui c'è più di un esempio sul SC),
lavorerei in zona diversa da quella prevista da VB, costringendo così a
cercare in zona meno ristretta.
Per me è anche fondamentale distribuire le informazioni in più punti,
sdoppiandole.
Immagina di depositare le stesse informazioni che ora prevedi nel registro,
magari con altri nomi e/o spezzandole in più parti, sugli archivi
dell'utente sempre presenti. La verifica si sdoppia, ma si scopre alla
svelta se non esiste coerenza fra il registro e i dati su file, cosa che tu
devi pretendere. Agire sul registro è un primo passo, rendere coerenti le
modifiche con i dati "gemelli" (ma profondamente diversi) sparsi su un file
è un po' più difficile per chiunque.
Ripeti i controlli in più parti del programma, non solo all'inizio...
Fra i dati inserirei anche qualcosa di personale, per esempio la ragione
sociale della ditta/utente, prevedendone magari un numero di controllo che
ne impedisca la libera variazione e la visualizzazione/stampa da qualche
parte. A un privato che usa illegalmente il tuo programma potrebbe anche non
interessare che compaia il nome di un altro, ma ad un'azienda, credimi,
importa molto, specialmente se quel nome compare su registri ufficiali...
Ancora: Se il tuo applicativo può basarsi su "date sensibili", prevedi anche
un controllo sulle stesse. Per esempio che la data di un'operazione
contabile o di una fattura non possa essere superiore alla data di scadenza
dell'uso delle procedure. Nessuno potrà mai permettersi di stampare su una
fattura una data anteriore a quella fiscalmente pretesa.
Ci sarebbe tanto altro, non ultimo, come già più volte detto, che ogni
protezione è superabile anche senza conoscerla, basta infatti saltare i test
sulla stessa. Non è facilissimo, anzi, ma è veramente il massimo che oggi un
software può pretendere. E, ormai è diventato un motto, "se una cosa val la
pena di essere sprotetta, stiamo certi che prima o poi accadrà".

 sprotetta, stiamo certi che prima o poi accadrà".
Quoto.
Ciao,
Andrea

 Questa può essere una buona idea per i programmi gestionali... :-)
In tal senso intendevo "date sensibili", ovvero tutte le date che
l'operatore è costretto a rispettare per vari motivi, obbligati e del tutto
indipendenti dall'eventuale utilizzo che ne possa fare la protezione.
Il "gestionale" risalta chiaramente come primo candidato, ma ... non solo.
;-)

 solo. ;-)
Hai squartato tutto il resto del post, ma mi interesserebbe capire che ne
pensi di quello che ho scritto.
Ciao,
Andrea

 che ne pensi di quello che ho scritto.
Se ho squartato significa che non ho niente da dire, della serie "chi tace
acconsente". ;-)
Intendiamoci, volendo si potrebbe discutere per ore su una cosa piuttosto
che l'altra, ma non č questo il mezzo per spaccare il capello in quattro, nč
il caso. I concetti sono stati espressi e su quelli, come detto, nessuna
obiezione.

 quelli, come detto, nessuna obiezione.
Forse questo non è il gruppo piu' adatto, ma se si potesse fare una
discussione sull'argomento, magari ne potrebbe uscire qualcosa di
buono... che ne pensate?
Ciao,
Andrea
P.S. Stanno per essere messe online le icone <g>