İksir Ticari Entegre 3.0.2 |
|
|
|
Program Tipi:Muhasebe Programı |
|
OllyDbg v1.10,Dup2 |
|
|
|
|
Program Serial le ve demo limitlerle korunuyor.Programcı neredeyse her köşe başına limit kontrolü koymus.Ama yine hata yapmışlar.Kontrolleri hep aynı dizilişlerle yapmış.Bundan dolayı bunları aşmak anlatacagım yöntemle çok kolay.
Eax da girdiğimiz sallama serial EDX de gercek serial hexadecimal olarak gözüküyor decimal olan (Signed bölümünde)gercek serial
Neyse biz esas yapacagımız işe dönelim.Ollydbg de yuklenmiş program kodları üzerinde Sag tus==>Search for==>All referenced text strings den
demo yazılarını arayıp bulun.Bulduklarınıza cift tıklalayın.
005F4207 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
005F420A |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
005F420D |. A1 B4016200 MOV EAX,DWORD PTR DS:[6201B4]
005F4212 8038 00 CMP BYTE PTR DS:[EAX],0
005F4215 |. 74 33 JE SHORT İksir_Ti.005F424A
005F4217 |. 8D55 F0 LEA EDX,[LOCAL.4]
005F421A |. A1 B8056200 MOV EAX,DWORD PTR DS:[6205B8]
005F421F |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
005F4221 |. E8 2AC6E9FF CALL İksir_Ti.00490850
005F4226 |. 8B45 F0 MOV EAX,[LOCAL.4]
005F4229 |. 8D55 F4 LEA EDX,[LOCAL.3]
005F422C |. E8 8760E1FF CALL İksir_Ti.0040A2B8
005F4231 |. 8D45 F4 LEA EAX,[LOCAL.3]
005F4234 |. BA 846A5F00 MOV EDX,İksir_Ti.005F6A84 ; ASCII "\\Dosya.txt"
005F4239 |. E8 8E0BE1FF CALL İksir_Ti.00404DCC
005F423E |. 8B45 F4 MOV EAX,[LOCAL.3] ; kernel32.7C839AA8
005F4241 |. E8 2A5EE1FF CALL İksir_Ti.0040A070
005F4246 |. 84C0 TEST AL,AL
005F4248 75 0F JNZ SHORT İksir_Ti.005F4259
005F424A |> B8 986A5F00 MOV EAX,İksir_Ti.005F6A98 ; ASCII "Demo versiyonda kısıtlanmıştır..."
005F424F |. E8 9C7FE4FF CALL İksir_Ti.0043C1F0
005F4254 |. E9 A5260000 JMP İksir_Ti.005F68FE
005F4259 |> 8D55 EC LEA EDX,[LOCAL.5]
005F425C |. 8B83 88070000 MOV EAX,DWORD PTR DS:[EBX+788]
005F4262 |. E8 81A9E7FF CALL İksir_Ti.0046EBE8
005F4267 |. 837D EC 00 CMP [LOCAL.5],0
005F426B |. 75 14 JNZ SHORT İksir_Ti.005F4281
005F426D |. B8 C46A5F00 MOV EAX,İksir_Ti.005F6AC4 ; ASCII "Lütfen devirin yapılacağı yeni çalışma yılını gitiniz"
005F4272 |. E8 797FE4FF CALL İksir_Ti.0043C1F0
Burada demo limiti aşmak için
005F4215 |. 74 33 JE SHORT İksir_Ti.005F424A ==>Orijinal
005F4215 90 NOP ==>patch
005F4216 90 NOP
Dup2 Kodu:
80 38 00 74 33 ==>Orijinal
80 38 00 90 90 ==>patch
Peki Bu kodları nasıl bulduk
005F4212 ve 005F4215 satırlarını mouse ile secin.Resime bakın ve Generic Patch yazısını okuyun.Cünkü patch
kodlarının secimi ve patch ları anlatırsam yazı bitmeyecek.Secim ve patchlı dup2 icin kod cıkarma bu yazıda ayrıntılı var.
005F4248 /75 0F JNZ SHORT İksir_Ti.005F4259 ==>Orijinal
005F4248 /EB 0F JMP SHORT İksir_Ti.005F4259 ==>patch
dup2 kodu:
84 C0 75 0F ==>Orijinal
84 C0 EB ?? ==>patch
84 C0 EB ?? ==>Burada son bayt a neden ?? yazıyoruz.EB yani jumptan sonraki jump adresleri degisiyor. ?? demek
o adresleri degiştirmiyor.Hangi adres varsa o adrese devam et diyoruz.Yani 84 C0 EB 0F diye yazsak
sadece 1 jumpu degistirecektik.Ama böyle yazmakla sadece bizim istedigimiz yerler degişip diger yerler
aynı kalıp program akışı devam ediyor. (Thanks to renaTgaD)
Seklinde patchlar ile bu limiti aşıyoruz.
0060B662 |. 83F8 14 CMP EAX,14 ==>14h=20 Decimal
0060B665 |. 7C 14 JL SHORT İksir_Ti.0060B67B ==>Kayıt 20 den az ise kayıta git, yoksa demo
0060B667 |. B8 B4B76000 MOV EAX,İksir_Ti.0060B7B4 ; ASCII "Demo versiyon limiti dolmuştur. Lütfen LİSANS alınız"
Patch:
0060B662 |. 83F8 14 CMP EAX,14
0060B665 EB 14 JMP SHORT İksir_Ti.0060B67B
dup2 kodu:
83 F8 14 7C 14 ==>Orijinal
83 F8 14 EB ?? ==>patch
0060B74E |. 83F8 64 CMP EAX,64 ==>64h=100 decimal
0060B751 |. 7C 1F JL SHORT İksir_Ti.0060B772 ==>Kayıt 100 den az ise kayıta git, yoksa demo
0060B753 |. B8 B4B76000 MOV EAX,İksir_Ti.0060B7B4 ; ASCII "Demo versiyon limiti dolmuştur. Lütfen LİSANS alınız"
Patch:
0060B74E |. 83F8 64 CMP EAX,64
0060B751 /EB 1F JMP SHORT İksir_Ti.0060B772
dup2 kodu:
83 F8 64 7C 1F ==>Orijinal
83 F8 64 EB ?? ==>patch
00612C91 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00612C94 |. 803D 6B2A6200 00 CMP BYTE PTR DS:[622A6B],0
00612C9B |. 74 33 JE SHORT İksir_Ti.00612CD0
00612C9D |. 8D55 F8 LEA EDX,[LOCAL.2]
00612CA0 |. A1 B8056200 MOV EAX,DWORD PTR DS:[6205B8]
00612CA5 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
00612CA7 |. E8 A4DBE7FF CALL İksir_Ti.00490850
00612CAC |. 8B45 F8 MOV EAX,[LOCAL.2] ; kernel32.7C816FE0
00612CAF |. 8D55 FC LEA EDX,[LOCAL.1]
00612CB2 |. E8 0176DFFF CALL İksir_Ti.0040A2B8
00612CB7 |. 8D45 FC LEA EAX,[LOCAL.1]
00612CBA |. BA 3C2D6100 MOV EDX,İksir_Ti.00612D3C ; ASCII "\\Dosya.txt"
00612CBF |. E8 0821DFFF CALL İksir_Ti.00404DCC
00612CC4 |. 8B45 FC MOV EAX,[LOCAL.1]
00612CC7 |. E8 A473DFFF CALL İksir_Ti.0040A070
00612CCC |. 84C0 TEST AL,AL
00612CCE |. 75 0F JNZ SHORT İksir_Ti.00612CDF
00612CD0 |> B8 502D6100 MOV EAX,İksir_Ti.00612D50 ; ASCII "Demo versiyonda 2.kasa açılamaz"
00612CD5 |. E8 1695E2FF CALL İksir_Ti.0043C1F0
00612CDA |. E8 91B0DFFF CALL İksir_Ti.0040DD70
00612CDF |> 8B83 A8060000 MOV EAX,DWORD PTR DS:[EBX+6A8]
Burada demo limiti gecmek icin
00612C9B |. /74 33 JE SHORT İksir_Ti.00612CD0
00612C9B 90 NOP
00612C9C 90 NOP
dup2 kodu
80 3D 6B 2A 62 00 00 74 33
80 3D 6B 2A 62 00 00 90 90
ve
00612CCE |. 75 0F JNZ SHORT İksir_Ti.00612CDF
00612CCE /EB 0F JMP SHORT İksir_Ti.00612CDF
84 C0 75 0F ==>Bu kodu yazmamıza gerek yok.Çünkü yukarıdada var ve orada yazmıştık.Dup2 icin aynı dizilişte olan
84 C0 EB ?? ;kodlardan 1 tanesini yazmak yeterli oluyor.
00612ED9 |. 803D 6B2A6200 00 CMP BYTE PTR DS:[622A6B],0
00612EE0 |. 74 33 JE SHORT İksir_Ti.00612F15
00612EE2 |. 8D55 F8 LEA EDX,[LOCAL.2]
00612EE5 |. A1 B8056200 MOV EAX,DWORD PTR DS:[6205B8]
00612EEA |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
00612EEC |. E8 5FD9E7FF CALL İksir_Ti.00490850
00612EF1 |. 8B45 F8 MOV EAX,[LOCAL.2] ; kernel32.7C816FE0
00612EF4 |. 8D55 FC LEA EDX,[LOCAL.1]
00612EF7 |. E8 BC73DFFF CALL İksir_Ti.0040A2B8
00612EFC |. 8D45 FC LEA EAX,[LOCAL.1]
00612EFF |. BA 542F6100 MOV EDX,İksir_Ti.00612F54 ; ASCII "\\Dosya.txt"
00612F04 |. E8 C31EDFFF CALL İksir_Ti.00404DCC
00612F09 |. 8B45 FC MOV EAX,[LOCAL.1]
00612F0C |. E8 5F71DFFF CALL İksir_Ti.0040A070
00612F11 |. 84C0 TEST AL,AL
00612F13 |. 75 0F JNZ SHORT İksir_Ti.00612F24
00612F15 |> B8 682F6100 MOV EAX,İksir_Ti.00612F68 ; ASCII "Demo Versiyonda Yeni Kullanıcı Tanımlanamaz"
00612F1A |. E8 D192E2FF CALL İksir_Ti.0043C1F0
00612F1F |. E8 4CAEDFFF CALL İksir_Ti.0040DD70
00612F24 |> 33C0 XOR EAX,EAX
Burada da birşey yazmamıza gerek yok.Yukarıdaki kodlarla aynı.Programcı tembellik ve büyük hata yapmış.Hep aynı dizilişler var.
Birde acılısda demo yazıyor onlarıda kaldıralım
005F8F54 |. 8038 01 CMP BYTE PTR DS:[EAX],1
005F8F57 0F85 96000000 JNZ İksir_Ti.005F8FF3 ==>Noplama yeterli
0060245D |. 8038 01 CMP BYTE PTR DS:[EAX],1
00602460 |. 75 55 JNZ SHORT İksir_Ti.006024B7 ==>Noplama yeterli
80 38 01 75 55
80 38 01 90 90
80 38 01 0F 85 96 00 00 00
80 38 01 90 90 90 90 90 90
005F8F9B |. 3C 01 CMP AL,1
005F8F9D |. 75 54 JNZ SHORT İksir_Ti.005F8FF3 ==>Noplama yeterli
3C 01 75 54
3C 01 90 90
00602491 |. 3C 01 CMP AL,1
00602493 |. 75 22 JNZ SHORT İksir_Ti.006024B7 ==>Noplama yeterli
3C 01 75 22
3C 01 90 90
005F9375 |. 8038 01 CMP BYTE PTR DS:[EAX],1
005F9378 |. 75 5C JNZ SHORT İksir_Ti.005F93D6 ==>Noplama yeterli
005F9375 |. 8038 01 CMP BYTE PTR DS:[EAX],1
005F9378 90 NOP
005F9379 90 NOP
80 38 01 75 5C
80 38 01 90 90
005F93A9 |. 3C 01 CMP AL,1
005F93AB |. 75 29 JNZ SHORT İksir_Ti.005F93D6
005F93A9 |. 3C 01 CMP AL,1
005F93AB 90 NOP
005F93AC 90 NOP
3C 01 75 29
3C 01 90 90
Şimdi dup2 icin kodları toparlayalım.
80 38 00 74 33 ==>Orijinal
80 38 00 90 90 ==>patch
84 C0 75 0F ==>Orijinal
84 C0 EB ?? ==>patch
83 F8 14 7C 14 ==>Orijinal
83 F8 14 EB ?? ==>patch
83 F8 64 7C 1F ==>Orijinal
83 F8 64 EB ?? ==>patch
80 3D 6B 2A 62 00 00 74 33 ==>Orijinal
80 3D 6B 2A 62 00 00 90 90 ==>patch
80 38 01 0F 85 96 00 00 00 ==>Orijinal
80 38 01 90 90 90 90 90 90 ==>patch
3C 01 75 54 ==>Orijinal
3C 01 90 90 ==>patch
80 38 01 75 55 ==>Orijinal
80 38 01 90 90 ==>patch
3C 01 75 22 ==>Orijinal
3C 01 90 90 ==>patch
80 38 01 75 5C ==>Orijinal
80 38 01 90 90 ==>patch
3C 01 75 29 ==>Orijinal
3C 01 90 90 ==>patch
Patch yapacagımız yer sayısı 11 adet oldu.Aslında programda demo limit kaldırmak icin(20 ve 100 kayıt sınırı
kullanıcı tanım,devir ve banka acma)5 yere patch yapmak yeterli diger 6 yer demo yazılarını kaldırmak icin.
Gördüğünüz gibi bu kodları dup2 ye yazarsak,programcının her yere koydugu demo limitleri gecmek icin tek tek
patch yapmaya gerek yok.Bunu dup2 bizim için otomatik yapacak.
Şimdi ollydbg yi kapatın.Dup2 yi acın.Önce New project e tıklayın.Patch infoya gerekli bilgileri yazın.Saklayıp çıkın.
Sonra Add tusuna basın orada Search & Replace Patch a Çift tıklayın.Sonra ana panoda ki Search & Replace Patch a tıklayın.
Önünüze gelen ekranda target File de İksir Ticari Entegre.exe yi gösterin .
Search Pattern ne orijinal kod ları ,Replace Pattern ne de patch lı dizilimi sıra ile yazıp add tusuna basın
Save tusuna basıp cıkın create patch tuşuna basıp patch ı yapın.
Bu patch programcı eger o yukarıdaki kod dizilişlerini değiştirmez ise bundan sonraki bütün versiyonlarda çalışır.
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