Telet v3.18

amois

Program Url: www.hotelugurlu.com/telet/
Program Tipi: Adres Etiket

Araçlar:

 

SoftICE, DeDe

Basit (x)  Orta (x)  Zor ( )  Pro ( )

Başlangıç

Bu yazida size bir programin bircok sekilde crack edilebilecegini anlatmaya calisacagim ve sonunu da Key Generator yazarak baglayacagim.

 
Yazı

 

30 kez calistirma siniri ile geliyor ve Delphi ile yazilmis. DeDe ile yukledikten sonra;

Procedures --> registerp --> Checkregister --> bolumunu incelemeye baslayalim.

:004C3BF3 call 004096C4
:004C3BF8 test al, al
:004C3BFA jne 004C3D60                         <-- Registered
:004C3C00 mov eax, 004C3DCC
:004C3C05 call 004096C4
:004C3C0A test al, al
:004C3C0C jne 004C3C55                         <-- Unregistered
...

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C3C0C(C)
|
:004C3C55 mov edx, 004C3DCC
:004C3C5A lea eax, dword ptr [ebp+FFFFFE34]
...
:004C3C9D call 00402888
:004C3CA2 cmp ebx, 0000001E                    <-- 30 ile check
:004C3CA5 jnl 004C3D3D                         <-- kotu cocuk
:004C3CAB inc ebx                              <-- ebx=ebx+1
...
:004C3CE9 call 004067F8
:004C3CEE call 00402888
:004C3CF3 push 00000000

* Possible String Reference to: -->Telet Adres Etiket programinin demo suresinin bitimine -->
|
:004C3CF5 push 004C3DF4
:004C3CFA lea edx, dword ptr [ebp+FFFFFE2C]
:004C3D00 mov eax, 0000001E                     <-- eax=30
:004C3D05 sub eax, ebx                          <-- eax=30-ebx
:004C3D07 call 00409508
:004C3D0C push dword ptr [ebp+FFFFFE2C]

* Possible String Reference to: --> kullanim kaldi.-->


Artik hersey kolay goruluyor. Patch yapmak icin seceneklerimiz mevcut;


1- 4C3CA2 adresinde ebx degerini 0 yapmak. (hala unregistered)
2- 4C3CAB adresini NOP lamak. (kullanim sayisi hic artmayacak, hala unregistered)
3- 4C3BFA adresinde JUMP yapmak. (registered)

Patch icin 1 veya 2 inci secenegi secersek daima 29 kullanim hakki kaldigini soyleyecek. Menuden "Program kodunu girin" secenegi mevcut. Burada verilen numaraya karsi bir password girmek gerekiyor. Sallama bir password girince;

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004C3785(C), :004C37FF(C), :004C3879(C), :004C38F3(C), :004C396D(C)
|
:004C39EE push 00000000
:004C39F0 mov cx, word ptr [004C3AFC]
:004C39F7 xor edx, edx

* Possible String Reference to: -->Girdiginiz kod gecersizdir.-->
|
:004C39F9 mov eax, 004C3BA4


Girdigimiz kodun gecersiz oldugunu soyleyen cagriya toplam 5 yerden geliyoruz. Bu 5 adresi NOP larsak "Tesekkurler.." bolumune gelecegiz ve program artik registered olacak. Programi degisik sekilde crack etmeye devam ediyoruz. Simdi de, verilen "onay kodu" icin gecerli "program kodu" nu bulalim.

016F:004C3779 MOV EDX,[EBP-01F0]                 <-- [d edx] = ?
016F:004C377F POP EAX                            <-- girdigimiz kodun ilk harfi
016F:004C3780 CALL 00404144                      <-- edx ile eax karsilastiriliyor
016F:004C3785 JNZ 004C39EE                       <-- gecersiz kod


Yukarida acikladigim uzere, gecersiz kod cagrisina 5 yerden gonderiliyoruz. Bu 5 adresin hemen uzerindeki cagri girdigimiz kod ile olmasi gerekeni karsilastiriyor. Olmasi gereken kod ise edx de duruyor ve [d edx] ile gorebiliriz. Bu islemi 5 adres icin yaptigimiz zaman 5 tane harf elde edecegiz. Ornegin;
9257-8696-1372-5552 --> onay kodu icin --> C K P S F --> degerleri olustu.
Son olarak da KeyGen algoritmasini cozmeye calisalim. (Boylelikle Mr_STOP dan firca yemekten kurtulacagimi saniyorum)

016F:004C3751 MOV EDX,00000002                   <-- edx = 2
016F:004C3756 MOV EAX,[EBP-04]                   <-- [d eax] = "9257"
016F:004C3759 CALL 0040423C
016F:004C375E MOV EAX,[EBP-01F4]                 <-- [d eax] = "2"
016F:004C3764 CALL 00409538
016F:004C3769 MOV EDX,EAX                        <-- edx = eax = 2
016F:004C376B ADD EDX,41                         <-- edx = 2+65 = 67 = "C"
016F:004C376E LEA EAX,[EBP-01F0]
016F:004C3774 CALL 00403F5C
016F:004C3779 MOV EDX,[EBP-01F0]                 <-- [d edx] = "C"


Onay kodunun ilk sayisi 9257 ve 4C3751 de edx=2. Onay kodunun soldan edx inci basamagi alinip 4C376B deki sayi (41h = 65) kadar ilave edilerekten ilk harf "C" bulunuyor.

016F:004C37CB MOV EDX,00000003                   <-- edx = 3
016F:004C37D0 MOV EAX,[EBP-04]                   <-- [d eax] = "9257"
016F:004C37D3 CALL 0040423C
016F:004C37D8 MOV EAX,[EBP-0204]                 <-- [d eax] = "5"
016F:004C37DE CALL 00409538
016F:004C37E3 MOV EDX,EAX                        <-- edx = eax = 5
016F:004C37E5 ADD EDX,46                         <-- edx = 5+70 = 75 = "K"
016F:004C37E8 LEA EAX,[EBP-0200]
016F:004C37EE CALL 00403F5C
016F:004C37F3 MOV EDX,[EBP-0200]                 <-- [d edx] = "K"


Onay kodunun yine ilk sayisi 9257 ve 4C37CB de edx=3. Onay kodunun soldan edx inci basamagi alinip 4C37E5 deki sayi (46h = 70) kadar ilave edilerekten ikinci harf "K" olarak bulunuyor. Son olarak 3 uncu harfi aciklayacagim. Gerisini siz bulun artik.

016F:004C3845 MOV EDX,00000001                    <-- edx = 1
016F:004C384A MOV EAX,[EBP-08]                    <-- [d eax] = "8696"
016F:004C384D CALL 0040423C
016F:004C3852 MOV EAX,[EBP-0214]                  <-- [d eax] = "8"
016F:004C3858 CALL 00409538
016F:004C385D MOV EDX,EAX                         <-- edx = eax = 8
016F:004C385F ADD EDX,48                          <-- edx = 8+72 = 80 = "P"
016F:004C3862 LEA EAX,[EBP-0210]
016F:004C3868 CALL 00403F5C
016F:004C386D MOV EDX,[EBP-0210]                  <-- [d edx] = "P"


KeyGen olarak yine AutoLISP kullanacagim.


(DEFUN C:TELET ()
(atoms-family 0)
(setq    onay_kodu (getstring "\nOnay Kodu")
         onay_1 (chr (+ 65 (atoi (substr onay_kodu 2 1))))
         onay_2 (chr (+ 70 (atoi (substr onay_kodu 3 1))))
         onay_3 (chr (+ 72 (atoi (substr onay_kodu 6 1))))
         onay_4 (chr (+ 80 (atoi (substr onay_kodu 12 1))))
         onay_5 (chr (+ 65 (atoi (substr onay_kodu 18 1))))
         program_kodu (strcat onay_1 onay_2 onay_3 onay_4 onay_5))
(princ program_kodu)(princ)
)

 

Son Notlar

Bir programı kullanarak para kazanıyorsanız, programı satın alın.