PDA

Pogčedajte punu verziju : Zastita programa od kopiranja


colke
22. 11. 2006., 13:28
Potrebno mi je da jedan moj program zastitim od kopiranja. Znam da totalna zastita nije moguca (i Windows Vista je razbijen), ali neki vid zastite bi trebalo da onemnoguci obicnim korisnicima, koji neznaju tehnike hackeringa, kopiranje.

Sad imam ja neke ideje, ali pretpostavljam da postoje neke standardne tehnike za resenje ovog problema. Ako neko ima iskustva....

P.S. Takodje me zanimaju tehnike kako da program napravim da bude trial, tj. da radi neko vreme, a posle ne.

jasmanac
22. 11. 2006., 15:09
Cekaj, ne razumem jednu stvar... Imas skills da napises program a ne znas kako da ga ogranicis? Nesto mi tu ne stima...

colke
22. 11. 2006., 15:18
Tehnike, tehnike...

Ko sto rekoh, uradio bi ja to nekako na moj nacin ali zelim da cujem i iskustva drugih koji su tako nesto radili. Ne mislim da sam najpametniji, sigurno je da neko ima i bolju ideju od mene.

ppavlovic
22. 11. 2006., 15:37
Probaj Software Passport (Armadillo nekad) ili Softwrap.

Mr.Paja
22. 11. 2006., 15:46
Ovo je prava stvar za to :
http://www.sofpro.com/:1043:

Koristim ga aktivno vec 2 godine i nije bilo problema a ima i pregrst opcija ....

ivanhoe
22. 11. 2006., 23:13
Cekaj, ne razumem jednu stvar... Imas skills da napises program a ne znas kako da ga ogranicis? Nesto mi tu ne stima...


sto?
zastita od kopiranja nije uopste trivijalni zadatak, a i zahteva neke sasvim druge 'skills' od uobicajenih programerskih (bar osnovnu ideju o crackovanju i radu sa softice-om (ili koji je vec trenutno aktuelan debuger, zardjao sam sa tom materijom..) )

@colke: Ja sam isto cuo da je PC Guard dobro gotovo resenje, ali ipak iskombinuj te tvoje ideje sa gotovim paketom. Gotovi paketi imaju manu sto su obicno dobro poznati i zna se koje su im tehnike, pa ces sa svojim sopstvenim resenjem, makar bilo i trivijalno, da uneses malo randomizacije u celu stvar.

colke
23. 11. 2006., 09:50
Verovatno su sve to dobri programi za zastitu i siguran sam da bi zavrsili posao, ali moj cilj nije zastita na takav nacin. Uzgred, to i kosta. Doduse kosta i moje vreme koje cu utrositi na resavanje tog problema, ali...

Zastitu sam hteo sam da napravim, programski. Pored toga sto cu zastititi program, cilj mi je i da izucim te tehnike zastite. Iznecu neke svoje ideje, pa koga zanima mozemo malo da vodimo diskusiju oko tog problema kako bi ja, a i svi ostali na ovom forumu imali koristi. Ustvari, ideje koje cu izneti nisam ja izmislio, to su vec poznate tehnike koji mnogi programeri koriste, a ja bi da ovde to malo razradimo zajedno.

1. Po meni je najbolja aktivacija preko interneta, Program kada se instalira potrebno je da se aktivira. Aktiviranje se vrsi tako sto se kaci na neku moju bazu gde sam ja za usera kome sam dao program vec uneo neki aktivacioni kod. Aktivacioni kod se upise u registry ili u neki kriptovani fajl i proverava se pri svakom pokretanju programa. Pomocu aktivacionog koda sifruju se podaci u bazi, tako da bez njega em program ne radi, em su podaci nedostupni. Ova tehnika moze se kombinovati i sa dole navedenom pod brojem 2 (jos bolja varijanta), ali ima i neka ogranicenja: teoretski mozda korisnici nemaju vezu ka internetu + potrebno je imati pristup nekom serveru na kojem ce se nalaziti baza usera i aktivacionih kodova.

2. Uzima se potpis masine na kojoj se program instalira (serijski broj diska, ploce, procesora), pomocu ovih brojeva se na neki nacin sifruje baza podataka (sluzi kao kljuc). Ako se program iskopira na drugu masinu podaci iz baze bi bili neupotrebljivi jer ne moze da se izvrsi dekodiranje istih.

Jasmanac, da li sad razumes sta sam hteo reci?

BTW: Da li neko zna kako bi iz .NET-a (C#) mogao da pokupim seriske brojeve hardvera. Postoje li neke posebne klase...

Mr.Paja
23. 11. 2006., 11:38
1. Po meni je najbolja aktivacija preko interneta, Program kada se instalira potrebno je da se aktivira. Aktiviranje se vrsi tako sto se kaci na neku moju bazu gde sam ja za usera kome sam dao program vec uneo neki aktivacioni kod. Aktivacioni kod se upise u registry ili u neki kriptovani fajl i proverava se pri svakom pokretanju programa. Pomocu aktivacionog koda sifruju se podaci u bazi, tako da bez njega em program ne radi, em su podaci nedostupni. Ova tehnika moze se kombinovati i sa dole navedenom pod brojem 2 (jos bolja varijanta), ali ima i neka ogranicenja: teoretski mozda korisnici nemaju vezu ka internetu + potrebno je imati pristup nekom serveru na kojem ce se nalaziti baza usera i aktivacionih kodova.

Resenje imas u okviru pomenutog PC-Guarda a to je >
AC Generator for Win32/Web - Integrate calculation of activation codes over Internet connection.



2. Uzima se potpis masine na kojoj se program instalira (serijski broj diska, ploce, procesora), pomocu ovih brojeva se na neki nacin sifruje baza podataka (sluzi kao kljuc). Ako se program iskopira na drugu masinu podaci iz baze bi bili neupotrebljivi jer ne moze da se izvrsi dekodiranje istih.

Resenje imas u okviru pomenutog PC-Guarda a to je >
- Hardware locking!
Lock your software to target computer. Seven locking parameters are now available: HD volume ID, Bios ID, OS ID, CPU ID, Network card ID, HD hardware ID and CD/DVD hardware ID.

Imao sam slicnu dilemu kao i ti pre par godina, al kada se sve sabere i oduzme najbolje resenje je da uzmes gotov proizvod jer ljudi su usko specijalizovani za to i imaju vise iskustva, nema stresa ni gubljenja vremena, a ovako ako pocnes sa nekim custom resenjem vrlo lako moze da se desi da previdis neku rupu i onda ti je dzaba sve ...

colke
23. 11. 2006., 11:50
Da pogledao sam, sama aplikacija za zastitu kosta 400e + 170e ActivationSuite, izadje mnogo za mene.

ivanhoe
23. 11. 2006., 13:26
problem sa zastitom je sto ti uvek moras da imas neki if negde koji ce da izvrsi proveru, i tu je najslabija tacka. Sto bi neko razbijao tvoj aktivacioni kod, ako moze naprosto da jedan JNZ pretvori u JMP, i da zaobidje celu proveru. Tako da ti treba visestruka, dobro maskirana provera. Takodje obavezno sve stringove vezane za poruke o registraciji drzi enkripovane, jer je pretraga po tom stringu najlaksi nacin da se backtrackuje tacka gde se vrsi provera.

U principu kod zastite kazu da treba raditi sve suprotno od klasicne teorije programiranja: koristiti goto, koristiti operacije na pointerima, nepotrebne medjupromenjive i ostale stvari koje zbunjuju onog ko debaguje kod...

misk0
23. 11. 2006., 14:54
problem sa zastitom je sto ti uvek moras da imas neki if negde koji ce da izvrsi proveru, i tu je najslabija tacka.
Nije obavezno

Mozes sa programom generisati jedan kljuc, taj isti kljuc posaljes serveru, on ti izgenerishe drugi kljuc. Koristeci ta 2 kljuca ti dobijas 'password' kojima pristupas odredjenim resursima aplikacije (baza, pathovi i slicno).
Nemas nigdje if vec imas obicne operacije sa stringovima i kad dobijes pogresnu kombinaciju program pokusava da npr. otvori fajl na drugoj lokaciji, konektuje se na drugu adresu baze i slicno.

ivanhoe
23. 11. 2006., 17:29
^^ ali onda ne mozes da korisniku das suvislu poruku o tome da treba da se registruje, nego mu iskoci neka nevezana greska. Takodje onda ne mozes da implementiras trial period, bar ne jednostavno..