Microm Cari 3.0

kresuz
Program Url:www.micromyazilim.com
Program Tipi:Muhasebe Programı.
     Araçlar:
OllyDbg v1.10,PEiD,Dup2
Basit (X)  Orta ()  Zor ( )  Pro ( )


Başlangıç

Microm Cari 3.0 ASPack 2.12 ile packlı ve serialle korunuyor.Programın serialini bulacagız ve bunu hata mesajı yerine yazdıracagız. ASPack oldugu icin ya unpack yapılması(Peid sorunsuz yapıyor) veya loader gerekli.İşe başlayalım.
Yazı

Programı Hide debugger yüklü olldbg de yükleyip çalıştırın.Lisans bölümünde anahtar tuşuna basıp önce anahtar kod üretin. Lisans kodu yerine 12345678901234567890 yazın. Onayla tusuna basmadan önce Ollydbg ye gecin.Plugins==> ApiBreak==>ApiBreak==>Point H ye tıklayarak breakpoint koyun.Tekrar programa dönüp onayla tusuna basın. Breakpoint çalıstı. Şimdi ollydbg de program kod larındayız.


77D5353D    F3:A5                          REP     MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI>   ==>Breakpoint burda durdu.
77D5353F    8BC8                           MOV     ECX, EAX                                    ;F2 ile breakpointi kaldırın.
77D53541    83E1 03                        AND     ECX, 3                                      ;Programa dönmek icin ALT+F9 yapın.
77D53544    F3:A4                          REP     MOVS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]
77D53546    E8 E3FBFFFF                    CALL    77D5312E
77D5354B    5F                             POP     EDI    


0048C000      89                           DB      89                         ==>ALT+F9 dan sonra buraya geldik.
0048C001      43                           DB      43                         ;Ama ASPack 2.12 kodları karıştırıyor.               
0048C002      0C                           DB      0C                         ;
0048C003      8B                           DB      8B
0048C004      03                           DB      03
0048C005      83F8 0C                      CMP     EAX, 0C
0048C008      75                           DB      75                                         
0048C009      1B                           DB      1B
0048C00A      8B                           DB      8B
0048C00B      53                           DB      53                                       

0048C000 satırında iken CTRL+A yapın. şimdi kodlar gözüküyor.

0048C000  |.  8943 0C                      MOV     DWORD PTR DS:[EBX+C], EAX      ===>F8 ile devam.
0048C003  |>  8B03                         MOV     EAX, DWORD PTR DS:[EBX]
0048C005  |.  83F8 0C                      CMP     EAX, 0C
0048C008  |.  75 1B                        JNZ     SHORT 0048C025
0048C00A  |.  8B53 08                      MOV     EDX, DWORD PTR DS:[EBX+8]
0048C00D  |.  52                           PUSH    EDX                                        ; /Arg1 = 00150608
0048C00E  |.  8B4B 04                      MOV     ECX, DWORD PTR DS:[EBX+4]                  ; |
0048C011  |.  8BD0                         MOV     EDX, EAX                                   ; |
0048C013  |.  8BC6                         MOV     EAX, ESI                                   ; |
0048C015  |.  E8 D6B5FFFF                  CALL    004875F0                                   ; \MicroCar.004875F0
0048C01A  |.  EB 09                        JMP     SHORT 0048C025
0048C01C  |>  8BD3                         MOV     EDX, EBX
0048C01E  |.  8BC6                         MOV     EAX, ESI
0048C020  |.  E8 9FCEFFFF                  CALL    00488EC4
0048C025  |>  5D                           POP     EBP                                        ;  0012FB88
0048C026  |.  5F                           POP     EDI                                        ;  0012FB88
0048C027  |.  5E                           POP     ESI                                        ;  0012FB88
0048C028  |.  5B                           POP     EBX                                        ;  0012FB88
0048C029  \.  C3                           RETN


00908E5F  |.  8D55 FC                      LEA     EDX, [LOCAL.1]
00908E62  |.  8B83 40030000                MOV     EAX, DWORD PTR DS:[EBX+340]
00908E68  |.  E8 E3EBB7FF                  CALL    00487A50  
00908E6D  |.  837D FC 00                   CMP     [LOCAL.1], 0           ==>Lisans kodu boşmu.
00908E71  |.  74 14                        JE      SHORT 00908E87         ==>Boş ise mesaj göster
00908E73  |.  8D55 F8                      LEA     EDX, [LOCAL.2]
00908E76  |.  8B83 3C030000                MOV     EAX, DWORD PTR DS:[EBX+33C]
00908E7C  |.  E8 CFEBB7FF                  CALL    00487A50
00908E81  |.  837D F8 00                   CMP     [LOCAL.2], 0           ==>Anahtar kod üretilmiş mi
00908E85  |.  75 0C                        JNZ     SHORT 00908E93         ==>Üretilmiş ise zıpla boş ise mesaj göster
00908E87  |>  B8 208F9000                  MOV     EAX, 00908F20                       
00908E8C  |.  E8 A36BB3FF                  CALL    0043FA34
00908E91  |.  EB 5C                        JMP     SHORT 00908EEF
00908E93  |>  8D55 F4                      LEA     EDX, [LOCAL.3]
00908E96  |.  8B83 40030000                MOV     EAX, DWORD PTR DS:[EBX+340]
00908E9C  |.  E8 AFEBB7FF                  CALL    00487A50                   ==>Keygen
00908EA1      8B55 F4                      MOV     EDX, DWORD PTR SS:[EBP-C]  ==>Sallama serial EDX de
00908EA4      A1 8C609100                  MOV     EAX, DWORD PTR DS:[91608C] ==>Gerçek serial EAX da
00908EA9  |.  E8 6ABBAFFF                  CALL    00404A18                   ==>Karşılastır.
00908EAE  |.  74 0C                        JE      SHORT 00908EBC             ==>Dogru ise kayıta atla,degilse hata mesajı.
00908EB0      B8 488F9000                  MOV     EAX, 00908F48              ==>Hata mesajını al."YAZDIĞINIZ ŞİFRE GEÇERSİZ"
00908EB5  |.  E8 7A6BB3FF                  CALL    0043FA34                   ==>Hata mesajını göster.
00908EBA  |.  EB 33                        JMP     SHORT 00908EEF
00908EBC  |>  8B83 6C030000                MOV     EAX, DWORD PTR DS:[EBX+36C]
00908EC2  |.  66:BE EBFF                   MOV     SI, 0FFEB
00908EC6  |.  E8 DDAAAFFF                  CALL    004039A8

Bizim şimdi yapacagımız şey,EAX hata mesajını  (MOV     EAX, 00908F48)  almasın,onun yerine gercek seriali alsın.
Gercek serial Eax 'a 00908EA4    satırında    DWORD PTR DS:[91608C]  memory bölgesinden geliyordu.

                   ORİJİNAL KOD

00908EB0      B8 48 8F 90 00                  MOV     EAX,  00908F48  
   
                  
                  PATCH YAPILINCA 

00908EB0      A1 8C 60 91 00                  MOV     EAX,  DWORD PTR DS:[91608C]

Bu şekilde hata mesajı yerine gerçek seriali alıyor.
Peki bu yaptıgımız patch kalıcı yapabilirmiyiz.ASPack  oldugu icin programı unpack yapmamız gerekir.Unpacklı dosyada Ollydbg de 
yaptıgımız degişiklikleri farklı bir isimle kaydedebiliriz.
 
Patch lı dosya calışınca
 
Ama bu unpacklı dosyaya yazmak pek pratik değil.Dosya boyutu büyük ,taşınması zor.Bundan dolayı loader yapacagız. Dup2 de yazmamız gereken kodlar:
Virtual Address Old Byte New Byte
00908EB0 B8 A1
00908EB1 48 8C
00908EB2 8F 60
00908EB3 90 91
00908EB4 00 00

 

Dup2 yi acın.New Project e tıklayın.Gerekli yerleri doldurun.Save tusuna basıp cıkın.Add tusuna basın.Önümüze 
gelen menuden offset patch a çift tıklayın.Resimleri takip edin.

 
 
 
Loaderi hazırladıkdan sonra programın oldugu direktöre kopyalayın ve çalıştırın.Sallama seriali girip onayla tusuna basın. Aynı yukarıdaki patch da oldugu gibi gercek seriali gösteriyor.

Bu tutoriali yazmaktaki amacım programcılara ,programlarını daha iyi korumaları için yol göstermektir..
Son olarak şunu söyleyeyim:Bir programı kullanarak para kazanıyorsanız,o programı 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