İksir Ticari Entegre 3.0.2

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


Başlangıç

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.
Yazı


Önce gercek seriali bulmak isterseniz (Bunuda söyleyeyimki programcı seriali bulamadıgımız icin bu patchları yapmak 
zorunda kaldığımızı sanmasın)Programı ollydbg de yükleyin lisans bölümüne gelin lisans numarası olarak 123456789 
sallama serial yazın.Tamam tusuna basmadan önce ollydbg ye gecin.CTRL+G yapın 005F9185 yazın ve ok tusuna basın.
005F9185  |.  3B02   CMP EAX,DWORD PTR DS:[EDX] satırına F2 ile breakpoint koyun.(Bu satıra nasıl geldiğimi de anlatırsam 
yazı çok uzun olacak.Diğer yazılarıma bakın)Programda tamam tuşuna basın.ollydbg ye döndük.
 
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.

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

http://kresuz.zor.org
http://kresuz.da.ru

;