|
|
|
|
|
|
|
Kullanılan Araçlar:
|
|
|
|
|
Bazen bir program karşınıza çıkar.Programı kırmak için bir yol bulamazsınız.Hiç bir decomplier'in işe yarmadağı durumlar olabilir.Bu gibi durumlarda iyi bir araştırma yapmak ve ne kadar döküman varsa toplamak faydalı olur.Eğer döküman bulamazsanız siz yazın.
|
|
Summit pro database
programı olduğu için adamlar Access ile programlamışlar.Program summtipro.mdb
dosyasından oluşuyor.Bütün koruma bu dosyada.Bazen karşınıza bir problem çıkar,
etrafta bunun çözümlerini ararsınız, herekese sorarsınz ama nafile.İşte bu programda
aynen öyle bir şey çünkü bir exe deil dissamble edip ne oluyor anlıyamayayız.Breakpoint
koyup softice ile dolaşmak seneler alabilir.Şimdi bu program access ile yazıldıysa
biz de o zaman access 97 ile bakarız ne olup bitiyo anlarız.Hemen Office 97'in
içinden Acces 97 i yüklüyoruz.Programı açıp bizim summitpro.mdb dosyasını yüklüyoruz.Access
databaselerde hesaplama modüllerle yapılır.Serial hesaplama rutini de muhtemelen
bu modüllerden birinde.Modülleri teker teker açmaya çalışıyoruz.İki tane modülde
Access bize bu modülleri açmaya yetkimiz olduğunu söylüyor.O zaman olay kesinlikle
bu iki modülde.Şimdi bizim derdimiz ne yapsak da şu modülleri açsak.Denemelere
başladım.Bir tane normal database hazırladım içine sadece bir table ve module
var.Bunların bir tanesini password ile korudum digerinin de erişim haklarını
(access rights) sınırlandırdım.Sonra orjinal database ile bu diğer database
i karşılaştırdım.Erişim hakları sınırlandırılmış database ile aralarındaki farklar
çok fazla idi ve bir formül bulamadım.Konumuzla pek alakası yok ama Access databaselerin
passwordlarının nasıl kırılıcağını keşfettim.(Bilgiye bayılıyorum !! ).Orjinal
database ile password protected database in 0x42 hex adresinden itibaren 13
byte lik bir farklılıkları var.Ben başka bir database daha yaptım ve bu sefer
paswordun son karakterini 1 basamak yükselttim.Yeniden karşılaştırdım.Sadece
de bir karakterin dosyada değişmiş olduğunu gördüm.Password şemaları genelde
Xor denilen işlemi yaparlar.Şimdi xor ne demek kısaca onu anlatayım.Biliyosunuz
bütün programlar 2 lik düzendeki kodlardan oluşur.Mesela M harfi binary olarak
01001101 değerine eşittir.Xor şöyle bir şeydir
0 xor 0 = 0
0 xor 1 = 1 1 xor 0 = 1
0 xor 1 = 1 1 xor 1 = 0
Xor un çok iyi birde özelliği vardır.Xor u aynı anahtar ve kilit gibi düşünün.Eğer siz sonucu biliyorsanız ve xor edilen sayıyıda biliyorsanız diğer sayıyı bulabilirsiniz.Yani eğer A xor B = C ise A xor C = B. Yeniden access database lere dönelim.Ben iki değişik passwordlu dosyada da benim paswordun harfini şifrelenmiş olan harfle xor ettim.Sonra harfi değiştirdim bir daha xor ettim.Sonuç aynıydı.Bu şekilde 13 karakter için xor değerlerini buldum.0x42 hex değerinden itibaren buduğunuz değerleri sırasıyla şu değerlerle xor edin.0x86, 0xFB, 0xEC, 0x37,0x5D, 0x44, 0x9C, 0xFA, 0xC6, 0x5E, 0x28, 0xE6, 0x13.Eğer password 14 karakter ise zaten 14. karakter onemli degil.Eğer passwordu bulmakta kasamam diyorsanız, 0x42 hex degerindeki degeri 0x86 olarak değiştirin.Bunu yapacak bir programı yazmak çok basit.Böyle bir program yazıp para bile kazanabilirsiniz.Bu ek bilgiden sonra yeniden programa dönüyoruz.Ben access passwordlarının nasıl bulunduğunun önceden keşfedilmiş olduğunu öğrendim.Belki baştan arasaydım hiç uğraşmıyacaktım.Bu yüzden tekerleği yeniden keşfetmek yerine bu konu hakkında neler yapılmış aramaya başladım.Uzun uğraşlar sonucunda Get Access 98 diye bir program buldum.Bu program access databaselerdeki erişim haklarını kaldırdırğını idda ediyordu.Programı download ettik.Program shareware di tabi bi de üstüne üstlük visual basic ile yazılmış.Seriali hemen buldum.Siz kasmayın diye alın size serial Name=Trscene Serial:AC98-26316-AB0431B3 (bundan başka bir serial de mümkün) Get Access programın açıyoruz.Bizim summitpro nun database i yüklüyoruz ve remove security permission also diyoruz.Sonra bekliyoruz.Bu bekleme gerçekten uzun sürüyo.Programın takıldığını sanmayın.En sonunda bitiyo.Şimdi Office 97 ile gelen access ile açalım bu database i.Sonra Mieutilies modulune gelelim ve design diyelim.Evet şimdi paşa paşa açıldı.Programın kalbi burası arkadaşlar.Eğer şimdi o modülü açtıysanız, söyle bir şey göreceksiniz.Şimdi karşımızda programın kaynak kodu olduğundan serial yapmak çocuk oyuncağı.
Set rst = dbs.OpenRecordset("Software
Details") ;Software details tablosunu aç
rst.MoveFirst
ProdCode = rst("ProductCode")
;prodcode ve diğer tanımlamalar.
ExtLName = rst("LicenceeName")
LicName = Left(ExtLName,
Len(ExtLName) - 1) & ProdCode ;tabloda
prodcode SP200 yazıyor.
LicNum = rst("LicenceNumber")
If IsNull(LicName)
Or LicName = "" Or IsNull(LicNum) Or LicNum = 0 Then
LicCheck = 0 ; Eğer tabolda bir şey yazmıyosa
license kontrolu 0
GoTo LCExitPoint
End If
L1Len = Len(LicName)
;Hesaplama rutini
DC = 0
For J = 1 To L1Len
DC = DC + (Asc(Mid(LicName, J, 1)) * (L1Len + 1 - J + 3))
Next J
DC = DC * Int((L1Len
+ 14.3) / 2)
If Int(DC) + 71077345
= Int(UnGNum(LicNum)) Then LicCheck = 1 Else LicCheck = 0
LCExitPoint:
Yukarıda bir de ungnum
fonksiyonu var adam onunla da bir şeyler yapıyo bakalım ungnum fonksiyonu nasıl
bir şeymiş.
Public Function GNum(SN)
On Error Resume Next
SNStr = CStr(SN)
N1Str = Left(SNStr,
2)
N2Str = Left(SNStr,
1)
N1 = CInt(N1Str) +
17
N2 = CInt(N2Str) +
6
N1 = N1 * N2
GNum = SN + N1
End Function
Public Function UnGNum(SN)
On Error Resume Next
SNStr = CStr(SN)
N1Str = Left(SNStr,
2)
N2Str = Left(SNStr,
1)
N1 = CInt(N1Str) +
17
N2 = CInt(N2Str) +
6
N1 = N1 * N2
UnGNum = SN - N1
End Function
Hay Allahım ne kadar
basit bir şey.Şimdi bizim peki bu kadar işlemi yapmamıza gerek var mı ?.Access
kullananlar bilirler.Access de debug menu diye bir olay var.Biz nasıl softice
da break point koyup programı inceliyorsak aynısı accessde de var.Access de
software details tablosunu açalım ve License Name kısmına Turkish Scene ve serial
kısmına da sallama bir şey yazın.Menülerden step into tuşuya adım adım programda
gezinin.En son If Int(DC) + 71077345 ... satırına geldiğinizde durun ve Int(dc)
değerini not edin.Şimdi biz oyle bir serial bulacaz ki ungnum fonksiyonunda
bu bize int(dc) +71077345 değerini verecek.Eğer bizden adam ungnum fonksiyonundaki
değeri istiyorsa bizde bu toplamı gnum fonksiyonuna yollarız elde ettiğimiz
değer bizim serialdır.Toplamı bulduktan sonra debug menuyu acin ve sunu yazın
Gnum(buldugunuz deger) entere basınca 71410713 sayısını göreceksiniz.Bu bizim
serial numaramız software detailsi açın name kısmına Turkish Scene serial kısmına
71410713 yazın programı tekrar açın.Heh nag gitti.About kısmına bakın.Program
kayıtlandı.Programın iiçinden doğru seriali yazınca çalışmıyor niye bilmiyorum.Bu
şekilde seriali dağıtmamız zor olur.Mieutilities modulunu incelemeye devam edelim.
'are the licence
details already stored somewhere on the computer ;adam
bizim için yazmış.eheuehe
On Error GoTo CantReadF1
SystemDirectory = GetSysDir() ;System
klasörünü bul
FileNumber = FreeFile
Open SystemDirectory & "\config.sli" For Input As #FileNumber
Input #FileNumber, WLicName, LicNum
Close #FileNumber
SetAttr SystemDirectory & "\config.sli", vbHidden + vbSystem ;
dosya system ve hidden olacak.
GoTo FoundStoredDetails
CantReadF1:
Resume NothingValidStored
FoundStoredDetails:
On Error GoTo LCErrorBit
If IsNull(LicName) Or LicName = "" Or IsNull(LicNum) Or LicNum = 0 Then
LicCheck = 0
GoTo NothingValidStored
End If
LicNum = CLng(LicNum)
LicName = Left(WLicName, Len(WLicName) - 1) & "SP2000"
L1Len = Len(LicName)
DC = 0
For J = 1 To L1Len
DC = DC + (Asc(Mid(LicName, J, 1)) * (L1Len + 1 - J + 3))
Next J
DC = DC * Int((L1Len + 14.3) / 2)
If Int(DC) + 71077345 = Int(UnGNum(LicNum)) Then LicCheck = 1 Else LicCheck
= 0
If LicCheck = 0 Then GoTo NothingValidStored
If LicCheck = 1 Then
rst.Edit
rst("LicenceeName") = WLicName
rst("LicenceNumber") = LicNum
rst.Update
rst.Close
Exit Function
Program System klasöründe
config.sli diye bir dosyaya bakıyor.Bu dosyanın formatını ilk başta anlamamıştım.Dosya
formatını söyleyen Challanger a teşekkür ediyorum.Dosyamız
system ve hidden özelliği taşıyacak.Dosya formatı da şöyle olacak."İsim","Serial".Ultra
editle "Turkish Scene","71410713" yazıp config.sli olarak system klasörüne kaydedin.Program
yine registerli olacaktır.Buraya kadar iyi.Millet genelde kendi ismine serial
ister.Hadi hep beraber bir keygen yazalım.Access biliyosunuz bir Micro$oft programı.Bu
yüzden dil olarak visual basic kullanıyor.Bizde adamı kendi silahıyla vuralım.Bir
tane form hazırlayın, tepede isim yazılacak, tuşa basılınca işlemlerden sonra
sonuç alttaki bir text box a yazılacak.Biz programın kaynak koduna sahib olduğumuzdan
keygen yazmak çok kolay.Eğer elinizde visual basic varsa ben basit bir keygen
kodladım, bakabilrsiniz.Bu keygen benim ilk programlama deneyimim.İlkinde başardım.Eheuhe
sağol Bill amca.Keygen kaynak kodu için buraya tıklayın.Bende
ne arar visual basic diyenlere compile edilmiş keygen burada.Yazımı
bir şarkıyla bitiriyorum.
Hey
cousin Billy hey cousin Billy
Is there anything that
You can do for me
Vallla yok baba, sen olmasan biz ne yaparız.
Evet bugün neler öğrendik
1.Micro$oft
herkesin saf olduğunu sanmakatadır.Mesela sizin için çok önemli olan bir acces
database i 14 karakterle şifreleseniz bile bir kac saniyede bu şifre kırılabilir.M$
programlarını kullanmadan önce bir kez daha düşünün
2.Bir
konuya başlamadan önce olabildiğince döküman bulmaya çalışın bulamıyorsanız
kendiniz yazın.
3.Yeni
bir şarkı öğrendik
|
|
Bu yazıda yazım yanlışları hatta bilgi hatası olabilir.Eğer bir yanlış bulursanız bana email atın düzeltmeye çalışırım.Bir programı eğer gerçekten kullanıyorsanız, programı satın almayı düşünün.Micro$oft programlarını - bırakın satın almayı - kullanmayı bile düşünmeyin.