Citat:
sve mi je jasno samo sam pre ovoga nekako shvaatao da crack-ti neki program i nije tako lak posao za iskusnog crack-ra.
Pa dobro si shvatio, i nije lako krekovati program, čak ni za iskusnog krekera. Iskustvo mu olakšava utoliko što će lakše provaliti kakva je zaštita korišćena i šta otprilike treba da gleda, ali je krekovanje poprilično pipav posao. Doduše, ovako kako sam ja opisao deluje kao laganica, ali to je zato što sam se trudio da skratim koliko god je moguće. Recimo, ovo što sam rekao za traženje i uklanjanje If... Then... Else... zvuči poprilično lako, ali nije... Treba prvo naći pravi If... Then... Else, jer gotovo svaki program, pogotovo ako je malo kompleksniji obično ima nekoliko takvih grananja, a ako ukloni pogrešan, pokvariće funkcionalnost aplikacije i onda ništa nije uradio. A i samo traženje tih grananja u exe fajlu predstavlja izazov, jer ne postoji aplikacija koja će ti na tacni dati source code iz exe fajla, nego se koristi gomila alata kao što su hex editori, debuggeri i slično da bi se pratio rad programa, a onda se na osnovu iskustva naslućuje šta je šta i šta bi trebalo izmeniti/ukloniti. Prema tome, ako tvoja aplikacija nije dovoljno interesantna za neke šire narodne mase, i takva zaštita će biti dovoljna, jer retko ko će da se upušta u taj poduhvat. Ono što sam rekao o pravljenju komplikovanije zaštite, odnosilo se na to ako hoćeš da komercijalizuješ zaštitu, pa da maksimalno otežaš posao potencijalnim krekerima.
Citat:
sve u svemu da bude jasnije, firma sa osrednjim kapitalom, nestrucnim kadrom, sve po sistemu "sto kompjuterski kad moze i rucno" a prosek po godinama zaposlenih od 40 pa navise...
Pa što ne kažeš tako. U tom slučaju, biće dovoljno da ako primetiš da ti je neko uzeo progra, jednostavno izvučeš kabl od miša, pa da nedelju dana traže kvar :)
Šalu na stranu, u takvoj situaciji se ja ne bih mnogo zamlaćivao sa zaštitom... jednostavno hardkodiraš očitavanje hard diska i ako nije tvoj hard disk u pitanju, lepo ne dozvoliš startovanje aplikacije... ne trebaju ti nikakvi eksterni fajlovi i slično. Kod za očitavanje serijskog broja hard diska možeš naći i ovde na forumu, a i po netu. Evo recim imaš ovde nešto
http://www.elitesecurity.org/t52038
http://www.elitesecurity.org/t257173
ili google u šake pa kucaj "read hd serial number vb6" ili "get hd serial number vb6" ili kombinuj i dobićeš gomilu primera
Citat:
Hvala jos jednom a za ovaj kod sa If i Else gde sam se spetljao prilikom poziva nekog txt i provere da li je tu...!?Ako imas vremena ili neko drugi dobro bi mi dosla pomoc!
Pa ništa, imaš funkciju Dir sa kojom možeš proveriti da li postoji neki fajl. Recimo staviš ovako nešto u Form_Load
Code:
Dim strText As String
Dim fn As Integer
If Dir("C:\registracija.txt") = "" Then 'fajl ne postoji
MsgBox "Program nije registrovan", vbInformation, App.Title
Unload Me
Set Form1 = Nothing
Exit Sub
Else 'postoji fajl
fn = FreeFile
Open "C:\registracija.txt" For Input As #fn
Line Input #fn, strText
Close #fn
If strText <> "ABCD-EFGH-IJKL-MNOP" Then 'recimo da je ovo ispravan kod koji treba da se nalazi u text fajlu
Msgbox "Pogresan registracioni fajl", vbInformation, App.Title
Unload Me
Set Form1 = Nothing
Exit Sub
Else
'program je regiostrovan, uradi nesto drugo, recimo otvori novu formu ili jednostavno nastavi sa radom
Exit Sub
End If
End If
Naravno, kao što rekoh, to sad treba malo zakomplikovati, jer ako koristiš isti kod, neko treba samo da prekopira fajl na drugi komp i program će raditi. zato lepo uzmeš, pa dodaš serijski HD-a u fajl, ili na osnovu HD-a i registracionog ključa napraviš neku vrednost, recimo jednostavan način bi bio
Code:
Dim I As Long
Dim strHDSN As String
Dim lngTransposeKey As Long
Dim strResultKey As String
Dim fn As Integer
strHDSN = GetHDSerialNumber
lngTransposeKey = 1 + 2 + 3 + 4 + 5 + 6
For I = 1 To Len(strHDSN)
strResultKey = strResultKey & Chr$(Asc(Val(Mid(strHDSN, I, 1))) + lngTransposeKey)
Next I
fn = FreeFile
Open App.Path & "\licence.txt" For Output As #fn
Print #fn, strResultKey
Close #fn
I onda strResultKey upišeš u fajl, to je kao neki registracioni ključ baziran na serijskom HD-a. I onda koristiš isto ovo kada vršiš proveru u fajlu i ako se strResultKey ne slaže sa onim što je upisano u fajlu (a ako je fajl prekopiran i neće se slagati jer nije isti serijski broj HD-a), program se neće startovati i to je to. Evo kako bi izgledao ceo kod.
Dakle, registrator (program koji ćeš kreirati licencni ključ bi izgledao ovako)
Code:
Dim I As Long
Dim strHDSN As String
Dim lngTransposeKey As Long
Dim strResultKey As String
Dim fn As Integer
strHDSN = GetHDSerialNumber
lngTransposeKey = 1 + 2 + 3 + 4 + 5 + 6
For I = 1 To Len(strHDSN)
strResultKey = strResultKey & Chr$(Asc(Val(Mid(strHDSN, I, 1))) + lngTransposeKey)
Next I
fn = FreeFile
Open App.Path & "\licence.txt" For Output As #fn
Print #fn, strResultKey
Close #fn
ovo smestiš u Command Button click event recimo, nazoveš dugme "Kreiraj licencni fajl za ovaj računar" i kompajliraš kao exe. kada pokreneš aplikaciju, trebalo bi da ti kreira license.txt fajl u istom folderu gde ti je exe fajl koji si pokrenuo. Taj license.txt fajl ti postaje licencni fajl za taj računar. A ako hoćeš da zakomplikuješ neiskusnim korisnicima, možeš jednostavno da koristiš neku drugu ekstenziju umesto txt, recimo lic i dobar deo njih neće umeti da je otvori u Notepadu, mada i da otvori, videće samo nekakav vrljav tekst koji neće znati kako je dobiven, a na drugom računaru osim na onog na kome si kreirao fajl neće raditi. Onda u tvojoj aplikaciji gde proveravaš registraciju uradiš ovo
Code:
Dim strText As String
Dim fn As Integer
Dim I As Long
Dim strHDSN As String
Dim lngTransposeKey As Long
Dim strResultKey As String
If Dir("C:\registracija.txt") = "" Then 'fajl ne postoji
MsgBox "Program nije registrovan", vbInformation, App.Title
Unload Me
Set Form1 = Nothing
Exit Sub
Else 'postoji fajl
fn = FreeFile
strHDSN = GetHDSerialNumber
lngTransposeKey = 1 + 2 + 3 + 4 + 5 + 6
For I = 1 To Len(strHDSN)
strResultKey = strResultKey & Chr$(Asc(Val(Mid(strHDSN, I, 1))) + lngTransposeKey)
Next I
Open "C:\registracija.txt" For Input As #fn
Line Input #fn, strText
Close #fn
If strText <> strResultKey Then
Msgbox "Pogresan registracioni fajl", vbInformation, App.Title
Unload Me
Set Form1 = Nothing
Exit Sub
Else
'program je regiostrovan, uradi nesto drugo, recimo otvori novu formu ili jednostavno nastavi sa radom
Exit Sub
End If
End If
I to je otprilike to. Naravno, GetHDSerialNumber funkciju ćeš morati sam da napraviš (koristi primere koje sam ti dao). Samo imaj u vidu da ovo nije neka ne znam ni ja kakva zaštita, ali će sprečiti prosečne korisnike da lako prekopiraju program i koriste ga. A ti ako hoćeš nešto bolje, možeš malo da razradiš ovo, recimo da dodatno enkriptuješ fajl, da malo zakomplikuješ formulu kojom se dobija registracioni ključ, da koristiš registry bazu umesto text fajla sa nekim kriptičnim nazivom ključa, da vršiš proveru na više mesta u kodu, da koristiš ključ dinamičke dužine... itd. opcija je bezbroj.
E da, kod sam pisao iz glave i nisam siguran da baš sve radi kako treba, tako da nije isključeno da će zahtevati neke sitnije izmene.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti