ICleaner v3.4.0.58

kresuz
Program Url:www.softneoweb.com
Program Tipi:Gereksiz dosyaları temizliyor.
     Araçlar:
OllyDbg v1.10,PEiD
Basit ( )  Orta (X)  Zor ( )  Pro ( )


Başlangıç

ICleaner ASPack 2.12 ile packlı,trial ve serialle korunuyor.Seriali bir sonraki açılışında kontrol ediyor.Ayrıca serial cryptolanıyor. Yani gercek serial işi biraz zor.Bizde ikinçi acılışında kontrol yaptıgı noktayı bulup oraya kayıtlı olduğunda gerekli olan degerleri yazacagız. Programı kayıtlı hale getirecegiz.Ollydbg nin degişik özelliklerinde bahsedecegim.(Winhex gibi kullanacagız.)Programı unpack yapın.İşe başlayalım.
Yazı

Unpack yapılmış programı olldbg de yükleyip çalıştırın.Lisan bölümünde User Name:kresuz ,Registration Key:1A2B2C4D5E yazıp register tuşuna basın.Bize kayıt işine tekrar açıldıgında bakacagını söyledi.

 
Şimdi tamam tuşuna basmayın ALT+M yapın veya resimdeki tuşa basın.
 
Önünüze gelen ekranı tıklayın ve CTRL+B yapın. ASCII bölümüne kresuz yazıp ok tuşuna basın.
 
Niye bunları yaptık: 1- Program tamam tusuna basarsak başka bir mesaj vermeden kapanıyor.Müdahale edemiyoruz. 2- Program girdigimiz ismi registere yazıyor ve bu isime göre serial üretiyor.Bunun için girdigimiz ismi okudugu yere breakpoint koymamız gerekiyor.Bunun için yazdığımız ismi ram da aratıyoruz.Bulunca okudugu bölgeye breakpoint koyacagız. Olldbg'u winhex gibi kullanacagız.Bu yöntem klasik breakpointlerin calışmadıgı zamanlarda çok gecerlidir.Programların ya seriali veya ismi okudugu yeri kesin olarak yakalıyor.Bazende gercek seriali görebilirsiniz.(şanslı iseniz) Bu kadar açıklama şimdilik yeter. Programda kaldıgımız yere dönelim.String arama ekranında ok. tuşuna basınca girdigimiz ismi bulduk.
 
mouse ile ismin üzerine gelin soltusuna basarak ismin sonuna kadar gidip işaret koyun.Şimdi sağ tuş yapın ve resimdeki sıraları takip edip DWORD yazılı bölümü tıklayın.
 
Bunu bu bölgeye bir şey yazıldıgında durması için yaptık.Programda register bölümüne dönün.Tamam tuşuna basın. Program kapanacaktır. CTRL+F2 ile restart yapın.F9 a basın ve program durdu.

00404679  |.  5A                           POP     EDX                                        ;  ICleaner.004046A4
0040467A  |.  66:C74402 FE 0000            MOV     WORD PTR DS:[EDX+EAX-2], 0
00404681  |.  83C0 08                      ADD     EAX, 8
00404684  |.  5A                           POP     EDX                                        ;  ICleaner.004046A4
00404685  |.  8950 FC                      MOV     DWORD PTR DS:[EAX-4], EDX
00404688  |.  C740 F8 01000000             MOV     DWORD PTR DS:[EAX-8], 1    ==>İlk önce burada durdu.F8 ile devam edin.
0040468F  |.  C3                           RETN

004FE942   .  8B55 E4                      MOV     EDX, DWORD PTR SS:[EBP-1C]
004FE945   .  B8 60A75200                  MOV     EAX, 0052A760
004FE94A   .  E8 A95CF0FF                  CALL    004045F8
004FE94F   .  8D55 E0                      LEA     EDX, DWORD PTR SS:[EBP-20]
004FE952   .  B8 F4EA4F00                  MOV     EAX, 004FEAF4                              ;  ASCII "RegCode"
004FE957   .  E8 E4A2F8FF                  CALL    00488C40
004FE95C   .  8B55 E0                      MOV     EDX, DWORD PTR SS:[EBP-20]
004FE95F   .  B8 64A75200                  MOV     EAX, 0052A764
004FE964   .  E8 8F5CF0FF                  CALL    004045F8
004FE969   .  68 6CA75200                  PUSH    0052A76C
004FE96E   .  68 70A75200                  PUSH    0052A770
004FE973   .  68 74A75200                  PUSH    0052A774
004FE978   .  B9 68A75200                  MOV     ECX, 0052A768
004FE97D   .  8B15 64A75200                MOV     EDX, DWORD PTR DS:[52A764]    ==>Girdiğimiz sallama serial edx' de
004FE983   .  A1 60A75200                  MOV     EAX, DWORD PTR DS:[52A760]
004FE988   .  E8 6F98F8FF                  CALL    004881FC                      ==>Kontrol et.
004FE98D      A2 5CA75200                  MOV     BYTE PTR DS:[52A75C], AL      ==>Serial dogru ise AL=01 ve [52A75C] memory
                                                                                 ==>bölgesine 1 yazılacak

004FE992     /EB 04                        JMP     SHORT 004FE998                ==>Memory bölgesini karşılastırmaya git.              
004FE994     |EB                           DB      EB
004FE995     |05                           DB      05
004FE996   . |8901                         MOV     DWORD PTR DS:[ECX], EAX                    ;  ICleaner.0052A764
004FE998   > \803D 5CA75200 00             CMP     BYTE PTR DS:[52A75C], 0     ==>Memory bölgesi 0  mı?
004FE99F   .  0F85 F8000000                JNZ     004FEA9D                     ==>degilse kayıtlı,0 ise demo calıştır.
004FE9A5   .  8D55 FC                      LEA     EDX, DWORD PTR SS:[EBP-4]

Bizim şimdi yapmamız gereken  BYTE PTR DS:[52A75C] memory bölgesine 1 yazmak.Bunu yapınca program registerli olacak.
Bunun icin 004FE98D  satırına yani MOV     BYTE PTR DS:[52A75C], AL  yerine kod yazmamız gerekli.Yazacagımız kod,satır 
sayısından fazla olacagı icin taşma olur,program çalışmaz.Mecburen program sonunda boş bir yere yazacağız.
004FE98D satırını programın sonundaki boş yere yönlendirecegiz.0051769B  satırından sonra boş yerler var.
Unpack yapılmış dosyaya W32dasm ile bakın.İşe başlayalım
 
                   ORİJİNAL KOD

004FE98D      A2 5CA75200                  MOV     BYTE PTR DS:[52A75C], AL
004FE992      EB 04                        JMP     SHORT 004FE998
004FE994      EB                           DB      EB
004FE995      05                           DB      05
004FE996   .  8901                         MOV     DWORD PTR DS:[ECX], EAX
004FE998   >  803D 5CA75200 00             CMP     BYTE PTR DS:[52A75C], 0

                     PATCH YAPILINCA 

004FE98D     /E9 098D0100                  JMP     0051769B    ==>Bu satırı kod yazacağımız program sonundaki alana yönlendiriyoruz
004FE992     |90                           NOP             ==>Burada ki jumpu da nopluyoruz.Çünkü program sonunda dönüşü 
004FE993     |90                           NOP               ;doğrudan karşılaştırmaya,004FE998 satırına yönlendireceğiz.
004FE994     |EB                           DB      EB
004FE995     |05                           DB      05
004FE996   . |8901                         MOV     DWORD PTR DS:[ECX], EAX
004FE998   > |803D 5CA75200 00             CMP     BYTE PTR DS:[52A75C], 0   ==>Karşılaştırma yeri

004FE98D     /E9 098D0100                  JMP     0051769B  yönlendirdigimizde ;

                   ORİJİNAL KOD

0051769B      0000                         ADD     BYTE PTR DS:[EAX], AL
0051769D      0000                         ADD     BYTE PTR DS:[EAX], AL
0051769F      0000                         ADD     BYTE PTR DS:[EAX], AL
005176A1      0000                         ADD     BYTE PTR DS:[EAX], AL
005176A3      0000                         ADD     BYTE PTR DS:[EAX], AL
005176A5      0000                         ADD     BYTE PTR DS:[EAX], AL
005176A7      0000                         ADD     BYTE PTR DS:[EAX], AL
005176A9      00                           DB      00
005176AA      00                           DB      00
005176AB      00                           DB      00

                  PATCH YAPILINCA 

0051769B      33C0                         XOR     EAX, EAX                   ==>Eax sıfır
0051769D      40                           INC     EAX                        ==>Eax'ı 1 artır   =AL 01  oldu
0051769E      A2 5CA75200                  MOV     BYTE PTR DS:[52A75C], AL   ==>[52A75C] memory bölgesine 1 yaz
005176A3    ^ E9 F072FEFF                  JMP     004FE998                   ==>Karşılaştırma ya [52A75C]=01 olarak geri dön.

Bu yaptıgınız degisiklikleri olldbg de baska bir isimle saklayın.Patch yapılmıs programı calıstırın.Evet ne trial ekranı,ne de
register bölümü kalmış. Abouta bakın.Registerlenmiş.
 

Koydugunuz breakpointleri görmek veya kaldırmak icin Ollydbg de DEBUG menu sunda Hardware breakpoints bölümüne bakın.

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