|
[ Miloš Baić @ 22.07.2006. 14:25 ] @
| Pozdrav,
trebala bi mi neka freeware komponenta kojom ću zaštiti program. Odnosno, napraviti
shareware verziju. Nešto tipa, demo verzije, koja će trajati 10 dana, a potom prestati
sa radom. Ako se unese registracioni kod, pre isteka, program će normalno funkcionisati. |
[ icobh @ 22.07.2006. 15:15 ] @
Uh. Freeware komponenta za shareware program. Kakva kombinacija... Pa napravi sam. Kad pokrenes program sacuvaj datum prvog pokretanja u neki file ali kriptovan i uvijek kad se pokreće, pitas da li je proslo 10 dana (uporedis trenutni datum sa sacuvanim datumom) i ako nije, nastavi dalje, a ako jeste, ugasi program itd... Naravno ovo nije baš najbolje rješenje ali govorim primjer...
[ inherited @ 22.07.2006. 16:10 ] @
Na koliko treba postaviti interval na TTimer komponenti da bi trajalo 15 - ak dana?
I, kako odbrojavanje unazad(15,14,13,...,Poslednji dan) predstaviti u TLabel-u?
[ Burgos @ 22.07.2006. 18:24 ] @
Postoji jedna komponenta, vidjao sam je. Regware ako se ne varam.
Pogresan ti je pristup. Nemoj sa TTimerom, nego kao sto rece icobh, u kriptovani fajl upisi datum kada je instaliran program, ili prvo pokretanje programa, pa onda svaki put kada se pokrene program, uporedi trenutni datum sa datumom kada treba da istekne registracija.
[ Miloš Baić @ 22.07.2006. 19:08 ] @
Malo sam vršio pretragu i našao u jednoj temi, da, bolji način zaštite programa je postaviti DEMO verziju, pa ako neko kupi, pošalješ mu FULL verziju. DEMO verzija je ograničena na neki broj dana ili startovanja, ili neke opcije ne funkcionišu. Ali, ako ti nekome pošalješ FULL verziju, bez ikakve zaštite (šifre, ključa...), on to može zloupotrebiti preprodati, pokloniti itd...?
[ bizzy86 @ 22.07.2006. 20:31 ] @
Moze se naci na netu freeware komponenata samo ih treba pronaci... Ne znam napamet adresu jer mi je puko win a imao sam je u bookmarku ako je skontam javicu... Komponenta se zove TMXProtector mislim... Moze da prvi time trial i da pravi generator u zavisnosti od imena i brojeva sa hdd, biosa i sl.
[ Nemanja Avramović @ 22.07.2006. 21:48 ] @
Naravno, pristup vam je skroz pogrešan.
Možeš da napraviš kakav hoćeš sistem zaštite ali ako se na kraju sve svodi na:
Code: if (registered = true) then
begin
...
...to će svaki cracker da crackuje za 2 minuta. Pravo rešeje - ne znam. Poenta je u tome da taj ključ koristiš u nekom važnom algoritmu (kako to implementirati - ne znam  ) u programu i ako neko crackuje program onda program više neće da radi uopšte kako treba već će da brljavi 
[ Miloš Baić @ 23.07.2006. 00:55 ] @
Pa, dobro, šta je onda optimalno rešenje?
[ bizzy86 @ 23.07.2006. 01:25 ] @
koliko znam ovaj ne ide tako, skini paketic ima i demoe na njemu pa pogledaj... ne znam koliki je problem nekome razbiti tu zastitu ali ako ti je program dovoljeno dobar neko ce se potruditi da je razbije ma cime ti zastitio svoj software... sve se moze da nas razbiti...
[ Nemanja Avramović @ 23.07.2006. 02:17 ] @
Naravno da se sve može razbiti, ali poenta je u tome da vam ne vredi (mnogo) ni aktivacija preko interneta, ni zavisnost od hardvera, ni ništa slično ako se posle toga provera registracije svodi na jedno IF.
[ aleksandarpopov @ 23.07.2006. 10:14 ] @
Ako ti program donosi kintu, dobar je, trazi se... blablabla... razmisli o pravnoj zastiti, autorskim pravima (ne razumem se bas u to)...itd. Ljudi razbijaju programe kao Office, Corel... koji verovatno imaju malo bolju zastitu nego sto bi neko od nas mogao napraviti, sada da li je lakoca razbijanja zastite namerno ostavljena (da bi se vise koristili ti programi) ili ne to je vec drugo pitanje. Takodje zavisi kako ces program distribuirati internet, cd ...
Ako zastitu pravis da ti najobicniji korisnik ne moze kopirati, kao sto sam ja radio za neki programcic za vodjenje magacina upisivao sam sve podatke (u sifrovanom obliku) u tabelu dozvola. Tu sam pisao broj HDD-a, datum prvog pokretanja, datum trajanja triala, bilo je u planu i da saljem kljuc za njegov br. HDD ali mi na kraju mi nije ni trebalo. Neki najobicniji cracker bi to lako razvalio, ali meni je trebalo samo da taj obican korisnik ne moze da prebaci program na jos neki racunar bez mog znanja, ili eventualno preproda. Za ono sto je meni trebalo, zastita je bila ok. Sve u svemu ne vredi gubiti mnogo vremena na tome.
Poz
[ Burgos @ 23.07.2006. 13:22 ] @
Citat: JaHvram: Naravno da se sve može razbiti, ali poenta je u tome da vam ne vredi (mnogo) ni aktivacija preko interneta, ni zavisnost od hardvera, ni ništa slično ako se posle toga provera registracije svodi na jedno IF.
Nemojte me pogresno shvatiti. Nisam nigde rekao da treba da uporedjuje datume pomocu IF naredbe. Rekao sam da uporedi, a to moze uraditi na X nacina.
[ Nemanja Avramović @ 31.07.2006. 20:03 ] @
Primer? 
[ broker @ 31.07.2006. 21:43 ] @
Prilicno jednostavan a efikasan nacin zastite je taj da kljuc za registraciju korsitis kao deo nekog izraza koji se stvarno korsiti u programu. Ako je kljuc ipsravan, onda ce i izraz biti dobro uradjen a ako nije.. ebiga..
Pre toga stavis if koje stvarno proverava da li je kljuc ok, ali ne radi provere zastite nego da zaobidjes izracunavanje izraza i prijavis odgovarajucu gresku. Ako haker zezne ono fi, njemu greska zaista nece biti prikazana ali ni izraz nece biti tacan (makar i pukao program).
A da ishakerise izraz, to ce mu vec ici teze.
[ Nemanja Avramović @ 01.08.2006. 12:35 ] @
Da, to sam i ja pročitao negde ali nikad nisam uspešno primenio 
[ qwertzuiopasdfghjkl @ 01.08.2006. 17:59 ] @
Ajde molim te nakucaj nekakav programcic sa takvom zastitom pa bas da vidim kako to izgleda... nemoj davat kod, vec samo .exe!
[ marcha @ 01.08.2006. 23:53 ] @
broker, jesi mislo na ovako nesto:
Code:
function GetBrojFakture:integer;
begin
//na primer poredjenje sa brojem hdd
if codiranistring=broj_hdd then
result:= -1*StrToInt(BoolToStr(codiranistring=broj_hdd))*funkcija_kojom_inace_citas_broj_fakture;
end;
[ misk0 @ 02.08.2006. 08:27 ] @
^^^^ Pa ne bash.
Poenta je izbjeci IF. Znaci koristis taj neki Key za recimo desifrovanje putanje:
Code:
real_path := decode(coded_path, keycode)
Gdje ti je keycode registarski kljuc ili tako nesto.
Kasnije kad pristupas fajlu recimo sa real_path+"filename.ext", ako je pogresno dekodovan path, dobices 'file not found' sto ne lichi na gresku pogresne registracije :)
[ marcha @ 02.08.2006. 08:44 ] @
Ma ok... vidis valjda da i ako se izbaci if funkcija vraca pogresnu vrednost ako nije zadovoljen kontrolni iskaz.A kontrolni iskaz moze biti biti biilo koja kodirana fja... u ovom slucaju codiranistring=broj_hdd...codiranistring moze biti bilo koja f-ja koja cita nesto i codira/decodira...broj_hdd je takodje naveden samo kao primer...
[Ovu poruku je menjao marcha dana 02.08.2006. u 10:05 GMT+1]
[ broker @ 02.08.2006. 10:40 ] @
Citat: qwertzuiopasdfghjkl: Ajde molim te nakucaj nekakav programcic sa takvom zastitom pa bas da vidim kako to izgleda... nemoj davat kod, vec samo .exe!
MPGScript. Na Google-u ces naci i krekove, ali koliko znam ni jedan ne radi, vec samo uklanjaju neke poruke u neregistrovanoj verziji.
Citat: marcha: broker, jesi mislo na ovako nesto:
Da. To je jednostavna varijanta ali tako nesto. Samo treba da izbegavas da korsitis logicki izraz jer se on opet svodi na IF. Naime, kada pravis zastitu moras da razumes kako se kod prevodi u masinksi jezik, da bi znao sta da izbegavas da radis jer se prilikom kompajliranja opet svede na karakeristican kod.
E sad, to je uglavnom tesko izvesti sa zastitom koja se svodi na unos registracionog koda. ja za takve zastite korsitim kljuc koji je datoteka. Kada se stavi kljuc u direktorijum gde je i exe, on ga procita, dekodira, i upotrebi ono sto mu je potrebno. Tako imas vise prostora da smestas zamke jer u datoteku kljuca mozes da stavis dosta sitnih podataka bez kojih program ne moze da radi ispravno.
Recimo, u tvom slucaju, ne proveravas da li je serijski broj diska tacan, nego sam serijski broj diska koristis za na primer dekodiranje nekog vitalnog podatka koji se koristi u izrazu. Ako je kod diska tacan dobices ispravan podatak. Ako nije tacan, neces imati ispravan podatak, a nigdeu kodu ne posotji IF koje o tome odlucuje.
Ispred mozes, kao sto si i uradio da stavis IF cisto da sprecis da se kod izvrsi ako registracija nije ispravna, da ne bi pucala demo verzija. Kraker moze da skloni to IF, ali ce vrlo tesko da provali sta se desava u izrazu, jer nigde ne figurira konkretna ispravna vrednost koja je neophodna za ispravan rad programa.
Ovo, naravno, nije idealna zastita, ali svakako mnogostruko komplikuje krekovanje, narocito ako imas mnogo maste oko postavljanja zamki, to jest, ne oslanjas se samo na jedan podatak nego na vise njih, koristis vise razlicitih nacina kodiranja podataka, kodiras vec kodirane podatke, isti podatak kodiras i cuvas u kljucu na vise mesta tako da negde koristis podatak procitan sa jednog mesta, a na drugom podatak sa drugog mesta u kljucu, uvedes proveru checksum-a tako da kraker ne moze tek tako da menja kljuc i eksperimentise, jer mora da provali ikako da namesti ceksum (a jos ako je i sam ceksum kodiran zajedno sa podacima... pa i to kodirano ima ceksum... ima da place od muke samo tako).
Osnovno pravilo je da ne pravis karakteristican i preoznatljiv kod. Ja sam umeo da napravim po 30-40 razlicitih nacina da iskoristim podatke iz kljuca u izrazim u programu, tako da prostom statistikom iskucujem mogucnost krekovanja programa: prosto vreme koje je krakeru potrebno da nadje i ukloni sve zamke daleko prevazilazi vrednost programa.
I nikada nemoj da potcenis kvalitet Delphi kompajlera. Ume on vrlo lepo da razmrsi kakav god spaget da napises i svede ga na vrlo jednostavan masinski kod. Mozes i sam probati: napravi program koji ispisuje kopirajt poruku, ali da se u kompajliranom exe ta poruka ne moze pronaci. Uvedi samo jedno ogranicenje: da ne smes da u sors upises unapred kodiran string.
[Ovu poruku je menjao broker dana 02.08.2006. u 12:19 GMT+1]
[ enes omeragic @ 02.08.2006. 10:53 ] @
>
>Imas u JVCL komponentama gotovu komponentu JV time limit. Ako ti nesto
>znaci.
[ qwertzuiopasdfghjkl @ 02.08.2006. 14:32 ] @
"MPGScript. Na Google-u ces naci i krekove, ali koliko znam ni jedan ne radi, vec samo uklanjaju neke poruke u neregistrovanoj verziji."
Pogledao sam ti taj prog.. jako lose odradjena zastita.. sto se tice svega!
Posto si ti autor tog programa trazim i dopustenje od tebe ako zelis da ti tu na forumu kazem sve o tome... ne zelim nikakvo sudsko gonjenje zbog prckanja po tvom .exe-u!
[ broker @ 02.08.2006. 14:38 ] @
Ma prckaj slobodno. Da mi smeta ne bih ti ni davao info.
[ qwertzuiopasdfghjkl @ 02.08.2006. 15:49 ] @
Ukratko...druga stvar koja nas jako zivicira kad otvorimo mpgscrpt.exe je item "Unregistred trial copy" u glavnom mainmenu-u..pa ajde da od toga pocnemo!! Prva i osnovna stvar koja se mora uradit je provjera s kojim kompajlerom je taj fajl napravljen.. dali je pakovan/protektovan! Na veliko izenadjenje program nije ni pakovan ni protektovan vec je uradjen u Borland Delphi-u. Prvo cemo povadit sto vise informacija samom programu:
Da vidimo kako izgleda .dfm fajl od TFrom1 (glavne forme):
object Form1: TForm1
Left = 96
Top = 134
Width = 700
Height = 403
HelpContext = 14
Caption = 'MPGScript'
Color = clYellow
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Menu = MainMenu1
ShowHint = True
//hrpa toga....
object pnlBtnSeparator: TPanel
Left = 421
Top = 0
Width = 3
Height = 23
BevelOuter = bvLowered
TabOrder = 2
end
//hrpa toga....
object btnTemplateDel: TButton
Left = 140
Top = 1
Width = 45
Height = 20
Hint = 'Delete current template'
Caption = '&Del'
Enabled = False
TabOrder = 3
OnClick = btnTemplateDelClick
OnMouseMove = pnlHotMouseMove
end
end
end
end
object tmrBlink: TTimer
OnTimer = tmrBlinkTimer
Left = 40
Top = 64
end
Dosli smo na nesto zanimljivo.. a to je TTimer komponenta na glavnoj formi, koja pri svakom intervalu poziva tmrBlinkTimer proceduru... a ta procedura se nalazi u programu na RVA: 00466574, ako pak pogledamo sta se tamo desava vidjet cemo:
00466574 . 8B90 A8020000 MOV EDX,DWORD PTR DS:[EAX+2A8]
0046657A . 807A 30 00 CMP BYTE PTR DS:[EDX+30],0
0046657E . 75 0A JNZ SHORT mpgscrpt.0046658A
00466580 . 8BC2 MOV EAX,EDX
00466582 . B2 01 MOV DL,1
00466584 E8 E7DEFBFF CALL mpgscrpt.00424470
00466589 . C3 RETN
0046658A > 8BC2 MOV EAX,EDX
0046658C . 33D2 XOR EDX,EDX
0046658E . E8 DDDEFBFF CALL mpgscrpt.00424470
00466593 . C3 RETN
Hmm.. zanimljivo, imamo 2 CALL-a, jedan koji ubacuje "Unregistred trial copy" u main menu, a drugi koji ga izbacuje ako postoji.. ako pogledamo gdje vodi prvi CALL vidjet cemo:
00424470 /$ 8850 30 MOV BYTE PTR DS:[EAX+30],DL
00424473 |. B2 01 MOV DL,1
00424475 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00424477 |. FF51 28 CALL DWORD PTR DS:[ECX+28]
0042447A \. C3 RETN
A to je upravo ubacivanje u main menu, stoga trebamo NOPovat poziv tog prvog CALL-a tako da to izgleda:
00466574 . 8B90 A8020000 MOV EDX,DWORD PTR DS:[EAX+2A8]
0046657A . 807A 30 00 CMP BYTE PTR DS:[EDX+30],0
0046657E . 75 0A JNZ SHORT mpgscrpt.0046658A
00466580 . 8BC2 MOV EAX,EDX
00466582 . B2 01 MOV DL,1
00466584 90 NOP => ovo smo izmjenili
00466589 . C3 RETN
0046658A > 8BC2 MOV EAX,EDX
0046658C . 33D2 XOR EDX,EDX
0046658E . E8 DDDEFBFF CALL mpgscrpt.00424470
00466593 . C3 RETN
Spremimo promjene u .exe i pokrenemo programi vidimo da se ta poruka vise ne prikazuje... krenimo sada na onaj prvi iritirajuci dio (ona slika koja se pojavljuje pri pokretanju fajla mada ona ne mora imat veze s registracijom):
To je forma, a na formi slika, ime forme je TfrmSplash i ima 3 procedure, a to su:
Timer1Timer
FormCreate
Image1Click
Timer1Timer i Image1Click sluze za gasenje forme, a FormCreate za kreiranje
Njihove adrese redom su:00468434,00468478 i 00468558
Adresa na kojoj se kreira forma je:
00468867 . E8 CC20FCFF CALL mpgscrpt.0042A938 => 00468478 /. 55 PUSH EBP
Tu sad treba preusmjerit poziv na RET od poziva kreiranja te forme..
Sto se tice registracije.. lako je uocljiv ovaj dio koda:
0045F8C3 . 8B15 18A34600 MOV EDX,DWORD PTR DS:[46A318] ; mpgscrpt.0046B9B0
0045F8C9 . B9 06000000 MOV ECX,6
0045F8CE . E8 C541FAFF CALL mpgscrpt.00403A98
0045F8D3 . 8B85 84FEFFFF MOV EAX,DWORD PTR SS:[EBP-17C]
0045F8D9 . BA 58124600 MOV EDX,mpgscrpt.00461258
0045F8DE . E8 1543FAFF CALL mpgscrpt.00403BF8
0045F8E3 . 74 15 JE SHORT mpgscrpt.0045F8FA
0045F8E5 . 6A 00 PUSH 0 ; /Arg1 = 00000000
0045F8E7 . 66:8B0D 601246>MOV CX,WORD PTR DS:[461260] ; |
0045F8EE . B2 01 MOV DL,1 ; |
0045F8F0 . B8 6C124600 MOV EAX,mpgscrpt.0046126C ; |ASCII "You use old or invalid registration key.",CR,LF,"Please contact support."
0045F8F5 . E8 96A8FDFF CALL mpgscrpt.0043A190 ; \mpgscrpt.0043A190
Koji provjerava dal je kreiran mpgscrpt.key fajl, ako je i ako se podaci ne poklapaju izbacuje se msgbox "You use old or invalid registration key.", ... ako fajl nije kreiran poruka se zaobilazi.. tu cu sad stat jer ne zelim dalje jer mozda nesto i zaradjujes od tog programa.. a sve disabled kontrole je prelako enableovat!
Sve ovo u 3 i pol minute, samo zelim naglasit kako je sve lako!!
Samo sramota je da se tolko info moze dobit o samom fajlu... sa par klikova..fajl mora biti kompletno zasticen, od PE info fajlova, od debagera (ring0 i ring3) i svih ostalih stvari..
tolko od mene..
[ broker @ 02.08.2006. 16:12 ] @
Cestitam, upravo si i stigao donde dokle sam planirao da stignes kada sam pravio zastitu :)
Mozes da stignes i nesto dalje, ali da krekujes sve trebace ti ohoho vremena :)
Da li si procitao ono sto sam ja ovde pisao? Sve vreme juris vizuelne zackoljice koje uopste ne uticu na funkcionisanje programa.
Slobodno krekuj dalje. Taj program je napisan '91 i odavno su ga pregazili mnogo noviji i savremeniji kojima je on bio inspiracija. Da nisam izgubio sors za key generator, stavio bih ga tamo na sajt da bar ljudi mogu da ga otkljucaju ako moze da im koristi.
[ qwertzuiopasdfghjkl @ 02.08.2006. 22:14 ] @
Na knap sam s vremenom, kad ulovim vremena napisat cu keygenerator..
Vec.. ako te zanima malo vise o zastiti programa da ti pomognem javi vrijeme i server+kanal na ircu da porazgovaramo.. ne idem previse na forume..
[ Milan Milosevic @ 08.08.2006. 00:41 ] @
Pogresno je da koristis tajmer ,jer je lako da se pomocu debagera nade deo koda koji proverava vreme i prosto se Nopuje.
Sto se tice Upozorenja o pogresnoj registraciji. Odatle se prvo pocinje pa to mozes da iskoristis da proveris dali ti neko proverava kod ili mozes da koristis neke naprednije Api funkcije.Mozda je najbolja zastita da samu sifru koristis kao deo koda.
[ delalt @ 08.11.2006. 19:02 ] @
Citat: broker: ... Slobodno krekuj dalje. Taj program je napisan '91 i odavno su ga pregazili mnogo noviji i savremeniji kojima je on bio inspiracija. Da nisam izgubio sors za key generator, stavio bih ga tamo na sajt da bar ljudi mogu da ga otkljucaju ako moze da im koristi.
Tema nije baš najnovija, interesuje me da li je ovo krekovanje završeno ili još traje.
Ne mora dati kompletan način, ako je već neko uspio krekovati, samo da li je završeno.
Zaštita i nije nekakva zaštita ako se svima detaljno opiše.
[ juha5803 @ 10.11.2006. 13:59 ] @
A može i jedan pristup koji sam ja koristio nekada davno. Neka korisnik nezna da postoji zaštita (eventualno nešto jednostavnije za "laike" da se osiguram od početnika). Stvarna zaštita se svodila na to da je program bilo relativno lako prebaciti na drugu mašinu... ALI, tad počinje ozbiljan dio. Provjerom više parametara (procesor,disk, veličina datoteke itd....) utvrdim da je program odšetao i počinjem razvaljivati podatke polako i tiho. Npr. množenje određenog polja sa dijelom vremena (sekunda npr..), nasumično dodavanje nasumične cifre na neki podatak, mijenjenja nekih naziva, brisanje podatka čiji redni broj odgovara umnošku dana i minute u tom trenutku. I sve to ne previše često u toku dana. Poslije 15-20 dana nastupa haos i ne pada im na pamet da to više urade. Jer su u tom trenutku podaci tako zbrkani da ni ja sam to ne bih znao popraviti, a kopije koje su u tom periodu rađene ne vrijede ništa. Još ako se posreći da kopraju na isti medij pa se ne mogu vratiti na tačku kad je sve bilo u redu. Ako ništa kupiće program od drugog, ali će unos morati uraditi ponovo
[ sojic @ 19.12.2006. 16:43 ] @
Ja sam resio da registraciju izvedem na sledeci nacin:
Citam podatke Hard diska: Seriski broj, firmware, Manufacturer.
To kodiram sa base64encode i trazim da korisnik posalje taj string meni. Ja dekodiram taj string, i kodiram drugom algoritmu (ali trenutno problem je koji algoritam da iskoristim ili da napisem sam al, opet nemam ideju kako da iskodiram string).
Saljem novi kodirani string. Korisnik ubaci registarski kljuc (to zapamtim u nekom fajlu) i svaki put proveravam dali "encoded(hddsn)=poslani_kljuc".
Znaci, ako moze neko da mi napise (ili preporuci algoritam) za "encoded" funkciju.
[ vlaiv @ 20.12.2006. 14:19 ] @
@juha5803
Razumem potrebu za ovim pristupom ali 2 stvari:
1. Nije zastita za ShareWare verziju nego za redovnu ...
2. U slucaj ShareWare - program koji ne radi kako treba vise doprinosi kaljanju ugleda software-a nego sto pomaze ...
A sad on topic:
TimeTrial ShareWare software bi u idealnom slucaju trebalo da radi sledece:
Zabelezi vreme instalacije i onda se vise ne pokrece nakon N dana
Najveci problem oko ovog je to sto program meri vreme prema kompjuteru na kojem radi - a to vreme je promenljivo ;) za razliku od naseg ...
Prema tome, za jednostavan nacin vremenske zastite preporucujem:
1. Zapisati vreme instalacije
2. Zapisati svaki put vreme poslednjeg pokretanja
3. Proveravati validnost oba podatka (da vreme ne bude prekoraceno i da program prosli put nije pokrenut "sutra")
4. Moze se dodati i neka logika tipa (ako je pogram poslednjih par puta pokretan u razmaku od 5 minuta onda nesto nije uredu)
5. Kao i dodavanje vremena gasenja programa - to ide u paru sa tim da se obezbedi jedna instanca programa u jednom trenutku ...
Kako ce to biti zapisano na disku, enkripcija, obskurnost i ostalo nece doprineti da izverziran Cracker, kojem to znaci ne probije tu zastitu
Dalje, shareware se moze zastititi i na sledece nacine:
- broj startovanja (solo ili u kombinaciji sa time trial)
- preradom u demo verziju (gde bi se prilikom registracije download-ovao patch za full verziju)
Kako god da okrenes, uvek se moze razbiti zastita programa ako nekome taj program vredi truda ...
Znaci, posto je rec o shareware programu, nivo zastite koji je u ovom slucaju optimalan je sledeci:
Napraviti zastitu za koju ce ljudi zakljuciti da je jednostavnije odvojiti XX.XX$/E nego da se muce ... :) (a to znaci i korigovati cenu ... :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|