"Summit Pro 2000 "
Mr_Stop 
Program Url: http://www.miesoftware.com
Program Tipi: Email Kontrol Programı
       Kullanılan Araçlar:
 GetAccess 98, Vb *
Basit ( )  Orta (x )  Zor ( )  Pro ( ) 


Başlangıç

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.

Yazı

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

 

Son Notlar

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.