Newsgroup: it.comp.lang.visual-basic
Titolo: Protezione antipirateria e macchine virtuali

Ciao a tutti,
come fate per garantire un'adeguata protezione al vs. software considerando 
l'eventuale utilizzo con VirtualPC o simili?
Fino ad oggi leggevo il numero di serie dell'HD e da quello calcolavo una 
password di attivazione.
Questa soluzione però è inadeguata con un pc virtuale dove l'utente può fare 
a meno di salvare la sessione di lavoro.
Grazie 

PincoPallino ha scritto:

Guarda che leggere il numero di serie dell'hd non serve a nulla basta un 
  jmp in assembly per evitarlo! piuttosto cambiare la struttura interna 
di un file EXE (PE). E' già qualcosa di più evoluto, ma non lo puoi fare 
in vb!
E comunque finché si può debbuggare la Virtual Machine con il software 
all'interno la vedo dura proteggere qualcosa!
Unico consiglio che posso darti è: disloca le procedure che vuoi 
proteggere in un server, proteggilo e restituisci solo i dati elaborati 
(..sempre che si possa fare..)
PS: L'unica fortuna è che debbuggare da virtual machine sono veramente 
in pochi che sono in grado di farlo... almeno spero!
Ciao Ale!

 pochi che sono in grado di farlo... almeno spero!
Be! è piuttosto semplice! basta dirgli di non salvare, conosco gente che ha 
installato tutti i software in trial e li utilizza a tempo indeterminato...
Ciao 

 indeterminato...
Pinco, debuggare in virtua machine è "piuttosto semplice"? Basta dirgli di 
non salvare?
-- 
Greg 

 ha scritto nel messaggio 
news:gdq4v4$58e$1...@tdi.cu.mi.it...

Non so cosa intendete dire per "debuggare"....
Io intendo dire che è piuttosto semplice avvaire una Virtual Machine, 
lavorarci per delle ore, trascinare i file di lavoro nel pc locale e quindi 
chiudere la Virtual Machine.
Alla chiusura della stessa se l'utente ha inserito la spunta sulla voce 
"Salva file modifiche locali" (o qualcosa del genere) la Virtual Machine 
chiede se salvare o meno le modifiche, nel caso in cui l'utente scegliesse 
di non salvarle è come se la Virtual Machine non fosse mai stata utilizzata 
e quindi tutti i contatori delle versione demo o trial rimangono azzerati.
Spero di essermi spiegato... 

PincoPallino ha scritto:

Il tuo problema è mantenere un contatore che controlli i giorni o gli 
accessi all'applicazione? Se i tuoi clienti sono collegati a internet e 
te ne freghi dei cracker, il contatore tienilo tu in un server!
Altre soluzioni per ora non mi vengono in mente! Però ci penso!

 Altre soluzioni per ora non mi vengono in mente! Però ci penso!
Ok, se a qualcuno viene in mente qualcosa si faccia vivo!
Ma è possibile in VB6, da una Virtual Machine scrivere dentro il registro di 
sistema del pc fisico?
Grazie 

PincoPallino ha scritto:

Quindi il problema è avere un numero univoco per poi tenere conto degli 
accessi da internet? e mantenerlo sulla macchina virtuale! Non semplice 
direi!
Il tuo programma gira su PC i32|i64 o usi anche su altre architetture 
particolari?
Perché ho una mezza idea su cui poter pensare.. però non garantisco 
risultato!
Si basa sul timer di sistema di queste architetture che se impostato al 
massimo non penso possa mantenere la stessa frequenza anche nella 
macchina virtuale.. e controllando da remoto il tempo facendo attenzione 
ad eventuali intasi della rete si potrebbe accorgersi se gira su Virtual 
Machine o no! E quindi bloccare l'applicazione!
Ciao Ale!

 semplice direi!
[snip]
La vedo durissima.
Ma mi domando se sia meglio spendere 10 giorni di lavoro per fare un 
pastrocchio ingestibile che 20E per una chiave hw. Non so... Ho 
realizzato anni fa una protezione sw e l'ho usata per alcuni programmi. 
Se dovessi rifarlo ora metterei una chiave hw e non ci penserei piů.
-- 
-> GbC|
www.gbcweb.com
www.chiappori.com
 

Il Fri, 24 Oct 2008 09:20:59 +0200, Alessandro Marini ha scritto:
[cut]
Per riconoscere se un programma gira su una virtual machine si puà rilevare
qualche componete particolare, es. la scheda di rete. 
VMware usa la VMWare accelerated AMD PCNet Adapter, credo che questo
ragionamento si possa applicare anche agli altri ambienti virtuali.
Non ho idea se si possa scrivere sull'host reale, ma spero vivamente che
non si possa o comunque non sia così semplice, altrimenti va a farsi
friggere l'utilità della stessa virtual machine.
Un altro fattore che devi considerare non è solo la virtualizzazione di un
pc ma anche quella applicativa, in questo secondo caso il tuo programma
gira all'interno di una sandbox che non accede direttamente al registry o
al disco ma tramite un virtualizzatore che protegge il pc sottostante.
PaF

 attivazioni.
Scusa l'intrusione, volevo chiederti una cortesia, non č che puoi 
condividere il codice che utilizzi per generare il numero di serie ? Te ne 
sarei veramente grato.
Se sei disponibile, la mia mail č:
pietro199 c h o c c i o l a punto interfree punto it.
Grazie comunque.
-- 
Ciao
Geppo 

 ragionamento si possa applicare anche agli altri ambienti virtuali.
[snip]
Il problema non è serializzare un applicativo ma far si che al riavvio 
riconosca la vecchia serializzazione.
Esempio: con VMWare (ma è lo stesso con qualsiasi VM):
A) Installo un programma con funzionalità limitate nel tempo (un demo 
con 15 giorni di uso completo per capirci) in uno snapshot di XP per 
VMWare.
B) Uso il programma per i 15 giorni.
C) Allo scadere del periodo di funzionalità completa per demo cancello 
lo snapshot e reinstallo il programma come al punto (A).
Questa modalità di uso di una VM non è controllabile via software.
A meno di non avere una connessione ad internet.
Ovviamente non entro nel merito della legalità di questa modalità 
operativa; e neanche sul fatto che l'uso 'reiterato' di questa tecnica 
non è dimostrabile, visto che i vecchi snapshot possono essere 
cancellati...
Ciao cia'


 
[cut]
E' tutto chiaro, infatti il mio suggerimento era per evitare che fosse
installabile su una VM. Dipende molto dalle proprie politiche commerciali e
una scelta simile potrebbe non essere così assurda...
PaF

GbC ha scritto:

Idea un po' malata!
creare un applicazione host che deve assolutamente essere installata 
sulla macchina "reale" ed una client che può essere anche installata su 
una macchina virtuale? La prima tramite rete comunica con la seconda...
ed il gioco è fatto!
che ne pensate?

 che ne pensate?
La VM può essere configurata anche senza rete o con una classe di indirizzi
diversa, in questo caso host guest e virtuale non potrebbero comunicare...
PaF

PaF ha scritto:

Esatto quindi se vuoi far girare il software su una macchina virtuale 
devi impostarla correttamente e permettere che il software funzioni, 
altrimenti vuoi beffare la licenza "prova" e ti attacchi!

 attivazioni.
Ma che bisogno cè di tutta questa struttura?
Non basta un contatore dei giorni o del numero delle volte di utilizzo in un 
banale file di testo?
Ovviamente il numero criptato in manaiera pesante.
E magari si puo mettere il file in c:\windows\ioionet.dll
-- 
Greg 

 ha scritto nel messaggio 
news:gdsu4o$sa9$1...@tdi.cu.mi.it...

Un sistema di autocontrollo... funzionerebbe meglio :)
 

 l'eventuale utilizzo con VirtualPC o simili?
Non esiste una protezione valida, a meno che non crei una struttura di
attivazione client-server (tipo l'attivazione di Windows, per capirci).
Altra soluzione sono le smart key, abbastanza costose, ma vincoleresti
l'utente ad avere la smart key per lanciare il programma (cosa non
sempre "buona e giusta").
In ogni caso non potrai mai fare un programma così "fondamentale" da
spingere un utente a non salvare la sessione della virtual, perdendo
tutti i dati che ha generato fino a quel momento.
Gli utenti così sono dei barboni e te ne dovresti fregare.
Ma toglimi una curiosità, cosa fa il tuo programma per avere necessità
di protezione di questo tipo?
Nicola

 Gli utenti così sono dei barboni e te ne dovresti fregare...
Condivido in pieno, ...
...e poi non esiste una protezione sicura al 100% !
Anche Windows Vista, sebbene si siano messi d'impegno alla Microsoft, hanno 
praticamente solo perso tempo.
Oltre tutto c'è da considerare il fatto che più l'applicazione è protetta e 
più genera problemi all'utente finale.
Come nel caso di Windows, che con tutte le protezioni che ci hanno messo,
devi stare attento agli aggiornamenti HardWare, perchè corri il rischio di 
trovarti Windows disattivato!
Ed è una seccatura...
-- 
Ciao Fede
By Chicco Production
http://bcp.freetools.it

 Un sistema di autocontrollo... funzionerebbe meglio :)
Dici che ho esagerato? Non intendevo, scusa :)
-- 
Greg 


No :) Però per quanto assurdo possa essere, prova a invertire la logica che 
stai seguendo.  Anzichè concentrarti su ciò che realizzi... concentrati su 
ciò che attraverso il prodotto ralizzi :-)
Ti renderai conto che cosi facendo è molto più facile controllare ciò che 
hai realizzato.
Può sembrarti un discorso filosofico... ma se sperimenti... vedrai che non 
lo è poi cosi tanto :-)
Marcello I. (Alias Cooper)
 

 che non lo è poi cosi tanto :-)
Accidenti a me! Temo di aver capito ancora meno di prima :(
Io dopo mesi non capisco piu il codice scritto da me medesimo, anche se 
funziona benissimo, lui. Intendi questo per caso?
-- 
Greg 

 ha scritto nel messaggio 
news:gdvq6i$4ot$1...@tdi.cu.mi.it...

Non parlo del codice che hai sviluppato,  ma della logica adottata.