"DLL Show v4.4 "
Mr_Stop
Program Url: http://www.execpc.com/~sbd
Program Tipi: Show dll dependicies
       Araçlar:
 SoftICE, Ultraedit, W32Dasm,Tasm v5.0
Basit ( )  Orta (x )  Zor ( )  Pro ( ) 


Başlangıç

Bu program windowsta o an için hangi dlllerin kullanıldığını gösteren bir program.Programın yazarının yazdığı nütün programlar aynı koruma şemasına sahip.Bir tanesini kırarsanız diğerlerini de kırarsınız.

Yazı

Artık SoftICE nasıl kurulur felan gibi basit şeyleri anlatmıyorum.Direkt crack işlemine geçiyorum.Serial ekranına gelin ve softice geçerek bpx hmemcpy ile breakpoint koyun.SoftICE 'a birden geri döneceksiniz.Breakpointimizi bd ile kapatıyoruz.Biz programın koduna ulaşmak istediğimizden birkaç defa F12 tuşuna basıyoruz.

* Reference To: KERNEL32.lstrcpyA, Ord:0302h
                                  |
:0040D5D3 8B1D28F14100            mov ebx, dword ptr [0041F128]

* Possible StringData Ref from Data Obj ->"Gregory Braun"
                                  |
:0040D5D9 68D42E4200              push 00422ED4 ;Gereksiz kod
:0040D5DE 56                      push esi		;Kullanıcı ismi Gregory Braun
:0040D5DF FFD3                    call ebx

* Possible StringData Ref from Data Obj ->"Software Design"
                                  |
:0040D5E1 68C42E4200              push 00422EC4  ;company Software by Design
:0040D5E6 57                      push edi
:0040D5E7 FFD3                    call ebx
:0040D5E9 EB07                    jmp 0040D5F2

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D5D1(C)
|
:0040D5EB 3D3CCE5F0D              cmp eax, 0D5FCE3C ;gregory için seriali görmek için
:0040D5F0 750C                    jne 0040D5FE      ;D D5FCE3c yazın 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D5E9(U)
|
:0040D5F2 57                      push edi
:0040D5F3 56                      push esi
:0040D5F4 E8A77B0000              call 004151A0    ;Keygen algoritması
:0040D5F9 83C408                  add esp, 00000008
:0040D5FC 8BD8                    mov ebx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D5F0(C)
|
:0040D5FE 57                      push edi
:0040D5FF 56                      push esi
:0040D600 E89B7B0000              call 004151A0      ;Keygen algoritması
:0040D605 83C408                  add esp, 00000008
:0040D608 3BD8                    cmp ebx, eax       ;Serial kontrolü
:0040D60A 5F                      pop edi
:0040D60B 741D                    je 0040D62A        ;Eşitse iyi çocuk :)
:0040D60D 68CFEA0000              push 0000EACF


Buraya kadar iyi.Eğer seriali öğrenmek istiyorsanız 0040D608 satırında eax ve ebx in değerlerine bakın.Serialin nasıl hesaplandığını öğrenmek istiyorsanız devam ediyoruz.Ben 0040D5F4 satırına geldiğimde F8 ile call ın içine girdim.

:004151A0 8B442404                mov eax, dword ptr [esp+04] ;İsimi eax a yolla
:004151A4 56                      push esi
:004151A5 8B3594D24200            mov esi, dword ptr [0042D294]; esi= DB95DB95
:004151AB 50                      push eax
:004151AC 81CE78030000            or esi, 00000378            ;esi yi 378 ile or la
:004151B2 E849050000              call 00415700               ;Döngü
:004151B7 8B4C2410                mov ecx, dword ptr [esp+10] ;Company i ecx e yolla
:004151BB 03F0                    add esi, eax
:004151BD 51                      push ecx
:004151BE E83D050000              call 00415700 ;Döngü
:004151C3 83C408                  add esp, 00000008
:004151C6 03C6                    add eax, esi
:004151C8 5E                      pop esi
:004151C9 C3                      ret

Bir adım daha kaldı şu call da ne var ona da bakalım.F8 ile içeriye giriyoruz.

:00415700 51                      push ecx
:00415701 53                      push ebx
:00415702 8B5C240C                mov ebx, dword ptr [esp+0C]
:00415706 56                      push esi
:00415707 33F6                    xor esi, esi
:00415709 53                      push ebx
:0041570A 8974240C                mov dword ptr [esp+0C], esi

* Reference To: KERNEL32.lstrlenA, Ord:0308h
                                  |
:0041570E FF15B4F04100            Call dword ptr [0041F0B4]
:00415714 85DB                    test ebx, ebx
:00415716 744F                    je 00415767
:00415718 85C0                    test eax, eax
:0041571A 744B                    je 00415767
:0041571C 33D2                    xor edx, edx
:0041571E 85C0                    test eax, eax
:00415720 7E45                    jle 00415767
:00415722 55                      push ebp
:00415723 57                      push edi

* Possible StringData Ref from Data Obj ->"|b!pz*ls;rn|lf$vi^Axpe)rx5aic&9/2m5lsi4@0dmZw9"
                                        ->"4cmqpfhw" ;tablo1
                                  |
:00415724 BEA44D4200              mov esi, 00424DA4; yukardaki yazıyı esiye gönder
:00415729 BF01000000              mov edi, 00000001
:0041572E 2BF3                    sub esi, ebx
:00415730 8BCB                    mov ecx, ebx
:00415732 2BFB                    sub edi, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041575D(C)
|
:00415734 0FBE1C0E                movsx ebx, byte ptr [esi+ecx];ilk stringden karakter al
:00415738 0FBEAC106C4D4200        movsx ebp, byte ptr [eax+edx+00424D6C];başka bir string
;d 00424D6C yazın  #serB&nz|mfM1/5(!sd$Mq.{s]+sFjtKpzSdtzoXqmb^Al@dv:s?x/;tablo2 göreceksiniz.
:00415740 0FAFDD                  imul ebx, ebp ; çarp
:00415743 8D2C0F                  lea ebp, dword ptr [edi+ecx]; bir karakter daha al
:00415746 0FAFDD                  imul ebx, ebp		     ;çarp
:00415749 0FBE29                  movsx ebp, byte ptr [ecx]
:0041574C 0FAFDD                  imul ebx, ebp     ;çarp
:0041574F 8B6C2410                mov ebp, dword ptr [esp+10]
:00415753 03EB                    add ebp, ebx
:00415755 42                      inc edx
:00415756 41                      inc ecx
:00415757 3BD0                    cmp edx, eax ;hepsini çarptık mı ?
:00415759 896C2410                mov dword ptr [esp+10], ebp
:0041575D 7CD5                    jl 00415734 ;bu işlemi bütün karakterler için yap
:0041575F 8BC5                    mov eax, ebp
:00415761 5F                      pop edi
:00415762 5D                      pop ebp
:00415763 5E                      pop esi
:00415764 5B                      pop ebx
:00415765 59                      pop ecx
:00415766 C3                      ret

Evet.Şimdi ben elimden geldiği kadarı ile size serial nasıl hesaplanıyor onu anlatmaya çalışıyim.İki tane string var bunları tablo1 ve tablo2 diye adlandıralım.İsim ve şirket kısmı iki tane register a atanıyor.Sonra isimden bir karakter alınıyor ve isimin uzunluğun göre tablo2 den bir karakter alınıyor.Bu alına karakter ismin ilk harfi ile çarpılıyor.Tablo1 den ilk karakter alınıyor ve bulunan bu değerle çarpılıyor.Elde edilen bu çarpım tablo2 deki kakakterin pozisyonu ile çarpılıyo.İlk başta bu 1 olduğundan önemli değil fakat ismin 2. 3. .. harflerinde bu çarpım çok etkili.Bütün bu çarpımlardan elde edilen sonuç bir yere yazılıyor.İsimi için yaptığımız bu işlemi şirket kısmı içinde yapıyoruz.Sonra bu iki değeri topluyoruz.Elde ettiğimiz bu sonucu desimale çevirdiğimiz zamn serial karşımızda.Daha nalşılabilir olması için örrnekle açıklıyayım.Mister Stop için bir bakalım.İsim space ile beraber 11 harf.O zaman biz M harfini tablo2 deki 11. karakter 'f' ile çarpıyoruz.Bulduğumuz bu değeri tablo1 deki ilk karakter ile çarpıyoruz.Son olarak da bu değeri tablo1 deki karakterin yeri yani 1 ile çarpıyoruz.i harfi için tablo2 den 12. karakteri alıyoruz.....Çok karmaşık gibi gözükebilir ama üstünde biraz düşünürseniz olayı kavrıyacağınızdan eminim.Ben kavradım ve keygeni döşedim.Bu keygeni %100 assembly de windows apileri ile yazdım.Sadece copy paste yaparak asm de keygen kodluyabilirsiniz.Bunu da başka bir yazıya bırakıyorum.Keygeni download etmek için buraya tıklayın.

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.