Cracking – II

1.      PROGRAMLARIN DENEME SÜRÜMLERİNDEN FONKSİYON KISITLAMASININ KALDIRILMASI 


Program koruma tiplerinden bir tanesi de, programın bazı fonksiyonlarının kısıtlanmasına dayanır. Satın alınmadığı müddetçe bu tür programların en önemli fonksiyonları kullanılamaz. Bu tür korumaya bir örnek verilecek olursa, Acrobat Reader programının freeware(ücretsiz) sürümleri kolaylıkla bulunmasına rağmen, programın bünyesinde bulunan Acrobat Writer kısmına ulaşmak için programın satın alınması gerekir. Aşağıda da bu koruma tipine örnek teşkil edecek şekilde, internetten sayfa ve site indirilmesine yardımcı olan Teleport programındaki kısıtlamanın kaldırılması aşamalar halinde gösterilmiştir:


2.1. Kırılacak Program


Hedef Program                               :  Teleport Pro


            Program açıldığında Serial Number(seri numarası) sormak gibi rahatsız edici herhangi bir ekran gelmemektedir ancak bir siteyi indirirken en fazla elli dosyanın indirilmesine izin vermektedir.


2.2. Kırılımı Gerçekleştirecek Program


Kırılımında Kullanılacak Araçlar   :  Soft-ICE


Kırılımda kullanılan Soft-ICE programı, en çok kullanılan debugger’dır. Debugger’lar programların breakpointler (durma noktaları) ile durdurularak kodlarının incelenmesini ve hataların düzeltilmesini sağlarlar.


2.3. Programın Kırılım Aşamaları


            Programın kırılımı, sekiz aşamada gerçekleşmiştir. Bu aşamalar:


2.3.1. Programın register bilgilerinin öğrenilmesi


İlk olarak yapılacak iş, help dosyasında register kısmını okumaktır. Bu, programın nasıl kayıtlı hale getirileceği konusunda az da olsa bir bilgi verecektir. Klasik olarak, help kısmında about ya da register diye bir kısım olup olmadığına bakılır. Bu program itibariyle register diye bir kısım olduğu görülür. Bu kısma tıkladığında ekrana Name, Company ve Code dan oluşan bir pencere gelir. Makineye daha önceden kurulmuş olan Soft-ICE Programına girilir. Program, breakpointler ile durdurulur. En fazla kullanılan breakpointler, bpxgetwindowtexta ve bpxgetdlgitemtexta’dır. Bu fonksiyonların sonundaki a karakterleri, 32 bit programlar için kullanılacağını göstermektedir [4].


2.3.2. Register ekranında istenen bölümlere herhangi bir değer girilmesi


 Register ekranında, name kısmına Hilal Akarkamçı, company kısmına Gazi Universitesi,  Serial kısmına da 7777777 diye herhangi bir serial yazılsın.


2.3.3. Soft-ICE’ta breakpoint konulması


 Enter tuşuna basılmadan önce Ctrl+D ile Soft-ICE ‘a geçip breakpoint konulmalıdır. Soft-ICE ta iken bpx getwindowtexta yazıp entere basılır ve sonra x ile yeniden Windows’a dönülür [4].


2.3.4. Girilen bilgilerin onaylanması


Enter’a basıldığında yeniden Soft-ICE ekranına gelindiği görülür, çünkü program getwindowtexta ile yazılanları okumaya çalışır ve Soft-ICE da bu komutu görünce durur[4].


2.3.5. Girilen değerlerin okutulması


Kayıt ekranında üç tane girdi olduğu için program bunları teker teker okuyacak ve kendi gerçek seri numarası ile verilen seri numarasını karşılaştıracaktır. Bu nedenle, Soft-ICE’ta iken x yazılıp enter’a basılacaktır. Sonra bir kez daha x yazıp entere basılacak, böylelikle girilen isim ve şirket kısımları programa okutulmuş olur. Bundan sonra program artık registerlar aracılığıyla bu bilgileri değişik hesaplardan geçirecek ve kodu hesaplayarak sonradan girilen kod ile karşılaştıracaktır. Soft-ICE’ta şu şekilde bir ekran çıkacaktır [4] :


USER32!GetWindowTextA
BFF51804 B1B2 MOV CL,B2
BFF51806 55 PUSH EBP


2.3.6. Gerçek seri numarasının bulunması


Burada iken bc 0 ile koyulan breakpoint temizlenir. Şimdi bu kod takip edilerek gerçek serial bulunmaya çalışılır. Kodları adım adım izlemek için F10 tuşuna basılır. Alt tarafta o an hangi exe veya dll’nin çalıştığı yazmaktadır. Hala Teleport Pro verilen bilgileri okuduğundan şu noktaya gelinceye kadar F10 a basılır [4].


* Reference To: USER32.GetWindowTextA, Ord:013Fh
:0044A950  FF15C0434600   Call dword ptr [004643C0]
:0044A956  8B4D10         mov ecx, dword ptr [ebp+10]
:0044A959  6AFF           push FFFFFFFF
:0044A95B E83793FFFF      Call 00443C97
:0044A960  EB0B           jmp 0044A96D


00444A95B deki çağrı (call) nın  F8 ile içine girilebilir ancak çağrıların ardından conditional jump yani “je” “jne” gibi kodlar yoksa bu çağrılar F10 ile izlenebilir. F10 ile kod  izlendiğinde şu noktaya gelinir [4] :


……………..
 0042472D C6415C01        mov [ecx+5C], 01
:00424731 E958FFFFFF      jmp 0042468E
:00424736 B8981F4600      mov eax, 00461F98
:0042473B E8B0610000      call 0042A8F0
:00424740 51              push ecx
:00424741 51              push ecx
:00424742 53              push ebx
:00424743 56              push esi
:00424744 57              push edi
:00424745 8BF9            mov edi, ecx
:00424747 6A01            push 00000001
:00424749 E8F1DE0100      call 0044263F
:0042474E 33DB            xor ebx, ebx
:00424750 6A0A            push 0000000A
:00424752 53              push ebx
:00424753 FFB7DD000000    push dword ptr [edi+000000DD]            
;Seriali edi+dd ye tek tek yaz
:00424759 E852700000      call 0042B7B0
:0042475E 8B0D9C1A4800    mov ecx, dword ptr [00481A9C]
:00424764 83C40C          add esp, 0000000C
:00424767 8945EC          mov dword ptr [ebp-14], eax
:0042476A 3899CD020000    cmp byte ptr [ecx+000002CD], bl
:00424770 0F841B020000    je 00424991

…..


Bu noktada yani xx:00424753 de iken d edi+dd yazılırsa data penceresinde  EC 25 A3 00 görülür. Eğer d A325EC  yazılırsa data penceresinde sonradan girilen ‘7777777′ şeklindeki kod görülür. Dword ptr, programın verilen Serial’ı byte byte alarak belirtilen belleğe yerleştirmesi anlamındadır. Bu yüzden testen işlem yapılarak girilen koda ulaşıldı. Kod izlenmeye devam edildiğinde şu noktaya gelinir [4] :


….
* Possible StringData Ref from Data Obj ->”User”

                                 
:00424778 BED0B74700         mov esi, 0047B7D0
:0042477D 0F840B010000       je 0042488E
:00424783 FFB7D5000000       push dword ptr [edi+000000D5]              
;Kullanıcı ismini belleğe yerleştir
:00424789 E894090000         call 00425122
:0042478E 3945EC             cmp dword ptr [ebp-14]            ; Eax ile gerçek kodu karşılaştır
:00424791 59                pop ecx
:00424792 753A              jne 004247CE                        
;Kod doğru değil
:00424794 8D4DF0        lea ecx, dword ptr[ebp-10]
;Kod doğru 
:00424797 E8B2EF0100        call 0044374E


* Possible Reference to String Resource ID=07076: “Thank you!  Your copy of Teleport Pro is now registered”,
2.3.7. Programın register edilmesi


         Bu noktada yapılması gereken tek işlem :0042478E yi F10 ile geçtikten sonra (yani program o bölgeyi çalıştırdıktan sonra) ? eax yazmaktır. Bu yazıldığında 1458171568   görülür. Bu, gerçek seri numarasıdır. Soft-ICE tan çıkıldıktan sonra,  Name= Hilal Akarkamçı Company =Gazi Universitesi Serial = 1458171568 yazıp program kayıtlanır.
Bu işlemlerin gerçekleştirilmesi için Soft-ICE konusunda bilgi sahibi olmak gerekmektedir. 


2.3.8. Programın seri numarasının hesaplanışı


Programın serial’ının nasıl hesaplandığını görmek için 00424789 deki call a F8 ile girilebilir. Hesaplama şu şekilde gerçekleşmektedir. İlk başta isim en az 5 karakter mi diye bakılıp, daha sonra boydan 4 çıkartılır ve 4. karakterden sonraki her karakter 5DFEE4A4H ile xor edilip toplanır. Assembly de yazılacak olursa, kod şu şekilde olur [4,5] :


   mov    edi, offset szName                     ; İsmi edi ye yolla


       push   edi


       call   lstrlen                                           ; Listele


   cmp    eax, 5                                 ; 5 ten düşükse işlemi durdur.


   jl     ExitProc0


       add    eax, -4                                                     ; 4 çıkart


        xor    ebx, ebx                                  ; ebx  i sıfırla


        lea    edi, szName                                      ; İsmi al


        mov    esi, 5DFEE4A4H                             ; Numarayı esi ye yolla


 


Hesapla:


   cmp    ebx, eax                                        ; Sona gelindi mi ?


        jae    Goster


        xor    esi, [edi+ebx]                       ; Değilse Xor la


        inc    ebx                                                ; Ebx i artır


        jmp    Hesapla


 


Goster:


         mov    eax,esi                                            ; Serial eax ‘ta


 


 


 


 


 


belgesi-608

Belgeci , 2422 belge yazmış

Cevap Gönderin