|
[ protech_v2 @ 09.11.2004. 13:31 ] @
| Ok, dakle imam sledeci problem:
Imam program za sportska takmicenja koji treba preko odredjene sportske asocijacije da se daje na koriscenje organizatorima uz nadoknadu naravno. Ono sto bih ja hteo je da program ne moze da se koristi bez registracije (recimo na sajtu) da bih znao kad ga neko koristi i koliko sportska asocijacija treba meni da plati (jer se placa po koriscenju). S druge strane, treba mi i drugi nivo zastite, koji bi onemogucio da se program koji je registrovan koristi ponovo tj. da ga lepo kopiraju i koriste opet bez znanja asocijacije i mog.
Mogao bih da u programu generisem kod vezan za konkretan kompjuter, pa po registraciji na sajtu da dobiju serijski broj, ali otkud znam na koliko ce ga kompjutera koristiti (a to me ne interesuje sto se placanja tice) i kako da sprecim da ga koriste ponovo na tom istom kompjuteru za sledece takmicenje?
Druga varijanta bi bila da kad se registruju, ja posaljem recimo fajl koji omogucava programu da radi, ali do odredjenog datuma. Ovo bi bilo ok, nije vezano za broj kompjutera, i onemogucava kasnije koriscenje, ali ne znam kako to prakticno da izvedem u Delphiju i da ne bude lako za crackovanje, jer mi se cini da bi lako mogao da se analizira sadrzaj tog fajla i na osnovu njega napravi drugi sa datumom koji treba?
Znaci bio bih zahvalan za komentare za obe varijante i za konkretne savete kako da izvedem ovo drugo!
|
[ overflow @ 09.11.2004. 18:48 ] @
Ja bih ti preporucio da pogledas gotova resenja kao sto su AVLock Gold i ICE License.
[ protech_v2 @ 09.11.2004. 23:57 ] @
Hmm, pogledao sam, oba resenja su odlicna, ali i kostaju, a ja bih ipak ako moze for free...Nije mi tesko da radim, samo mi trebaju smernice oko tog fajla koji bih slao za registraciju
[ Rapaic Rajko @ 10.11.2004. 09:45 ] @
Pa kriptuj fajl, a u svom programu ugradis dekripciju istog. Evo jedna suluda ideja:
1) Korisnik dobije program na koriscenje i instalira ga na svom kompu
2) Prilikom registracije (prvi odlazak na sajt) user program posalje pattern (parce sopstvenog exe-a ?) TEBI
3) Ti (na sajtu) uzmes to parce i sa njim XOR-ujes fajl koji ces da vratis user programu
4) User program pokupi fajl, snimi ga (moze i u Registry ?), opet ga XOR-uje svojim pattern-om i dobije originalni sadrzaj.
Dobro, nije ovo nesto za crack-ovanje, ali kad bih se stvarno udubio, jos bih ga vise zamrsio. Recimo, pattern ne mora biti parce 'od-do' iz exe-a, moze da se uzme po nekom pravilu, recimo 'od-do, samo parni bajtovi' ili tako nesto. Ili da uzmes za pattern neku kombinaciju kljuceva iz lokalnog Registry-ja?
Rajko
[ sasas @ 10.11.2004. 09:47 ] @
npr
ako zelis licencu koja traje od 1.1.2005. do 10.1.2005.
saljes fajl lic.dat u kom pise:
1.1.2004. 10.1.2004.
pa procitas iz tog fajla prilikom startovanja programa.
da ne bi svako mogao promeniti brojeve dodas jos jednu liniju u lic.dat koja bi bila npr. md5 potpis prve linije. kad citas lic.dat, citas datume, pa potpis, pa uporedis i to je to. na googletu ukucaj 'md5 delphi' za vise informacija.
neces se nikad odbraniti od ozbiljnog pokusaja razbijanja programa, ali ces spreciti da ljudi mogu da menjaju tvoj .lic fajl. za pocetak, mislim sasvim dovoljno.
ss.
[ protech_v2 @ 11.11.2004. 23:04 ] @
Hvala puno na idejama, odlicne su - razmislicu jos o obe, pa cu odluciti. Hvala na pomoci stvarno
[ bancika @ 11.11.2004. 23:09 ] @
samo koristi Salt kada radis sa Hash algoritmima jerbo on moze da upise md5 za novu liniju koju je izmenio pa da je tvoj algoritam prihvati kao ispravnu. Ovako mozes da dodas 32bitni salt + eventualno string password.
[ vladab @ 12.11.2004. 14:47 ] @
Meni je palo na pamet da mozda mozes da napravis dll, koji ces da posaljes uz taj fajl i koji ce da ga proverava, a da se poziva iz tvog programa. Tako mozes da radis sa razlicitim nacinima kodiranja, gde ce dekodiranje raditi tvoj dll, koji dajes kada se registruje.
[ broker @ 12.11.2004. 15:51 ] @
Bavite se problemom kako kodirati podatke tako da eventualni cracker ne moze da ih dekodira. To je dobro uraditi ali nikako nije presudno, jer haker ne mora to ni da radi, on ce pustiti aplikaciju da sama dekodira sto treba pa ce onda da uskoci.
Najvaznija stvar je u samoj aplikaciji voditi racuna kako se koriste podaci o registraciji i kako oni uticu na njeno funkcionisanje.
Kao prvu stvar treba zaboraviti bilo kakvo direktno koriscenje tih podataka. Treba ih koristiti posredno i na takav nacin da sam podatak postane bitan za funkcionisanje apliakcije a ne da sluzi samo za to da se odredi da li aplikacija treba da funkcionise.
Ako koristis datum kao kriterijum da li aplikacija treba da radi ili ne, cracker se uopste nece baktati sa tvojim kljucem nego ce da nadje gde u apliakciji proveravas datum, stavice NOP ili dva i nema vise provere.
Datum treba da postane bitan parametar za aplikaciju tako da ako je datum pogresan aplikacija i dalje radi ali radi pogresno. Tesko je sad dati predlog kako to konkretno kod tebe izvesti jer dobra zastita zahteva dosta vremena za analizu koda i planiranje zamki. Potrebno je i izvesno znanje asemblera, a narocito kako Delphi generise masinski kod, jer nesto sto iskomplikujes u Delhiju, kada se iskompajlira postane trivijalno za hakovanje. Opet, kada znas kako stvari stoje u masinskom kodu, lako mozes da zamutis cak i vrlo jednostavnim trikovima.
Dobra zastita se ne zasniva na smisljanju nacina da se onemoguci krekovanje nego na tome da krekovanje postane komplikovano i da trazi mnogo vremena. Sto komplikovanije to bolje.
Ako se to uradi kako treba, nema nikakve potrebe za hardverskom zastitom ili ne znam cime.
[ sasas @ 12.11.2004. 19:25 ] @
Citat: broker: Dobra zastita se ne zasniva na smisljanju nacina da se onemoguci krekovanje nego na tome da krekovanje postane komplikovano i da trazi mnogo vremena. Sto komplikovanije to bolje.
Ako se to uradi kako treba, nema nikakve potrebe za hardverskom zastitom ili ne znam cime.
Sve ovo sto si naznacio stoji, ali treba voditi racuna i o vremenu da se 'dobra' zastita napravi. To vreme se moze kud i kamo bolje iskoristiti za dodavanje novih featurea u program. Po meni, najbolje je napraviti zastitu iskljucivo protiv samih korisnika ili hakera-pocetnika. Sve preko toga je bacanje vremena, jer je ionako nemoguce zastiti program.
Lako se mozes dovesti u situaciju da si 'komplikovao' nedeljama, a da je to neko razbio za 5 min.
Najbolja zastita: prodavati sw po fer ceni, i da vredi svog novca. Ljudi (ne svi, naravno) ce ti platiti ako si ponudio pravu vrednost za novac koji trazis.
ss.
[ broker @ 12.11.2004. 22:57 ] @
U zemlji gde je sasvim normalno da se krekuju programi covek mora da zastiti svoj proizvod od lopova. Stoij da je za dobru zastitu potrebno dosta vremena da se napravi, mada uz uskustvo ide brze jer se lakse uocava gde i kako moze da se uglavi kod za zastitu.
[ protech_v2 @ 13.11.2004. 16:43 ] @
U vezi sa prvim delom, jako sam zahvalan na savetima, zainteresovao sam se bas za temu, o kojoj nisam znao skoro nista, pa sam uzeo dosta da citam po netu i saznao sam osnovne stvari, tako da hvala na uputstvima.
Jos me jedino zanima sta vi predlazete gde da smestam Salt? Ako je na datume dodat Salt i onda odradjeno hashovanje, moram da posaljem i Salt da bi program mogao da cita fajl sa datumima, a ako ga posaljem npr. opet samo u tekstualnom fajlu, zar ne moze neko da procita i pretpostavi da je to salt i opet lako doda novi MD5 potpis koji bi program verifikovao kao ispravan? Mozda bih mogao da ga hardcodujem u program kao neki levi string?
A sto se tice rasprave o zastiti uopste, slazem se sasasom, nije mi namera da ulozim previse truda protiv pravih crackera, mada bih naravno voleo da im bude makar malo teze, vec prvenstveno protiv korisnika i wanabe-crackera koje bi oni mogli upitati da "pripomognu".
Citat: Najbolja zastita: prodavati sw po fer ceni, i da vredi svog novca. Ljudi (ne svi, naravno) ce ti platiti ako si ponudio pravu vrednost za novac koji trazis.
Svidja mi se ova pretpostavka i voleo bih da mogu da je prihvatim i mada me tesi sto ce se softver koristiti u inostranstvu (a kad bude kod nas, ja cu biti prisutan), ipak sam upoznao previse predsednika i funkcionera (cast izuzecima) sportskih saveza i imao uvid u previse njihovih "varijanti" sa organizacijom, placanjem i slicno da bih bio miran, pa cu se ipak potruditi, a usput cu i nauciti nesto :)
[ broker @ 13.11.2004. 22:46 ] @
A sto onda ne uradis kao sto je uobicajeno: korsinik pokrene neregeistrovna program kod sebe, on izgeneris eneki kod koji zavisi od hardvera i trenutnog datuma, kontaktirate, ti mu das drugi broj koji generises na osnovu infrormacija koje je dao te ga on ukuca u program i registruje ga. Nakon isteka perioda korsicenja program se deregistruje i onda ide Jovo nanovo.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|