Newsgroup: it.comp.lang.visual-basic
Titolo: Idea anticrack per vb6

Salve a tutti,
mi sono svegliato da poco e mi si è accesa la classica lampadina :)
Sto per dire una cazzata, me lo sento, cerco appunto qualcuno che mi dice 
che
ho detto una cazzata :)
[IdeaStramba]
Faccio un programma che conta i puffi.
Decido che l'ultimo programma di mia creazione,
ContaPuffi.exe dev'essere shareware.
Quindi creo una pagina Html che nel body contiene una stringa
Contapuffikey:01/01/2006
Poi, contando sul fatto che ormai un computer su 2 è collegato a internet,
aspetto che il programma venga lanciato nel momento in cui è collegato a 
internet,
In quel momento mi leggo la riga Contapuffikey
e assegno alla variabile StrDateShareware il valore 01/01/2006.
Questa Variabile verrà scritta in un file di testo nella directory di 
sistema
con un nome tipo WxpSys.dll ( txt rinominato in dll )
magari leggermente codificata in ROT-XX.
Poi si crea un timer che ogni 5 secondi
controlla che la data odierna sia minore di quella scritta in wxpsys.dll)
Se è diversa l'applicazione non parte.
[\IdeaStramba]
In questo modo, il programma partirebbe solo nel momento in cui
il computer non è stato collegato a Internet.
Oppure si obbligherebbe l'utente a tenere la data di sistema indietro...
Che ne dite?
-- 
WWW.AKUMA.SPLINDER.COM
§§-Blog, funny, fashion-§§

 ha scritto nel messaggio 
news:o0Ulf.26788$S6.4...@twister2.libero.it...


 dell'utilizzatore.
UHm...effettivamente...
e poi sarebbe intercettato dai firewall come
"collegamento verso esterno non autorizzato" immagino...


 ha scritto nel messaggio 
news:CnUlf.26833$S6.4...@twister2.libero.it...

Per risolvere le problematiche di cui sopra, io invece dal mio 
"ContaPuffi.exe" in fase di installazione creerei una chiave nel registro di 
windows, esempio in:
HKEY_LOCAL_MACHINE\SOFTWARE\CONTAPUFFI
Questa chiave dovra essere letta ad ogni avvio del software ed anche ogni 60 
secondi in RunTime, inoltre non sfrutterei la data (facilmente eludibile 
spostandosi con l'orologio a ritruso) ma fisserei un tempo di utilizzo 
espresso in ore ad esempio 36, quindi il programma dentro la sua cartella 
nel registro memorizzera una chiave che esprime il tempo effettivo di 
utilizzo, incrementando con l'ausilio di un timer  minuto per minuto il 
conteggio, raggiunte le 36 ore il software emetterà il messaggio di "Periodo 
di valutazione scaduto" e cesserà di funzionare.
Ovviamente a te sta l'ingegno di come codificare la chiave in modo tale che 
i curiosi, non la possano rintracciare ed eliminare a colpo d'occhio 
guardando nel registro, facendo inoltre in modo che il programma non possa 
funzionare se la chiave è stata eliminata con regedit, cioè deve essere 
necessaria la sua presenza
perchè il software possa funzionare.
Oppure se non vuoi scomodare il registro, la stessa procedura la puoi 
simulare creando un file nella directory del tuo stesso .exe opportunamente 
codificato, sfruttando lo stesso metodo descritto con il registro.
Buon Lavoro !
Ivan.
 

 Che ne dite?
Che se 1 su 2 è collegato ad internet, 1 su 10 ha un firewall, a cui
basta bloccare l'accesso ad internet del tuo programma.
Tanto vale che dai un seriale di registrazione abbastanza complesso e
poi all'interno dell'applicazione controlli le date (magari il seriale
contiene una codifica dell'hash della data di scadenza).
-- 
Freccia@Bulldozer63 :D

 Che ne dite?
--> Paste  :-P
Verrebbe scardinato subito.
Io preferisco "personalizzare" il software in modo che, se l'utente
decide di darlo ad un amico, questo potrà usarlo ma non avrebbe la
possibilità ad esempio di stampare fatture a suo nome (perchè i dati
sono nell'esegubile).
Poi fornisco servizi supplementari fruibili solo online. Così se non
sono registrati, non possono accedervi.
Infine per prevenire il problema della data, fai un file crittato che
incrementa la data di esecuzione e controlla che l'orologio di sistema
sia maggiore della data salvata su file. Finchè sarà impossibile
incrementarla oltre...
bye

 Che ne dite?
Lascia perdere.
Durante il setup crea un file di log nascosto in una cartella di sistema,
con un nome innocuo tipo wincfg.dll, e ad ogni avvio del Contapuffi.exe fai
il datediff con la data di creazione del file. Se il datediff con la data di
creazione del file supera i trenta giorni, MsgBox "Periodo di valutazione
scaduto" e Exit Sub. E' importante controllare la data di creazione anziché
l'ultima data scritta nel file, perché l'utente potrebbe aver aperto e
modificato il file a mano, ma non può modificarne la data di creazione.
L'unico modo di aggiornare la data di creazione sarebbe copiarlo paripari
dal cd di setup, ma nel cd il file non c'è: è il programma di setup che lo
crea.
Se qs. controllo è andato a buon fine, scrivi nel file la data attuale. Poi
controlli le righe del file di log, e controlli che le date siano sempre
crescenti: se a un certo punto una data è minore della precedente, significa
che l'utente ha tirato indietro l'orologio di sistema, e allora MsgBox
"Cattivone, cattivone".
Se tutti qs. controlli vanno bene, il Contapuffi.exe parte.
Spero che ti sia d'aiuto.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Se è diversa l'applicazione non parte.
con softice te lo sbloccano in 3 secondi mi sa
la cosa più subdola (ma anche difficilotta da fare) consiste nel far 
fare al programma operazione sballate in caso di seriali non validi 
craccate ;-)
se accetti come valido ogni seriale metti in seria difficoltà chi usa 
softice.... fatto sta che poi magari ad ogni sub fai un controllo su un 
dato valore numerico generato dal seriale.. e se non è quello che ti 
aspetti fai sballare un po' di timer e metti un po' di goto a caso ;-D

 con un nome innocuo tipo wincfg.dll
INNOCUO? :)

 INNOCUO? :)
si, non è carino? Non sembra qualcosa che l'utente pensa: "No, aspè, questo
non lo tocco, sennò poi il pc si rovina..."?


 non lo tocco, sennň poi il pc si rovina..."?
carino, molto. ho spesso pensato anch'io a nomi simili.
ma non mi stupirebbe che ci fosse un qualche prog che usa una dll con quel
nome.
poi o l'anticrack fa delle chiamate strane o la dll si legge un datetime
pochissimo utile :)
ciao, a.

 pochissimo utile :)
e se non e` una vera dll si capisce subito il giochetto anche senza usare un
debugger ;-)
-- 
ciao, hal

 debugger ;-)
si, hal, lo so, e il giochetto si può scardinare con un buon software di
monitoraggio, ma è molto meglio di una stringa in una pagina web remota,
noh? Vorrà dire che il file lo chiamiamo Win32Inst.drv, o WinSys32.dat,
oppure Rundll32.ocx, o addirittura FreecellCfg.vxd, Notepad.bin,
Wordpad.bat. Di certo, se uno lo chiama Giorgio.txt, DataDiScadenza.ini o
Contapuffi.log non c'è nemmeno bisogno del software di monitor.
Eppoi hal, non lo avevamo già fatto qs. discorso io e te sei o sette mesi
fa?
Ciao.


 Ivan.
Andrea

 perdere.
La massa dei lameroni sfruttera` il risultato del lavoro di quelli
davvero determinati.
-- 
ciao, hal

 davvero determinati.
Intendevo dire... la massa di lameroni che cerca di realizzare il
crack del programma :-) non di quei lameroni che semplicemente
usano i crack.
Ciao,
Andrea

 monitoraggio, ma è molto meglio di una stringa in una pagina web remota,
Non si potrebbe invece realizzare una vera DLL che magari restituisce 
davvero una data e quando la si memorizza la si scrive veramente all'interno 
del compilato?
Feci una cosa simile in DOS tanto tempo fa.... e inoltre ricordiamo che si 
può appendere un'informazione del genere anche IN FONDO ad una DLL o ad un 
EXE senza comprometterli 

 EXE senza comprometterli 
confermo, e si puo` fare anche in vb.
-- 
ciao, hal

 EXE senza comprometterli
Le dll si possono ricollegare a un eseguibile con il Dependency Walker,
invece un file qualunque... chi sa a cosa serve?


 EXE senza comprometterli 
Arrivi tardi, già proposto io nell'altro ramo di questo thread :D
ihihihihihihihi
Andrea

 invece un file qualunque... chi sa a cosa serve?
E' vero, le DLL si possono ricollegare, ma se uno sa fare le cose,
diventa poi difficile capire *cosa* fa una certa DLL :-)
Ad esempio, il modo in cui funzionava la famosa vecchia "Anteprima" di
Windows 98 era fondato sull'esportazione delle funzioni per nome e non
indice. Quindi basta esportarle per indice e tutto diventa molto, ma
molto più complicato - anche per quelli bravi :-)
Ciao,
Andrea

A suo tempo avevo creato un modo creativo per limitare la
distribuizione di software :)) usando i floppy disk:
si copia il prog, effettuo il defrag, poi con uno spillo danneggio il
floppy, effettuo una scansione della superficie del floppy segnando le
tracce e settori danneggiati che poi scrivo come commento in una pagina
html.Quando l'utente prova ad effettuare una copia windows si blocca
perchè la superfcie è bloccata ed anche se riuscisse a copiare il
floppy, all'avvio il programma andrebbe ad effettuare se effettivamente
la traccia/settore letti dall'html sono danneggiati o soltanto segnati
come tali ;)
Inutile dire che ad ogni avvio del programma viene fatta una scansione
di tutto il floppy...
Ciao