ZirveYazılım Müşavir Paketi V.3.03 Sürüm 8

kresuz
Program Url:www.zirveyazilim.net
Program Tipi: Müşavir Paketi
     Araçlar:
OllyDbg version 1.10
Basit (x )  Orta ( )  Zor ( )  Pro ( )


Başlangıç

ZirveYazılım Müşavir Paketi V.3.03 Sürüm 8 programının serialini bulacağız.Patch yapacağız.(Je,jne,nop,jmp kullanmadan)Ayrıca programı keygen haline dönüştüreceğiz. Ollydbg v1.10 cekin.İşe başlayalım.
Yazı

A==>Seriali bulmak;

Ollydbg'u açın F3 ile Muhasebe.exe dosyasını yükleyin F9 ile yüklenmiş olan programı çalıştırın.ctrl+alt+F11 tusu ile lisans bölümüne gelin.Lisans kodu bölümüne sallama bir kod yazın tamam tuşuna basmadan ollydbg'a geçin.Şimdi şu sıraları takip edin yukarıda olan Plugins tuşu ==>ApiBreak==>ApiBreak==>Point H ve bu bölümü işaretleyin.Ok. tuşuna basın. Şimdi tekrar programa dönün ve tamam tuşuna basın.Breakpoint çalıştı.Ollydbg ye döndük.F2 tuşu ile breakpointi kaldırın.Bir sefer ALT+F9 basın User32.dll den kurtulup,olly de calısan proğram kodlarına dönün

0045139B   |.  8943 0C              MOV     DWORD PTR DS:[EBX+C], EAX            ===>burdayız. F8 ile ilerliyoruz.
0045139E   |>  8B03                 MOV     EAX, DWORD PTR DS:[EBX]
004513A0   |.  83F8 0C              CMP     EAX, 0C
004513A3   |.  75 1B                JNZ     SHORT 004513C0
004513A5   |.  8B53 08              MOV     EDX, DWORD PTR DS:[EBX+8]
004513A8   |.  52                   PUSH    EDX                                              ; /Arg1 = 00150608

00768C2C    .  E8 A39EFFFF          CALL    00762AD4    ===================>keygen                       
00768C31    .  8B45 C4              MOV     EAX, DWORD PTR SS:[EBP-3C]  ===>doğru seriali  [EBP-3C] den eax'a al 
00768C34    .  50                   PUSH    EAX                         ===>doğru serial eax'da
00768C35    .  8D55 BC              LEA     EDX, DWORD PTR SS:[EBP-44]
00768C38    .  8B45 FC              MOV     EAX, DWORD PTR SS:[EBP-4]
00768C3B    .  8B80 44030000        MOV     EAX, DWORD PTR DS:[EAX+344]                     
00768C41    .  E8 1A49CEFF          CALL    0044D560
00768C46    .  8B55 BC              MOV     EDX, DWORD PTR SS:[EBP-44]  ===>girdiğimiz sallama serial
00768C49    .  58                   POP     EAX                         ===>doğru serial eax'da       
00768C4A    .  E8 3DB8C9FF          CALL    0040448C                    ===>karşılaştır. 
00768C4F       75 1D                JNZ     SHORT 00768C6E              ===>yanlış ise hata mesajına git.(nop larsak kayıtlanıyor)
00768C51    .  8B45 FC              MOV     EAX, DWORD PTR SS:[EBP-4]
00768C54    .  8B80 F4020000        MOV     EAX, DWORD PTR DS:[EAX+2F4]
00768C5A    .  E8 E14DCEFF          CALL    0044DA40
00768C5F    .  E8 B493FFFF          CALL    00762018
00768C64    .  8B45 FC              MOV     EAX, DWORD PTR SS:[EBP-4]
00768C67    .  E8 BCF9FFFF          CALL    00768628
00768C6C    .  EB 22                JMP     SHORT 00768C90
00768C6E       B8 EC8D7600          MOV     EAX, 00768DEC            ===>Hata Mesajı   ;  ASCII "Girdiğiniz kod yanlış. Lütfen program satıcınızla görüşün."
00768C73    .  E8 84A4CFFF          CALL    004630FC
00768C78    .  EB 16                JMP     SHORT 00768C90
00768C7A    >  B8 308E7600          MOV     EAX, 00768E30                              ;  ASCII "Lütfen Program Şifre Disketini Takarak Program Şifrenizi Alınız."
00768C7F    .  E8 78A4CFFF          CALL    004630FC
00768C84    .  EB 0A                JMP     SHORT 00768C90
00768C86    >  B8 7C8E7600          MOV     EAX, 00768E7C                              ;  ASCII "Bu Programı Terminalden Kullanmaya Yetkiniz Yok."
00768C8B    .  E8 6CA4CFFF          CALL    004630FC

Evet doğru serial  00768C34 satırında eax da bulunuyor. 
Ayrıca 00768C38  satırında iken girdiğimiz sallama ve dogru seriali olldbg de sağ alt köşede görebilirsiniz.

B==>Patch Yapmak;


00768C31    .  8B45 C4              MOV     EAX, DWORD PTR SS:[EBP-3C]  ===>doğru serial [EBP-3C] de idi
00768C46    .  8B55 BC              MOV     EDX, DWORD PTR SS:[EBP-44]  ===>girdiğimiz sallama serial de [EBP-44]de
00768C4A    .  E8 3DB8C9FF          CALL    0040448C                    ===>bu callde dogru ve girdigimiz serialleri karsılastırıyordu.

F8 ile 00768C46'nın üzerine kadar gelin.Mouse üzerinde iken sağ tuş Assemble -space yapıp önümüze gelen ekrandaki 
MOV     EDX, DWORD PTR SS:[EBP-44] degerini    MOV     EDX,DWORD PTR SS:[EBP-3C] yapın.Assemble tuşunu basıp kapatın.

   
Yani eax da doğru serial,edx de girdiğimiz sallama serial vardı. Biz şimdi edx e doğru serilali verip karsılastırdıgı call'e öyle gönderelim. 00768C46 8B55 C4 MOV EDX, DWORD PTR SS:[EBP-3C] ===>Edx'de girdiğimiz sallama serial yerine doğru serial var 00768C49 . 58 POP EAX ===>doğru serial eax'da ; 01E53F4C 00768C4A . E8 3DB8C9FF CALL 0040448C ===>Artık iki doğru seriali karsılaştırıyor. 00768C4F 75 1D JNZ SHORT 00768C6E ===>Sonuc dogru oldugu icin hata mesajına gitmeyecek. Je,jne,nop,jmp kullanmadan patch yapmış olduk.

C==>Programı keygen haline çevirmek;

00768C31 . 8B45 C4 MOV EAX, DWORD PTR SS:[EBP-3C] ===>doğru serial [EBP-3C] de idi 00768C6E B8 EC8D7600 MOV EAX, 00768DEC ===>Hata Mesajını al ; ASCII "Girdiğiniz kod yanlış. Lütfen program satıcınızla görüşün." 00768C73 . E8 84A4CFFF CALL 004630FC ===>Hata Mesajını göster.

   

Patch yaptığımızda:

00768C6E       8B45 C4              MOV     EAX, DWORD PTR SS:[EBP-3C] ===>Gercek seriali al
00768C71       90                   NOP
00768C72       90                   NOP
00768C73    .  E8 84A4CFFF          CALL    004630FC                   ===>Gercek seriali göster.

Şimdi programı çalıştıralım.


Gördüğünüz gibi proğram hata mesajı yerine gercek seriali gösterdi.Peki bu değişikliği Hiew veya Ultraedit-32 kullanmadan 
kalıcı hale getirebilirmiyiz ?.Olly bu konuda da bize çok yardım ediyor işi.Tekrar ollydbg a dönün.
(00768C6E 'nin degerleri değişikken ve proğram kodları önümüzde iken).Yine mouse ile kodlar üzerinde sağ tuş yapın.
Şu sırayı takip edin.Copy to executable ==>all modifications==>copy all==>önümüze gelen ekranda yine sağtuş==>save file ve 
farklı bir isimle kaydet.
Bazen olldbg de point h breakpointi kilitlenmiş gibi davranıyor.Breakpoint konduktan sonra programda serial bölümüne dönülemediği 
söyleniyor.Bunu engellemek için ollydbg nin boyutlarını küçültün.(çercevelerinden).breakpoint koymadan önce olldbg ve programın 
serial soran bölümü önünüzde olsun.ikisinide aynı anda görün.



Bu programda da programcı aynı hatayı yapmış.(Hata mesajından önceki karsılastırma yaptıkları call  meydanda.Bundan 
dolayı seriali bulmak ve patch yapmak o kadar zor degil.Hiç olmazsa bu karsılastırmaları degişik caller de yapmak ve 
karsılaştırma sonucunda ki jump komutundan sonra[00768C4F  75 1D   JNZ     SHORT 00768C6E    ===>yanlış ise hata mesajına git.
(nop larsak kayıtlanıyor)]geriye dogru birkac kontrol yapmak gerekli.(Bunlarda bir çözüm degil ama bu kadarda basit olmamalı.)

Bu tutoriali yazmaktaki amacım proğramcılara ,proğramlarını daha iyi korumaları için yol göstermektir..
Son olarak şunu söyleyeyim:Bir proğramı kullanarak para kazanıyorsanız,o proğramı mutlaka satın alın.Emeğe değer verin...
Lisansız kullanımdan tutoriali hazırlayanlar sorumlu değildir.


Son Notlar
Bu yazıda yazım yanlışları , bilgi hatası olabilir.Eğer bir yanlış bulursanız bana mail atın düzeltmeye çalışırım.

E-Mail: kresuz