"CleanPC v1.1"
Mr_Stop 
Program İsmi: http://members.aol.com/helhasan/myhomepage/
Program Tipi: Uninstall Programı
       Kullanılan Araçlar:
 SoftICE,W32Dasm 
Basit ( X )  Orta ( )  Zor ( )  Pro ( ) 


Başlangıç

Uzun bir aradan sonra tekrar beraberiz.Şu sıralar okula çok zaman ayırdığımdan bu işlerle pek uğraşamıyorum.Fakat insan birşeyler yapmadan rahat da duramıyor.Programın koruması çok basit.W32Dasm yardımıyla dahi seriali bulabilirsiniz.Yazının sonuna keygen ekledim isteyen download edebilir.

Yazı

Bu program windowstaki gereksiz dosyaları siliyor.Basit ve küçük bir program.Program muhmetemelen visual c ile yazılmış.Programı açıyoruz.İlk başta bize kayıt olmamız gerektiğini söyleyen bir ekran çıkıyor.Register butonuna tıklıyoruz.İsim olarak Mister Stop serial olarak da 999888777 yazıyoruz.SoftICE a geçip bpx GetDlgItemTextA yazıyoruz.SoftICE dan çıkıp ok tuşuna tıklıyoruz.SoftICE duracaktır.Karşımızda şöyle bir kod olacak.

:00405B6E E85A030000              call 00405ECD ;Seriali kaşılaştır
:00405B73 83C408                  add esp, 00000008
:00405B76 85C0                    test eax, eax
:00405B78 7440                    je 00405BBA  ;Yanlış ise hata mesajına zıpla
:00405B7A 8D9500FEFFFF            lea edx, dword ptr [ebp+FFFFFE00]
:00405B80 52                      push edx
:00405B81 8D8500FFFFFF            lea eax, dword ptr [ebp+FFFFFF00]
:00405B87 50                      push eax

00405B6E satırındaki Call a F8 ile giriyoruz.Karşımıza şöyle bir şey gelecek.

:00405ECD 55                      push ebp
:00405ECE 8BEC                    mov ebp, esp
:00405ED0 81EC00010000            sub esp, 00000100
:00405ED6 8D8500FFFFFF            lea eax, dword ptr [ebp+FFFFFF00]
:00405EDC 50                      push eax
:00405EDD 8B4D08                  mov ecx, dword ptr [ebp+08]
:00405EE0 51                      push ecx
:00405EE1 E88C000000              call 00405F72 ;Seriali hesapla
:00405EE6 83C408                  add esp, 00000008
:00405EE9 8D9500FFFFFF            lea edx, dword ptr [ebp+FFFFFF00]
:00405EEF 52                      push edx
:00405EF0 8B450C                  mov eax, dword ptr [ebp+0C]
:00405EF3 50                      push eax
:00405EF4 E8B7020000              call 004061B0 ;serialleri karşılaştır
:00405EF9 83C408                  add esp, 00000008
:00405EFC 85C0                    test eax, eax
:00405EFE 7507                    jne 00405F07
:00405F00 B801000000              mov eax, 00000001
:00405F05 EB02                    jmp 00405F09

00405EE1 deki callda gerçek seriali hesaplıyor.Daha sonra 00405EF4 satırındaki call ile bizim serialle gerçek seriali karşılaştırıyor.Eğer serialler birbirini tumuyor ise 00405F07 satırına zıplıyor ve burda eax a 0 atanıyor.Eğer serial doğru ise eax a 1 atıyor.00405EE1 satırında iken SoftICE'da F8 tuşuna basıyoruz.

:00405FBF 8B95FCFEFFFF            mov edx, dword ptr [ebp+FFFFFEFC]
:00405FC5 83C201                  add edx, 00000001
:00405FC8 8995FCFEFFFF            mov dword ptr [ebp+FFFFFEFC], edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405FBD(U)
|
:00405FCE 8B85FCFEFFFF            mov eax, dword ptr [ebp+FFFFFEFC]
:00405FD4 3B85F4FEFFFF            cmp eax, dword ptr [ebp+FFFFFEF4]
:00405FDA 7322                    jnb 00405FFE ;bütün karakterler toplandımı ?
:00405FDC 8B4D08                  mov ecx, dword ptr [ebp+08]
:00405FDF 038DFCFEFFFF            add ecx, dword ptr [ebp+FFFFFEFC]
:00405FE5 0FBE11                  movsx edx, byte ptr [ecx]  ;İsimden tek karakter al
:00405FE8 031590C04000            add edx, dword ptr [0040C090] ;38 ekle
:00405FEE 8B85F8FEFFFF            mov eax, dword ptr [ebp+FFFFFEF8]
:00405FF4 03C2                    add eax, edx	;toplamı eax a ekle
:00405FF6 8985F8FEFFFF            mov dword ptr [ebp+FFFFFEF8], eax
:00405FFC EBC1                    jmp 00405FBF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405FDA(C)
|
:00405FFE 8B8DF8FEFFFF            mov ecx, dword ptr [ebp+FFFFFEF8]
:00406004 51                      push ecx

:00405FE8 031590C04000 add edx, dword ptr [0040C090] satırında 38 eklendiğini ben nasıl anladım.O satırdaki kodun manası şu.40C090 da yazan word u (word iki bytelik değer demek) al edx e ekle.Ben d 40C090 yazdığımda softice da 38 gördüm o yüzden o satırda 38 eklendiğini anladım.Bu kısımda serialin ilk kısmı hesaplanıyor.Biraz ilerledikten sonra şöyle bir kod karşımıza çıkacak

:0040603C 8B8DFCFEFFFF            mov ecx, dword ptr [ebp+FFFFFEFC]
:00406042 3B8DF4FEFFFF            cmp ecx, dword ptr [ebp+FFFFFEF4]
:00406048 7323                    jnb 0040606D ; bütün karakterler çarpıldımı
:0040604A 8B5508                  mov edx, dword ptr [ebp+08]
:0040604D 0395FCFEFFFF            add edx, dword ptr [ebp+FFFFFEFC]
:00406053 0FBE02                  movsx eax, byte ptr [edx] ;isimden tek karakter al
:00406056 0FAF0594C04000          imul eax, dword ptr [0040C094] ;52 ile çarp
:0040605D 8B8DF8FEFFFF            mov ecx, dword ptr [ebp+FFFFFEF8]
:00406063 03C8                    add ecx, eax ;sonucu eax a ekle
:00406065 898DF8FEFFFF            mov dword ptr [ebp+FFFFFEF8], ecx
:0040606B EBC0                    jmp 0040602D

Devam ediyoruz.Bir kaç defa daha F10 dan sonra şuraya geleceğiz.

:004060BF 8B8DFCFEFFFF            mov ecx, dword ptr [ebp+FFFFFEFC]
:004060C5 3B8DF4FEFFFF            cmp ecx, dword ptr [ebp+FFFFFEF4]
:004060CB 7322                    jnb 004060EF ;bütün karakterler toplandımı
:004060CD 8B5508                  mov edx, dword ptr [ebp+08]
:004060D0 0395FCFEFFFF            add edx, dword ptr [ebp+FFFFFEFC]
:004060D6 0FBE02                  movsx eax, byte ptr [edx] ;isimden tek karakter al
:004060D9 030598C04000            add eax, dword ptr [0040C098] ;12 ekle
:004060DF 8B8DF8FEFFFF            mov ecx, dword ptr [ebp+FFFFFEF8]
:004060E5 03C8                    add ecx, eax ;toplamı ecx e yaz
:004060E7 898DF8FEFFFF            mov dword ptr [ebp+FFFFFEF8], ecx
:004060ED EBC1                    jmp 004060B0

Buraya kadar serialin ilk üç kısmı hesaplandı.Bir kaç F10 dan sonra serialin son kısmına geliyoruz.

:00406141 8B8DFCFEFFFF            mov ecx, dword ptr [ebp+FFFFFEFC]
:00406147 3B8DF4FEFFFF            cmp ecx, dword ptr [ebp+FFFFFEF4]
:0040614D 7323                    jnb 00406172
:0040614F 8B5508                  mov edx, dword ptr [ebp+08]
:00406152 0395FCFEFFFF            add edx, dword ptr [ebp+FFFFFEFC]
:00406158 0FBE02                  movsx eax, byte ptr [edx] ;isimden tek karakter al
:0040615B 0FAF059CC04000          imul eax, dword ptr [0040C09C] ;14 ile çarp
:00406162 8B8DF8FEFFFF            mov ecx, dword ptr [ebp+FFFFFEF8]
:00406168 03C8                    add ecx, eax ;toplamı ecx e ekle
:0040616A 898DF8FEFFFF            mov dword ptr [ebp+FFFFFEF8], ecx
:00406170 EBC0                    jmp 00406132

Bütün bu toplamalardan sonra serialimizi artık softice da görebiliriz.Son lstrcatA apisinden sonra d ecx yazın.Softice 'ın data penceresinde 1500-56264-1214-15148 'i göreceksiniz.Bu program için birde keygen kodladım.Keygeni yine assembly dilinde 32 bit apileri kullanarak kodladım.335 satır kod.Heheh.Çok korkutucu gibi gözüküyor fakat öyle değil.Bir kere ben her keygen için 335 satır yazmıyorum.Benim hazır bir keygen taslağım var sadece keygenin hesap kısmını yazıyorum oda genelde 15-20 satır tutuyor.Keygeni assembly de yazmak oldukça kolay çünkü birkere ikiside aynı dil birbirine çevirmeye uğraşmıyorsun.W32dasm da keygenin hesap kısmını alıp bir text dosyasına kopyalıyorum.Gereksiz kodları çıkartıyorum.Eğer bazı değerleri memoryden okuyorsa onları koda ekliyorum(0040615B satırında olduğu gibi).Kodu biraz düzenliyorum.Tada! keygen hazır.Platform sorunu yok heryerde sorunsuz çalışıyor.Keygenin boyutu oldukça düşük.Resim koymazsam 3-5 k kadar.Delphide aynı keygen 300 k.Bu CleanPC zaten 160 k ne kadar gülüç bir şey.Keygen programdan daha büyük.Gördüğünüz gibi assembly de bir şey kodlamak ilk başta çok zor görüksede çok faydaları var.Eğer hiç bir programlama dili bilmiyorsanız ve bir dil öğrenicem diyorsanız.Size önerim assembly ve c öğrenmeniz.Herneyse belki birileri ilgi duyar umuduyla keygeni kaynak kodu ile beraber sayfaya koymaya karar verdim.Kendiniz tekrardan compile etmek isterseniz.Tasm 5.0 paketine ve w32.inc dosyasına ihtiyacınız var.Eğer bu dosyaları bulamazsanız şöyle yapın.Protools'tan patcher kısmından Cogen II'yi download edin.Benim keygenin kaynak kodunu buraya kopyalayın.Eğer overwrite felan derse yes diyerek üstüne yazdırın.Make.exe ye tıkladığınızda yeniden compile ediliecektir.restest.rc ve restest.asm dosyalarını istediğiniz gibi değiştirebilirsiniz.Keygen ve kaynak kodu.Kaynak kodunu daha iyi görebilmeniz için ultra edit ile bakmanızı öneririm.Eğer beni gaza getirecek mail atarsanız bir yazıyı da sadece w32dasm dan kopyalarak nasıl assemblyde keygen kodlamaya ayırabiliriz.

Son Notlar

Bu yazıda yazım yanlışları hatta bilgi hatası olabilir.Eğer bir yanlış bulursanız bana email atın düzeltmeye çalışırım.Bir programı eğer gerçekten kullanıyorsanız, programı satın almayı düşünün.Micro$oft programlarını - bırakın satın almayı - kullanmayı bile düşünmeyin.