AZ-Facturation version 5.0018 |
|
|
|
Program Tipi:Muhasebe Programı |
|
OllyDbg v1.10,DzA Patcher v1.3 |
|
|
|
|
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.
Ö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.
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