PDA

View Full Version : [VB6] Protezione del programma


OrcaAssassina
01-09-2006, 10:51
Ho finito il mio programma.

Ora per evitare che la gente lo installi su tutti i PC, come posso creare un blocco????

Ossia evitare che persone utilizzino il mio programma, senza un mio "permesso"????


Ciao e grazieeeeee

fabianoda
01-09-2006, 10:56
La soluzione tipica sono gli hardware lock, delle chiavi hardware (parallele o usb - ora vanno di più queste). Il produttore del lock ti fornisce anche una libreria da utilizzare per rendere sicuro il programma.

Questa è la soluzione più semplice anche se non è gratuita. L'alternativa sono i seriali, ma tutto dipende dal tipo di programma e dal numero di installazioni.

ps: le chiavi hardware funzionano anche in rete, cioè fai un'installazione che vale per n computer collegati in una lan

BountyKiller
01-09-2006, 12:30
qualsiasi protezione, anche hardware, è aggirabile....tutto quello che puoi fare è rendere difficile la vita ai cracker inserendo le cosiddette "trappole antidebugging"........

OrcaAssassina
01-09-2006, 13:28
qualsiasi protezione, anche hardware, è aggirabile....tutto quello che puoi fare è rendere difficile la vita ai cracker inserendo le cosiddette "trappole antidebugging"........


Cioè in cosa consiste.

Dammi anche i link

Ciao e grazieeeeee

BountyKiller
01-09-2006, 13:37
non so esattamente cosa siano non avendole mai usate..... quello che so è che fanno schiantare i programmi come softice che cercano di allacciarsi alla routine di controllo di un serial number (per esempio) con lo scopo crackare la routine....
so che ci sono svariati programmi che le utilizzano ( per esempio c'è un tool per il disegno UML chiamato visual paradigm che ha questa trappola).

dani&l
01-09-2006, 15:02
Crei una login e una password criptata su un file dove al momento della creazionie ci aggiungi anche qualche identificativo Hw del pc (come fà windows Xp). Cosi se uno installa il programma e il file criptato contenente la pwd e user e usa lo stesso user e pwd non funziona perchè l'id Hw è diverso ;)

fabianoda
01-09-2006, 15:15
qualsiasi protezione, anche hardware, è aggirabile....tutto quello che puoi fare è rendere difficile la vita ai cracker inserendo le cosiddette "trappole antidebugging"........

Beh.. è vero che ogni protezione è aggirabile. Ma penso che per un software prodotto "artigianalmente" per un numero limitato di clienti non ci sia il problema, basta giusto un po' di sicurezza per evitare copie troppo semplici - duplicare il cd (la chiave hw appunto per questo è la soluzione ideale).


Cioè in cosa consiste
Non voglio segnalare esplicitamente il nome dei produttori.. ma basta fare una ricerca su google con "chiave hardware" e trovi di sicuro.

Fra l'altro, se non erro, ci sono delle vecchie discussioni sempre su questo argomento.

fabianoda
01-09-2006, 15:17
Crei una login e una password criptata su un file dove al momento della creazionie ci aggiungi anche qualche identificativo Hw del pc (come fà windows Xp). Cosi se uno installa il programma e il file criptato contenente la pwd e user e usa lo stesso user e pwd non funziona perchè l'id Hw è diverso ;)

Spiegati meglio... non ho ben capito, ma presumi di aver accesso al pc del cliente. Cosa che tu non hai in generale

dani&l
01-09-2006, 15:34
Spiegati meglio... non ho ben capito, ma presumi di aver accesso al pc del cliente. Cosa che tu non hai in generale

Pensavo che era un programma per la tua azienda, non da cedere a terzi :doh:

A questo punto le strade fattibili che mi vengono in mente sono poche:

Il software genera una chiave in base all'hw che ha e lui te la invia via mail. Tu li rimandi la mail con un codice di attivazione basato su quella chiave,lo aggiungi in un posto sperduto del registro di windows e il gioco è fatto... un pò come fanno i vari adobe

Solo chè è uno sbattimento per il cliente. Se poi lo reinstalla con Hw cambiato deve rifare la procedura...

Bho... altrimenti l'unica è abbinargli una chiavetta usb per il funzionamento come ti dicevano prima....

OrcaAssassina
01-09-2006, 15:52
Pensavo che era un programma per la tua azienda, non da cedere a terzi :doh:

A questo punto le strade fattibili che mi vengono in mente sono poche:

Il software genera una chiave in base all'hw che ha e lui te la invia via mail. Tu li rimandi la mail con un codice di attivazione basato su quella chiave,lo aggiungi in un posto sperduto del registro di windows e il gioco è fatto... un pò come fanno i vari adobe

Solo chè è uno sbattimento per il cliente. Se poi lo reinstalla con Hw cambiato deve rifare la procedura...

Bho... altrimenti l'unica è abbinargli una chiavetta usb per il funzionamento come ti dicevano prima....


Cosi mi piace......lui mi contatta, mi da il seriale, io gli creo la chiave e poi gli mando il file da mettere nella cartella principale del programma.
A questo punto quando il programma parte se il serial dell'hd corrisponde con la chiave inserita il programma si apre.

DOMANDA: sapete dirmi dove trovare il sorgente?????. ahahahahahah

Ciao e grazieeeeeeeee

BountyKiller
01-09-2006, 15:54
Beh.. è vero che ogni protezione è aggirabile. Ma penso che per un software prodotto "artigianalmente" per un numero limitato di clienti non ci sia il problema, basta giusto un po' di sicurezza per evitare copie troppo semplici - duplicare il cd (la chiave hw appunto per questo è la soluzione ideale).



ah questo non lo so, magari è un programma a cui ha dedicato mesi e mesi di lavoro..... volevo solo che avesse chiaro che non esiste un modo per rendere assolutamente non copiabile un programma.... tutto quello che si può fare è rendere la vita difficile a chi vuole fare la copia non autorizzata........

dani&l
01-09-2006, 16:06
ah questo non lo so, magari è un programma a cui ha dedicato mesi e mesi di lavoro..... volevo solo che avesse chiaro che non esiste un modo per rendere assolutamente non copiabile un programma.... tutto quello che si può fare è rendere la vita difficile a chi vuole fare la copia non autorizzata........

Fai come i giochi on line : autentificazione on line ogni volta che si lancia una partita al server, con conseguente ban di key illegali... ma non mi sembra neanche questo il caso :D

fabianoda
01-09-2006, 16:18
Cosi mi piace......lui mi contatta, mi da il seriale, io gli creo la chiave e poi gli mando il file da mettere nella cartella principale del programma.
A questo punto quando il programma parte se il serial dell'hd corrisponde con la chiave inserita il programma si apre.

DOMANDA: sapete dirmi dove trovare il sorgente?????. ahahahahahah

Ciao e grazieeeeeeeee

Se hai dei clienti non so però quanto questa strada sia perseguibile, ovvero quanto a loro faccia piacere doverti contattare per ogni installazione. Però sarebbe una buona soluzione, soprattutto economica!

:D

BountyKiller
01-09-2006, 16:28
Fai come i giochi on line : autentificazione on line ogni volta che si lancia una partita al server, con conseguente ban di key illegali... ma non mi sembra neanche questo il caso :D


bypassabile anche questo :D
secondo me l'unico modo per avere una ragionevole sicurezza utilizzando un serial number come protezione è cablare questo serial number direttamente nel codice.....ma è un gran casino da implementare....a quel punto bypassare il controllo è inutile.....c'era un'idea di uno sviluppatore di videogiochi che seguiva più o meno questa idea...con una perfida aggiunta..in pratica il gioco registrato con serial number crackato funzionava per un po', poi piano piano rallentava, ogni tanto schiantava, oppure il giocatore a un certo punto non poteva più+ muoversi nell'ambiente, fino al punto da arrivare alla stasi totale!!
in questo modo la frustrazione del giocatore disonesto lo avrebbe presumibilmente indotto a comprare il gioco originale :D :D

71104
02-09-2006, 08:25
Ho finito il mio programma.

Ora per evitare che la gente lo installi su tutti i PC, come posso creare un blocco????

Ossia evitare che persone utilizzino il mio programma, senza un mio "permesso"????aggiungo i miei 2 cents enunciando alcune accortezze per disorientare i crackersz (:asd: ) e tutelare la vostra security by obscurity:

per mettere fuori uso gli API tracers:
all'avvio dell'eseguibile, fate perdere le tracce della vostra IAT (Import Address Table): in ciascuna IDE (Import Directory Entry) scambiate L'RVA del "first thunk" con quello dell'"original first thunk" (così facendo la IAT sarà completamente scambiata con la ILT, Import Lookup Table) e azzerate l'RVA della IAT nella directory relativa nell'header opzionale; l'eseguibile risulterà unbound ma continuerà a funzionare senza problemi
la maggior parte delle funzioni API sono __stdcall, e perciò il loro codice inizia sempre con:

PUSH EBP
MOV EBP,ESP

che è un prologo che occupa 3 bytes; dunque, anziché usare gli stub della IAT, per effettuare le chiamate API potete scrivere in memoria quelle prime 3 istruzioni e una vostra tabella di stub ciascuno dei quali non salta all'indirizzo della funzione, ma 3 bytes dopo. fatelo per ciascuna API, ma prima controllate che essa inizi effettivamente con quei 3 bytes.

per disorientare i disassemblatori:
inserite qua e là nel codice sequenze di assembly come questa:

JMP SHORT $+1
DB 0xB8

non fa niente ma servirà a disallineare le istruzioni immediatamente seguenti offuscandole; un disassemblatore infatti, sapendo che 0xB8 è il primo byte di un'istruzione MOV EAX da 5 bytes, leggerà:

JMP SHORT $+1
MOV EAX,...
...

(dai puntini di sospensione in poi è tutto sbagliato); però purtroppo i disassemblatori più furbi non ci cascano ( O.o' ), e la maggior parte delle volte il codice si riallinea dopo poche istruzioni.


inoltre è anche bene rendersi invisibili nel call stack evitando di creare gli stack frames al prologo di tutte le vostre routines, a partire dagli entry points richiamati direttamente da kernel32.dll o user32.dll (WinMain, DllMain, ThreadProc, e callback): anche se il cracker riuscisse a mettere su una funzione API un breakpoint che non viene eluso dal sistema di stub descritto sopra, una volta fermato il programma osservando il call stack avrebbe l'impressione che quelle API siano state chiamate da Windows :D

a quel punto il cracker può ancora individuare il vostro codice andando comodamente a segnarsi con carta e penna gli indirizzi di ritorno esadecimali dallo stack (sempre che li trova :asd: ); insomma, un lavoro sempre meno fattibile se moltiplicato per decine di chiamate API, e comunque fattibile solo per i più esperti ma soprattutto (:asd: ) pazienti.

infine, se siete veramente disposti a tutto :D, installate un vostro driver per intercettare le interrupt 1 e 3, che sono quelle che di fatto permettono il debug dei programmi.

ah, dimenticavo: durante l'esecuzione di un modulo PE tutti gli headers sono inutili; azzerateli completamente.

okay
02-09-2006, 09:14
Inserisco la mia.

Puoi usare un disco chiave di protezione ovvero quando un utente lancia il programma all'avvio viene richiesto di inserire nel floppy A il disco chiave di protezione. Il programma legge il bootsector il codice criptato se corrisponde allora si avvia il programma se non il prg termina.

Il disco chiave di protezione lo devo rendere non copiabile.
Devi farti una sorta di tua formatazione personale... poi scrivi nel bootsector la chiave criptata. Poi all'avvio il prg leggerà il boootsector tornando la stringa dove il prg la confronta. Se è == allora il prg si avvia oppure termina con exit.

Ora un utente può copiare il programma e darlo a 10 persone ma il disco di protezzione è uno solo i 10 utenti che hanno il programma per avviarlo devono avere il disco chiave che è non copiabile.

i 10 utenti dovranno contattare l'autore del prg per farsi spedire un disco chiave di protezione...

Io all'inizio mi rifornivo alla clover informatica (MI) 10 dischetti 180€.
Da 3 anni ad oggi mi sono fatto tutto da solo programmando.

Naturalmente tutto questo è aggirabile da un cracker, come tutto del resto, ma con un pò di accorgimenti puoi rendergli la vita difficile criptando il codice ecc ecc. e facendo thread infiniti con ritorno di istruzioni fasulle.

OrcaAssassina
02-09-2006, 09:23
Ci sono dei sorgenti in giro gia fatti per darmi un'occhiata????

71104
02-09-2006, 09:23
Ora un utente può copiare il programma e darlo a 10 persone ma il disco di protezzione è uno solo i 10 utenti che hanno il programma per avviarlo devono avere il disco chiave che è non copiabile. perché no? alla fine si tratta di un normale floppy o sbaglio?

71104
02-09-2006, 09:25
Ci sono dei sorgenti in giro gia fatti per darmi un'occhiata???? sugli argomenti che ho descritto io sarebbero didatticamente inutili: non capiresti niente, non sono sorgenti leggibili a meno che non conosci già le tecniche. se vuoi qualche dettaglio tecnico su qualcuna delle tecniche da me descritte chiedi pure; in effetti ho omesso che è richiesta una discreta conoscenza del formato PE/COFF e di alcune convenzioni usate tra chiamate di funzioni sui processori x86 :p

okay
02-09-2006, 10:50
perché no? alla fine si tratta di un normale floppy o sbaglio?

Con una formattazione tua intendo propriamente fatta da te non a 320 o 1440 ecc ecc in quanto con windows lo riterrebbe un disco non copiabile e non valido.

Le prove le ho fatte ed è così. Se tento/ti di copiarlo con l'OS ti esce il messaggio: impossibile formattare il disco oppure disco non copiabile...


ciao

wisher
02-09-2006, 10:55
Con una formattazione tua intendo propriamente fatta da te non a 320 o 1440 ecc ecc in quanto con windows lo riterrebbe un disco non copiabile e non valido.

Le prove le ho fatte ed è così. Se tento/ti di copiarlo con l'OS ti esce il messaggio: impossibile formattare il disco oppure disco non copiabile...


ciao
Però si potrebbe sempre tentare una copia RAW leggendo l'hard disk a basso livello come descritto qui http://www.hwupgrade.it/forum/showthread.php?t=1205995

okay
02-09-2006, 11:12
Però si potrebbe sempre tentare una copia RAW leggendo l'hard disk a basso livello come descritto qui http://www.hwupgrade.it/forum/showthread.php?t=1205995

Non lo sò...
cmq solo io conosco la formattazione del floppy e la sua fat(...)
ora
cmq per un cracker è semplice aggirare l'ostacolo. Le cose + semplici sono sempre le migliori.

Intendo dire che mai mi verrebbe in mente di andare ad analizzare il disco floppy leggerne i settori, se ci riuscissi, o decriptare la stringa magari di 256 char o +.

nel momento che sò, con un debugger, dove viene richiamato il test su A:
cerco con un bel jump di saltare la chiamata per il controllo sul floppy A:
e il gioco è fatto.

Ma il mio prg non è un programma super richiesto e non sono mai finito su Astalavista ;) quindi mi sono accontentato di questo tipo di protezione.

71104
02-09-2006, 12:55
è una forma di security by obscurity di un becero assurdo :rotfl:

ti salvi per il solo fatto che i tuoi clienti non solo non ne sanno una ceppa di programmazione, ma neanche hanno mai visto Linux (la cui shell se non erro nella sua grande potenza fornisce comandi per gestire periferiche a livello raw)

ma se tu avessi clienti solo un pochino più scafati sarebbe decisamente meglio un sistema di attivazione del programma che richiede l'inserimento del codice di attivazione, e potresti congegnarne uno robustissimo che sarebbe possibile bypassare solo con metodi provatamente illegali (perché tieni comunque presente che copiare un floppy a livello raw non è mica illegale...); per esempio c'è questa storia delle chiavi asimmetriche che ho avuto modo di imparare recentemente :D :D :D :fiufiu: :huh:
praticamente:
il programma vero e proprio è criptato, e il programma di installazione per decriptarlo necessita del codice di attivazione
il programma di installazione genera due chiavi: una pubblica che serve a criptare e una privata che serve a decriptare (non a decriptare il programma finale, servono a criptare e decriptare in generale; per il programma finale serve per forza il codice di attivazione)
il programma di installazione comunica all'utente la chiave pubblica (quella per criptare), il quale dovrà poi comunicarla a te
tu solo conosci il codice di attivazione; lo cripti tramite la chiave pubblica e lo vendi all'utente
l'utente lo inserisce nel programma di installazione il quale è finalmente in grado di decriptare il programma finale e copiarlo sull'hard disk

visto? a volte un pizzico di logica ti permette di risparmiare un capitale in floppy disks :asd:

:fiufiu:

okay
02-09-2006, 15:54
ti salvi per il solo fatto che i tuoi clienti non solo non ne sanno una ceppa di programmazione...
:fiufiu:

E' vero infatti qualcuno mi ha detto...
[...ma questa è proprio una magia!?
Ho letto il floppy ma dentro non c'è nullaaa!?...]


visto? a volte un pizzico di logica ti permette di risparmiare un capitale in floppy disks
:fiufiu:

Senza andare OT, tanto le idee per questo 3d sono state scritte, ti rispondo al quote:

Risparmio/Spesa non legano affatto nel Mercato/Businnes. Per qualsiasi prodotto il capitale speso rientra nel prezzo del prodotto.
Ovvero:
prezzoprogramma = 130€ +
discochiave = 18€
= 148€ + 1€(simbolico) = 149€ ;)

...è sempre un sistema di pale, leve e carrucole


ciao

71104
04-09-2006, 14:50
Senza andare OT, tanto le idee per questo 3d sono state scritte, ti rispondo al quote:

Risparmio/Spesa non legano affatto nel Mercato/Businnes. Per qualsiasi prodotto il capitale speso rientra nel prezzo del prodotto.
Ovvero:
prezzoprogramma = 130€ +
discochiave = 18€
= 148€ + 1€(simbolico) = 149€ ;) 18 euro per un floppy ma siamo scemi, ma dove li compri i dischetti, òh? :huh:
a maggior ragione un motivo per usare un sistema di protezione più intelligente: se risparmi 18 euro per il floppy e vendi il programma comunque allo stesso prezzo (149 euro) di euri simbolici non ne guadagni 1 ma 19 :D

un risparmio non può far danno in alcuna maniera al tuo sistema di palle, leve e cazzarole :D

okay
04-09-2006, 16:31
18 euro per un floppy ma siamo scemi, ma dove li compri i dischetti, òh? :huh:


OT*OT=OTOTOTOT

Li compravo alla Clover Informatica (MI)
http://www.cloverinformatica.com/
ulteriori idee per te:
http://www.cloverinformatica.com/index.php?mainpage=usb.htm
...pensa a natale mi arriva ancora oggi un deplian con scritto:
"Auguri di buon natale spett. ditta ecc ecc".

dal 2002, come ti ho detto, i floppy me li sono fatti da me.

...un risparmio non può far danno in alcuna maniera al tuo sistema di palle, leve e cazzarole...


Nel 1994 ci collegavamo ad intenet sulle BBS ancora non ci si collegava con il www era tutto uno schermo nero, per collegarsi con www, come ora, lo si poteva fare tramite connessione di Microsoft Exchange (win95) pagando con carta di credito il collegamento + le spese telefoniche con agganci (a nodi internazionali) e una lentezza mostruosa (pensa che bollette che pagavo!!).

Tutto questo per dirti che essendo uno dei primi a programmare in italia ho strappato all'epoca parecchi contratti di collaborazione e quindi parecchia pubblicità del programma tramite riviste:
http://www.twork.it/programmazione/visualbasic/vbarticoli.html

Poi in italia i programmatori si sono moltiplicati e ora il mio programma da 3 anni ad oggi ne vendo 1 l'anno ed è giusto così che sia. Mercato saturo.

Ma l'importante, non è tanto essere bravi, ma capitare nel momento giusto nel posto giusto con una buona idea e quasi nessuno che sappia realizzarla.

Allora si che si fa bingo... questo è quello che mi è capitato.

Da allora programmo solo per hobby... i miei guadagni li ho fatti, spazio ai giovani ora, quelli umili che chiedono, perchè gli spacconi ostinati saranno tenuti incollati alla scrivania per le
palle...


Se hai un idea e ci credi fino in fondo, lascia la ragazza, lascia la moglie lascia tutti... sarai il migliore!


palle...


Hai detto bene, quelle ci vogliono... Avevo tanto da fare che non riuscivo mai a postare su questo forum all'epoca...
:huh:Erano tempi in cui solo i dinosauri circolavano sulla terra ed io con indosso un marsupione muschiato suscitavo ilarità creando nuovi font map.

Cough...! cough...!

71104
04-09-2006, 20:24
OT*OT=OTOTOTOT io non sono mai uscito dall'argomento del topic, ovvero protezione di un software dalle azioni di pirateria :O
sei tu che hai cominciato con le tue nostalgie dei bei tempi :asd:

e ma si va, inauguriamo un bell'OT anche da parte mia:

Li compravo alla Clover Informatica (MI) ma chi se ne frega dove li compravi, era un modo per dire che un floppy disk a 18 euro è un pessimo affare :Prrr:
we, stiamo parlando di un pezzo di plastica con dentro un altro pezzo di plastica, eh... al massimo ti concedo il centrino in metallo (pessimo metallaccio, valeva di più il metallo con cui facevano le 50 lire - non le 500)

http://www.cloverinformatica.com/
ulteriori idee per te:
http://www.cloverinformatica.com/index.php?mainpage=usb.htm se pensi che io abbia voglia di cliccare ti sbagli :p

...pensa a natale mi arriva ancora oggi un deplian con scritto:
"Auguri di buon natale spett. ditta ecc ecc". sei una ditta? :wtf:
okay corp.?

dal 2002, come ti ho detto, i floppy me li sono fatti da me. a me invece li fa in casa artigianali la nonna col grano che coltiva dietro casa. che vuol dire che te li facevi da solo scusa? :huh:

Ma l'importante, non è tanto essere bravi, ma capitare nel momento giusto nel posto giusto con una buona idea e quasi nessuno che sappia realizzarla.

Allora si che si fa bingo... questo è quello che mi è capitato. allora continua a sfruttarla che ti frutta: nessuno oggi realizzerebbe mai un sistema di protezione come il tuo :asd:
ma scommetto che non ti serve il mio consiglio: già continui a sfruttarla per conto tuo, nevvero? ;)

e dopodiché nel resto del post la butti sul personale per difendere chissà quale grandioso software, una vera schifezza per definizione che usa un hack orribile che funziona con un solo filesystem; una forma di security by obscurity, ribadisco, di un becero assurdo.

ma come mai hai sentito la necessità di andare su quella linea difensiva? ti mancavano le ragioni tecniche per difendere la tua porcheria (giusto per dare uno spunto che possa riportare IT)?

troppo facile su un forum sparare del nerd frigido a destra e a manca: se me l'avessi detto dal vivo ti avrei risposto che non sono bravo quanto te a parole - e perciò avrei risolto con le mani.

okay
04-09-2006, 22:08
...che vuol dire che te li facevi da solo scusa? :huh:
.

Compravo 1 confezione di floppy al prezzo di 5€ contenente 10 floppy al negozio dietro casa (rivenditore specializzato per PC). Poi portavo a casa la confezione e dopo averla aperta, prendevo un dischetto e lo inserivo nel floppy A:
poi con un programmino vb6 formattavo il disco e poi sempre dal programma vb6 andavo a scrivere nel bootsector... sai nei primi 512 bytes del settore, una stringa di char.

Da solo mi facevo i piombi per pescare. Li squagliavo e li mettevo in una forma di acciaio da 150 gr. un etto e mezzo per intenderci.


se pensi che io abbia voglia di cliccare ti sbagli


sò che l'hai fatto... non trovi che è stata una bella idea quella della protezione con chiavetta USB?... fico hè!!
Chiedi del sig. palumbo di c ne sà una vagonata...





...perciò avrei risolto con le mani


...io con una mano legata a una barella... anzi prima che risponda rep ancora meglio...senza mani!!

tiè ti ridò l'iconcina :huh:

71104
05-09-2006, 13:03
se, vabbè, addio: la discussione è diventata completamente sterile; non sei in grado di esporre ragioni tecniche, vuoi solo pigliare per il culo coi tuoi deliri pseudo-divertenti. continua pure da solo, so bene che non accetteresti mai di non avere l'ultima parola, te la cedo volentieri.