AZ-Facturation version 5.0018

kresuz
Program Url:www.azur-computing.com
Program Tipi:Muhasebe Programı
     Araçlar:
OllyDbg v1.10,DzA Patcher v1.3
Basit ( )  Orta (X)  Zor ( )  Pro ( )


Başlangıç

Programın serialini bulacağız.Patch yapacagız(je,jne,nop kullanmadan)Sallama serial girecegiz ama program gercek serialle kayıt olacak. Peidle bakalım (UPX 0.89.6-1.02/1.05-1.24).UPX le packlı.Program kayıtlı olup olmadığını açılış da register kayıtların dan( HKEY_CLASSES_ROOT\CLSID\{8AC5C661-6005-FAC5-8FF3-0040D005E5DC}\infos) degerinden bakarak anlıyor.Eger dogru seriali girersek kayıtlı olması için gerekli değerleri buraya yazıyor.Bu değerleri silersek tekrar demo ya dönüyor. Ollydbg v1.10 cekin.İşe başlayalım.
Yazı


Önce ekranı ikiye bölün.sol tarafta program ,sağ tarafta ollydbg olsun.İkisi ekranda olsun.Böylece ollydbg de F8 veya 
Ctrl+F9 ile ilerlerken bu arada programın neler yaptıgını,hangi call in hata mesajını cıkardıgını görürsünüz.
Ollydbg'u açın AZFacturation.exe yi yükleyin ve programı çalıştırın.Önünüze gelen demo ekranını Annuler veya ESC tuşuna basarak 
geçin.Şimdi yukarıda Aide bölümünden S'enregistrer e basarak kayıt bölümüne gelin.Lisans tipini seçin.Utilisateur bölümüne 
isim Clé bölümüne sallama serial girin.


Enregister tuşuna basmadan önce Break point koyacagız.Api break ta olan klasik breakpointler (Point H dahil)calısmıyor.
Sanırım extra koruma var.Ayrıca Black list de var.
Ollydbg ye gecin.ALT+E ve Breakpoint için User32.dll üzerinde ctrl+N yapın ve içindeki loadcursorA ya F2 ile Bpx koyun.


Çalışan programa dönün.Register bölümünde enregister tuşuna basın.Break point çalıştı.Ollydbg de User32.dll icine düştük.

             USER32.DLL
77D40B3E >  8BFF                MOV     EDI, EDI   ===>Buradayız F2 ile breakpointi kaldırın. ALT+F9 yapın
77D40B41    8BEC                MOV     EBP, ESP

    AZFactur   içindeyiz
004A0BCE    8943 3C             MOV     DWORD PTR DS:[EBX+3C], EAX    ===>Buraya geldik.Ctrl+F9 ile ilerleyin.
004A0BD1    33C0                XOR     EAX, EAX                         ;F8 ile de ilerliyebilirsiniz ama uzun bir trace oluyor.

00441444    FF92 EC000000       CALL    NEAR DWORD PTR DS:[EDX+EC]       ; AZFactur.004B57E4===>İlk hata mesajını gösteren call
0044144A    8945 F8             MOV     DWORD PTR SS:[EBP-8], EAX        ; programa dönün hata mesajında ok tusuna basın 
                                                                         ; ollydbg de Ctrl+F9 ile ilerleyin

007D22BF    84DB                TEST    BL, BL                   ===>BL=0 ;Burada olldbg nin sağ alt köşesinde gercek seriali görebilirsiniz.
007D22C1    0F84 9D000000       JE      AZFactur.007D2364        ===>BL=0 ise ikinci hata mesajına git.
007D22C7    8D45 F0             LEA     EAX, DWORD PTR SS:[EBP-10]  ===>kayıta başlıyor
007D22CA    50                  PUSH    EAX
007D22CB    B1 01               MOV     CL, 1
007D22CD    8B96 9C000000       MOV     EDX, DWORD PTR DS:[ESI+9C]
007D22D3    8BC6                MOV     EAX, ESI
007D22D5    E8 1AE1FFFF         CALL    AZFactur.007D03F4
007D22DA    8B4D F0             MOV     ECX, DWORD PTR SS:[EBP-10]
007D22DD    BA D8237D00         MOV     EDX, AZFactur.007D23D8           ; ASCII "R1"

007DEE56    E8 95F9FFFF         CALL    AZFactur.007DE7F0                ===>İkinci hata mesajı.
007DEE5B    5B                  POP     EBX                              ; 01A89B44
007DEE5C    5D                  POP     EBP                              ; 01A89B44
007DEE5D    C3                  RET

007D22BF    84DB                TEST    BL, BL   buraya  yukardan (007D2258  JE      SHORT az.007D22BF)bir jump var.
007D2258  JE      SHORT az.007D22BF satırına F2 ile breakpoint koyun ve F9 a basın.Program İkinci hata mesajını gösterdi.Ok.tusuna basın.
007D2258 satırındaki breakpoint aktifken programda enregister tuşuna tekrar basın.Break point çalıştı.Ollydbg de 007D2258 satırında durduk.


007D2258  |. /74 65             JE      SHORT az.007D22BF   ===>Buradayız şimdi F8 ile ilerleyin.
007D225A  |. |8D45 FC           LEA     EAX, [LOCAL.1]
007D225D  |. |50                PUSH    EAX
007D225E  |. |8D4D F4           LEA     ECX, [LOCAL.3]
007D2261  |. |8BD6              MOV     EDX, ESI
007D2263  |. |8B86 34010000     MOV     EAX, DWORD PTR DS:[ESI+134]
007D2269  |. |FF96 30010000     CALL    NEAR DWORD PTR DS:[ESI+130]      ;  az.007DEA18
007D226F  |. |8D86 9C000000     LEA     EAX, DWORD PTR DS:[ESI+9C]
007D2275  |. |8B55 F4           MOV     EDX, [LOCAL.3]
007D2278    E8 3730C3FF         CALL    AZFactur.004052B4           
007D227D    8D4D F8             LEA     ECX, DWORD PTR SS:[EBP-8]
007D2280    8B96 9C000000       MOV     EDX, DWORD PTR DS:[ESI+9C]
007D2286    8BC6                MOV     EAX, ESI
007D2288    E8 DB010000         CALL    AZFactur.007D2468          ===>Keygen           
007D228D    837D F8 00          CMP     DWORD PTR SS:[EBP-8], 0
007D2291    74 2C               JE      SHORT AZFactur.007D22BF
007D2293    8B55 FC             MOV     EDX, DWORD PTR SS:[EBP-4] ===>Girdiğimiz sallama serial
007D2296    8B45 F8             MOV     EAX, DWORD PTR SS:[EBP-8] ===>Gercek serial
007D2299    E8 5684C3FF         CALL    AZFactur.0040A6F4         ===>Karşılaştır
007D229E    85C0                TEST    EAX, EAX                  ===>EAX=FFFFFFF  kötü kod  dogrusu eax=0 olacak
007D22A0    0F94C3              SETE    BL
007D22A3    84DB                TEST    BL, BL                    ===>BL=0
007D22A5    75 18               JNZ     SHORT AZFactur.007D22BF
007D22A7    66:83BE EA000000 00 CMP     WORD PTR DS:[ESI+EA], 0
007D22AF    74 0E               JE      SHORT AZFactur.007D22BF
007D22B1    8BD6                MOV     EDX, ESI                         ; comctl32.773E8B56
007D22B3    8B86 EC000000       MOV     EAX, DWORD PTR DS:[ESI+EC]
007D22B9    FF96 E8000000       CALL    NEAR DWORD PTR DS:[ESI+E8]
007D22BF    84DB                TEST    BL, BL                      ===>BL=0
007D22C1    0F84 9D000000       JE      AZFactur.007D2364           ===>Hata mesajına gidiyor.Patch (nop) yaparsak
007D22C7    8D45 F0             LEA     EAX, DWORD PTR SS:[EBP-10]     ;olmuyor,çünkü geriye doğru kontrol var
007D22CA    50                  PUSH    EAX
007D22CB    B1 01               MOV     CL, 1
007D22CD    8B96 9C000000       MOV     EDX, DWORD PTR DS:[ESI+9C]   ===>Girilen ismi EDX e alıyor
007D22D3    8BC6                MOV     EAX, ESI                        
007D22D5    E8 1AE1FFFF         CALL    AZFactur.007D03F4
007D22DA    8B4D F0             MOV     ECX, DWORD PTR SS:[EBP-10]      
007D22DD    BA D8237D00         MOV     EDX, AZFactur.007D23D8           ; ASCII "R1" Registere kaydetmeye başlıyor.

007D22E2    8BC6                MOV     EAX, ESI
007D22E4    E8 C7EEFFFF         CALL    AZFactur.007D11B0
007D22E9    8D45 EC             LEA     EAX, DWORD PTR SS:[EBP-14]
007D22EC    50                  PUSH    EAX
007D22ED    8D55 E8             LEA     EDX, DWORD PTR SS:[EBP-18]
007D22F0    8B45 FC             MOV     EAX, DWORD PTR SS:[EBP-4]    ===>Girdigimiz sallama serial(Buraya gercek seriali almamız gerekli)
007D22F3    E8 F481C3FF         CALL    AZFactur.0040A4EC            ===>(Seriali tekrar kontrol ediyor)
007D22F8    8B55 E8             MOV     EDX, DWORD PTR SS:[EBP-18]
007D22FB    B1 01               MOV     CL, 1
007D22FD    8BC6                MOV     EAX, ESI
007D22FF    E8 F0E0FFFF         CALL    AZFactur.007D03F4
007D2304    8B4D EC             MOV     ECX, DWORD PTR SS:[EBP-14]
007D2307    BA E4237D00         MOV     EDX, AZFactur.007D23E4           ; ASCII "R2" Registere kayıt yapıyor.
007D230C  |.  8BC6              MOV     EAX, ESI
007D230E  |.  E8 9DEEFFFF       CALL    az.007D11B0
007D2313  |.  66:83BE 1A010000 >CMP     WORD PTR DS:[ESI+11A], 0
007D231B  |.  74 18             JE      SHORT az.007D2335
007D231D      8B45 FC           MOV     EAX, DWORD PTR SS:[EBP-4]   ===>Girdigimiz sallama serial(Buraya gercek seriali almamız gerekli)
007D2320  |.  50                PUSH    EAX
007D2321  |.  8B8E 9C000000     MOV     ECX, DWORD PTR DS:[ESI+9C]

 
 
Şimdi üç yeri Patch yapmamız gerekli onu bulduk.

007D2293    8B55 FC           MOV     EDX, DWORD PTR SS:[EBP-4] ===>Girdiğimiz sallama serial(Buraya gercek seriali aldıracağız)
007D2296    8B45 F8           MOV     EAX, DWORD PTR SS:[EBP-8] ===>Gercek serial
007D2299    E8 5684C3FF       CALL    AZFactur.0040A6F4         ===>Karşılaştır(Patch dan sonra 2 gercek seriali Karşılaştıracak)
 

007D2293    8B55 FC           MOV     EDX, DWORD PTR SS:[EBP-4]
007D2293    8B55 F8           MOV     EDX, DWORD PTR SS:[EBP-8] patch ===>Gerçek serial[EBP-8]de idi.EDX e artık gerçek seriali alıyor.

007D22F0    8B45 FC           MOV     EAX, DWORD PTR SS:[EBP-4]
007D22F0    8B45 F8           MOV     EAX, DWORD PTR SS:[EBP-8] patch

007D231D    8B45 FC           MOV     EAX, DWORD PTR SS:[EBP-4]
007D231D    8B45 F8           MOV     EAX, DWORD PTR SS:[EBP-8] patch


Bu ollydbg de yaptıgımız patch lar aktif iken ve tüm break pointler kalkmış iken tekrar enregister tusuna basın program hata 
mesajı vererek dogru serialle kayıt yaparak kapanacaktır.Ollydbyi kapatın.orijinal programı acın program acılırken bekleme 
süresi kalkmış.Lisans bölümüne bakın.Gercek serial var.


Peki bu patch ların kalıcı olması icin ne yapacagız.Ya unpack edilmiş exe de bunları uygulayacagız.
(exe boyutu cok büyüyor pratik degil.)Ya da loaderle, çalışan programa patch yapacagız.Normal patch 
saglıklı olmuyor.Çünkü UPX var.

Loaderi bu sefer DzA Patcher v1.3 ile yapalım.
Virtual Adress         Original Byte        New Byte

007D2293                    8B                  8B
007D2294                    55                  55
007D2295                    FC                  F8              

007D22F0                    8B                  8B            
007D22F1                    45                  45           
007D22F2                    FC                  F8             

007D231D                    85                  85      
007D231E                    45                  45   
007D231F                    FC                  F8


Dikkat ederseniz bu kod sıralarında sadece 3 byte degişiyor.(Kırmızı renkli Byte)DzA Patcher v1.3 e sadece 
bunları yazın.Sonra create loader e basın.loader.exe yi yaratacaktır.Loader.exe yi programın oldugu dizine 
kopyalayıp çalıstırın.Register bölümünde gerekli bilgileri girin.Enregister tuşuna basın.program kayıtlanacaktır.
Loader.exe nin boyutu çok küçük.hem istenilen yere rahat taşınıyor hemde kullanımı çok pratik.
Yukarıdaki program linkinde bulunan az.rar dosyası içinde programın kurulumu,loader.exe ,DzA Patcher v1.3 var. 


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