Nüve Forum

Nüve Forum > akademik > Eğitim Fakültesi > Bilgisayar ve Öğretim Teknolojileri Eğitimi Bölümü > Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Bilgisayar ve Öğretim Teknolojileri Eğitimi Bölümü hakkinda Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi ile ilgili bilgiler


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,

Like Tree49Likes

Cevapla

 

LinkBack Seçenekler Stil
  #11  
Alt 28.07.09, 17:55
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


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***8217;ı 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 :

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.


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #12  
Alt 28.07.09, 17:57
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


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

Programın serial***8217;ı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 :

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


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #13  
Alt 28.07.09, 17:58
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

3. TIME TRIAL***8217;LI PROGRAMLARDAN ZAMAN KISITLAMASININ KALDIRILMASI

Süreli programlar, program kodunda kullanım süresinin kısıtlanması sayesinde, belirtilen süre dolduğunda (30 gün, 90 gün) çalışmayan programlardır. Özellikle dergilerin verdiği CD'lerdeki programlar bu şekildedir. Bu tür bir korumanın konulmasındaki amaç, ticaridir ve programın bu süre içinde tanıtılması ve satın alınmasını amaçlar. Burada, zaman kısıtlamasının kaldırılması örnek bir program üzerinde bilinmesi gereken yöntemler ve tüm aşamalarıyla birlikte gösterilmektedir:

3.1. Call Flow Yaklaşımı:

Herhangi bir program çalıştırıldığında, bir seri fonksiyon, prosedür ve açıklamalardan geçer. Call Flow denilen olgu ise bir programın çalıştırılmasından sonra izlediği yolun bir listesi ya da diyagramına verilen addır. Bu yol, programın çalıştırıldığı zamandaki koşullar nedeniyle farklılıklar gösterebilir. Aşağıda verilen 6 basamak incelenmelidir [6] :

1.) GetSystemTime. (Sistem zamanını kontrol eder).
2.) Installed. (Programın ne zaman yüklendiğini kontrol eder).
3.) Expired. (Deneme süresinin bittiğini belirten bir mesajı gösterir).
4.) DaysLeft. ("Programı denemek için % gününüz kaldı" mesajını gösterir).
5.) Halt. (Programdan çıkar).
6.) Main. (Ana program).

Bu prosedürler kullanılarak, Time Trial (zamana bağlı demo) korumalı bir programın asm kodu aşağıdaki gibi olacaktır:

00000001 : Call GetSystemTime.
00000002 : Call Installed.
00000003 : if (GetSystemTime - Installed) eğer 30 günden fazlaysa...
00000004 : Call Expired,
00000005 : Jmp Halt.
00000006 : 30 günden fazla değilse...
00000007 : Call DaysLeft,
00000008 : Jmp Main.

Gerçek bir kodu incelediğimizde işe şuna benzer:

Call 041829B0 (GetSystemTime)
Call 0492832C (Installed)
Cmp Ax,Bx (if koşulu)
JL 04927435 (ax ve bx değerlerine göre Jump ya da No Jump)
Call 04348234 (Expired=deneme süresi sona erdi)
Jmp 0432833C (Halt=programdan çık)
---JL Address---
Call 04583BC0 (Kalan gün mesajı)
Jmp 042392BC (Ana Program)


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #14  
Alt 28.07.09, 18:00
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


Yukarıdaki kod incelenecek olursa, programın çalışma şekli JL emrinden önceki ax ve bx değerlerine dayanmaktadır. Buradaki problem ise büyük bir kodun disassemble edilişinden sonra patchlemek için doğru yeri bulmanın zor olmasıdır, çünkü bu tür kodlarda bir çok cmp / jl veya cmp / jne oluşumları bulunmaktadır.

3.1.1. Yama yapılacak doğru yeri bulmak:

Yukarıdaki kodu kullanarak ortaya 2 farklı program yolu çıkartılabilir. Hala 30 günlük deneme süresi içindeyken, programın takip ettiği yol şuna benzeyecektir:

GetSystemTime
Installed
Cmp ax,bx
JL (Jump)
DaysLeft
Main.

Deneme süresi sona erdiğinde ise kod şuna benzeyecektir:
GetSystemTime
Installed
Cmp ax,bx
JL ( No Jump )
Expired
Halt.

Bu iki listeye bakılırsa, JL komutuna kadar herşeyin aynı olduğu görülür; ama JL de ilk liste atlamayı yaparken 2. liste bizi programın sonuna getirmektedir. JL komutu ax ve bx değerlerine bağlı durumdadır. Zamana bağlı program kilidini kaldırmak içinse yapılması gereken ya ax ve bx in değerlerini değiştirerek (doğru yöntem) sürekli bir deneme süresine sahip olmak ya da JL komutunu Jmp komutu ile değiştirip programın ilk call flow***8217;daki gibi çalışmasını sağlamak olacaktır .

3.1.2. Crack işlemi için ihtiyaç duyulacak dökümanlar:

- Soft-ICE (Symbol Loader ı ile birlikte)
- Bir Hex Editörü. (örn: Ultra Edit)
- Bir Text Editörü. (örn: Notepad)
(Disassembler***8217;a ihtiyaç duyulmamaktadır.)

3.1.3. Crack işleminin aşamaları

Önce, Soft-ICE***8217;la birlikte install edilmiş olan symbol loader yüklenir. Bu görev çubuğundaki klasörden açılabilir. Symbol Loader'daki file menüsüne gidip `open module` a tıklanır. Buradan da kırılmak istenen programın ana çalıştırma dosyasına tıklanır (örn: mirc için mirc32.exe). Bu işlem tamamlandıktan sonra `Module` menüsüne gidilerek "Load Module" a tıklanır. Normalde bu bir hata mesajıyla gelecektir, `Yes` e tıklayıp yüklemeye devam edilir. Şimdi Soft-ICE, Symbol Loader nedeniyle araya girecek ve aşağıdakine benzer birçok satır görüntülenecektir.

FFFF INVALID
FFFF INVALID
FFFF INVALID
FFFF INVALID
FFFF INVALID

Bu bir hata değildir. Soft-ICE, sadece hafızadaki henüz çözemediği bir bölümü göstermektedir. Şimdi Soft-ICE, yapılmak istenen işleme göre ayarlanmalıdır.

__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #15  
Alt 28.07.09, 18:02
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


3.1.3.1. Kod penceresinin kapatılması.


Soft-ICE'ta "wc" yazılır. Bu komut kod penceresini kontrol eder. Kod penceresinin gözükmesi istenmediğinden, bu şekilde kapatılır. Bu aynı zamanda mouse kullanılarak da yapılabilir. Kapatılmak istenen pencerenin üst köşesine mouse ile tıklayıp sürüklenebildiği kadar yukarıya sürüklendiğinde, bu pencere kapanacaktır.

3.1.3.2. GeTSystemTime için breakpoint konulması.

GetSystemTime (O anki tarih ve saati göstermek için kullanılan birçok api komutundan birisidir.) için bir breakpoint konulmalıdır. Bu, komut penceresinde "Bpx GetSystemTime" yazılarak sağlanır. Bu arada, GetSystemTime sadece fonksiyonun adresini belirtir. Fonksiyonun adresi bilinse, "Bpx 004283CD" gibi bir satır da yazılabilirdi. Bu durumda bpx komutuna bir offset de eklenebildiği görülüyor; örn: "Bpx GetSystemTime +4" teki gibi. Bu komut, fonksiyonun başlangıcından 4 offset sonra Soft-ICE***8217;ın devreye gireceğini gösterir.

3.1.3.3. Programın yüklenmeye devam edilmesi.

Soft-ICE'ta breakpoint (BPX GetSystemTime) ayarlandığına göre programın yüklenmesine ve çalışmasına devam etmek için izin verme zamanı geldi. Yapılması gereken CTRL+D tuşlarına basmaktır. Program yüklenmeye ve çalışmaya devam ederken 'GetSystemTime' komutunu işleyecektir. Bu olduğunda, Soft-ICE belirecek ve programı fonksiyonun başında durduracaktır. Komut penceresinde ise 'BPX due to KERNEL32!GetSystemTime' yazısı görülecektir. Burası olayın kaydedilmeye başlanması gereken yerdir.

3.1.3.4. Fonksiyondan çıkılması.

Şimdi 'GetSystemTime' fonksiyonunun başlangıcında bulunuluyor. Bu fonksiyon atlamalıdır ki tüm fonksiyon işlendikten hemen sonra yer alan asm komutuna varılsın.
('GetSystemTime' fonksiyonu Windows \ System dizininde bulunan Kernel32.dll'nin bir parçasıdır). Bu fonksiyon bilgisayarın o anki durumundan bağımsız olarak her zaman aynı komutları işleyecektir, bu yüzden bu komutların kaydedilmesine gerek yoktur. Fonksiyondan hemen sonraki asm komutuna atlamak için yapılması gereken "F11" tuşuna bir kez basmak olacaktır.Bu noktadan sonra yapılacak işlemlerde dikkatli olmak gerekmektedir.

3.1.3.5. Nag ekranına kadar tüm komutların kaydedilmesi.

Bu noktada yapılan herşeyin kaydedilmesi gerekmektedir. Yapılması gereken; `Programı kullanabilmek için % gününüz kaldı` text***8217;ini içeren Nag Ekranı çıkana kadar F10 tuşuna basarak kodun içinde adım adım ilerlemektir. Dikkat edilirse, komut penceresinde işlenen tüm kodun belireceği görülür. Tüm bu bilgiler Soft-ICE Buffer'ında kaydedilmektedir.

3.1.3.6. Log dosyasının kaydedilmesi.

Nag ekranı çıktığında, ilk log dosyasını kaydetmenin zamanı gelmiştir. Yapılması gereken hala yüklü olan Soft-ICE Symbol Loader***8217;a giderek File menüsünden `Save Soft-ICE history as...` e tıklamaktır. Şimdi bu dosya, asa1.txt diye kaydedilecektir. Bu dosya bir text editörle açılacak olursa, komut penceresindeki tüm olanların kaydedilmiş oldukları görülecektir [6].

Bu, ilk ***8220; Call Flow ***8221; dosyasıdır.


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #16  
Alt 28.07.09, 18:03
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

3.1.3.7. Tarihi ileriye alıp tüm işlemlerin tekrarlanması

Şimdi yapılması gereken 2. bir call flow logu hazırlamaktır, ancak bu sefer sistemin tarihi ileriye alınmalıdır ki, "Deneme Süreniz Sona Erdi." mesajı görülebilsin. Bu, programımızın 'GetSystemTime' fonksiyonundan sonra fakat Nag ekranı çıkmadan önce farklı bir yol izlemesine neden olacaktır.

3.1.3.8. İki Log dosyasının karşılaştırılması.

Tüm adımlar tekrarlandıktan ve 2. log dosyası (örn:asa2.txt) kaydedildikten sonra iki log dosyasını karşılaştırmak gerekir. Burada iyi korunulduğu söylenen bir Microsoft programını kullanarak ortaya çıkan 2 tane örnek log dosyası üzerinde açıklama yapılacaktır.

3.1.3.9. İki log dosyasının farklılaştığı ilk noktanın bulunması.

Dikkat edilirse her iki log dosyası da 015F:3000ADC1 adresine kadar aynıdır. İlk dosyada, bu adresteki komut atlama yapmıyor, fakat ikinci dosyada aynı komut atlamayı yaptırıyor. Bu, o noktadaki EAX in değerinin sistem zamanına bağlı olarak aldığı değişiklikten kaynaklanıyor. Aşağıdaki kod satırları incelenmelidir:

LEA EAX,[ESI-01] Bu komut, ESI-01***8217;deki byte***8217;a bakıp değeri EAX***8217;e koyuyor.
CMP EAX,05 Bu komut, EAX***8217;teki değerin 5***8217;e eşit olup olmadığına bakıyor.
JA 3000AE00 Eğer değer 5'ten büyükse 300AE00 adresine atla komutu.

3.1.3.10. Dosyada değişiklikler yapılması.

JA komutunun atlama yapmaması için dosya değiştirilmelidir. Bu bir çok yolla yapılabilir:
Basit ve ucuz olan yol; 015F:3000ADC1 adresindeki `77 3D` değerlerini `90 90` olarak değiştirerek "JA 3000AE00" komutunu nop lamaktır (No Operation). Bu yol çoğu zaman işe yarasa da, doğru yol 3 byte uzunluğunda olan 'LEA EAX,[ESI-01]', yine 3 byte uzunluğunda olan 'CMP EAX,05' ve 2 byte uzunluğunda olan `JA` (3 asm kodu için toplam 8 byte etti) komutlarını; 5 byte uzunluğundaki 'MOV EAX,00000005' ve birer byte uzunluklarındaki 3 `NOP` komutuyla değiştirmek olacaktır. Bu, EAX kaydının herzaman doğru değere sahip olmasını ve aynı sayıda byte'ın değiştirilmiş olmasınısağlayacaktır.

3.1.3.11. Programı yamalamak (Patching olayı).

Artık yapılması gereken, programı istenilen bir Hex editörüne yükleyerek log dosyasında LEA, CMP ve JA komutları için bulunan byte gurubunu arayıp yamamak olacaktır.
Bu örnek için;
'8D46FF83F805773D' yi 'B805000000909090' ile değiştirir.
B805000000 = MOV EAX,05
90 = NOP
"Call Flow Metodu" olarak anılan bu cracking yönteminin, 2 ayrı yol izlenen bir çok olayda da kullanılabilme imkanı vardır.
Örnek :
- CRC rutinlerini kırmak için (Program modifiye edilmiş/edilmemiş) ;
- Dongle korumasının (Dongle plugged in/not plugged in) kaldırılması ;
- Üç deneme ve password soru alanının dışındasın (Sizin bir fonksiyonu sadece belli bir sayıda kullanabilmenizi sağlayan programlar) şeklindeki kısıtlamaların kaldırılması için kullanılır.
__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #17  
Alt 28.07.09, 18:05
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


4. CD KORUMASININ KALDIRILMASI

Programlardaki koruma tiplerinden bir tanesi de, CD sürücüde CD olup olmadığını kontrol eden koruma tipleridir. Bu koruma, genelde oyun programlarında kullanılır. Program bilgisayara install edilmesine(yüklemesine) rağmen, her kullanımda CD ister. Bu tür korumaları kaldırılmasının aşamaları, örnek bir program üzerinde gösterilmektedir:

4.1. Kırılacak Program

Hedef Program: Herhangi bir oyun programı.

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

Kırılımında Kullanılacak Araçlar: W32Dasm ve HIEW

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

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

4.3.1. Programı CD***8217;siz çalıştırarak hata mesajının alınması


Öncelikle, kırılacak oyun programı CD takılmadan çalıştırılır. Bu durumda, oyun çalışmayıp, ekrana hata mesajı veren bir pencere çıkacaktır. Programın kırılmasında bu hata mesajından faydalanılacaktır, bu nedenle hatırlanması gerekmektedir.

4.3.2. W32Dasm programında kırılacak programın çağrılması

Daha sonra, W32Dasm disassembler***8217;ı çalıştırılır. Disassembler ekranı açıldığında, Toolbar üzerinde sol tarafta bulunan ilk küçük butona basılır ya da menülerden - Open File to Disassemble ***8211; bölümüne gelinir. Açılan menüde kırılmak istenen exe program seçilir. Disassemble işlemi yaklaşık 5 dakika sürecektir. Bu işlem tamamlandığında ekrana programın assembly kodu gelecektir.

4.3.3. Assembly kodunun incelenmesi

Bu aşamada yapılacak işlem, String Data References butonuna tıklamaktır. String Data Items adlı bir pencere açılır. Kod aşağı doğru incelenerek oyunun hata mesajı bulunmaya çalışılır. Bulunduğunda, üzerine çift tıklanır.

4.3.4. W32Dasm textine dönülmesi

Sonra Win32Dasm textine dönmek için pencere kapatılır. Görüldüğü gibi CD kontrol rutininde bulunulmaktadır. Burası hata mesajının bulunduğu alandır.


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #18  
Alt 28.07.09, 18:06
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


4.3.5. Call ve jump komutlarının ofsetlerinin alınması

Bu aşamada, kodda bulunan bütün call ve jump komutlarının offsetlerinin not alınması gerekir. (OPBAR***8217;ın mevcut renginin yeşile dönüştüğünden emin olunmalıdır.) @offset***8217;in yanındaki h uzantısız hexadecimal sayıya ihtiyaç vardır.

4.3.6. Hiew programına geçilmesi


Daha sonra HIEW***8217;e geçilir. Bu program içinde aşağı yukarı hareket için kursor tuşları kullanılır. HIEW.exe çalıştırılır. HIEW dizini içinde, exe dosya ve programların bir listesi bulunur.

4.3.7. Hiew içinde kırılacak programın exe***8217;sinde numaranın değiştirilmesi

Hiew dizini içindeki listeden kırılacak oyunun kaydedildiği dizine gelinerek oyunun exe***8217;sine tıklanır. F4***8217; e tıklanarak - Text, Hex ve Decode ***8211; menüsüne gelinir. Bu menülerden Decode***8217;a tıklanır. Kodların offset adreslerinin bulunduğu bir liste gelir. F5***8217; e basılarak Win32Dasm***8217;da not alınan numara buraya yazılır. Sayı yazıldığında bu numaranın bulunduğu satıra gelinir ve kursor komutun üzerine konumlanır. Örneğin, ekrana E92BF9BF74 gibi 5 byte***8217;lık bir sayı gelirse buraya F3***8217;e bastıktan sonra 90-90-90-90-90 yazılır. F10***8217; a basıp çıkıldığında oyunun CD koruması kaldırılmış olur.


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #19  
Alt 28.07.09, 18:07
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


5. HİZMET PROGRAMLARININ TANITILMASI

Bir programın kırılması için, onun disassemble edilebilmiş koduna ihtiyaç vardır. Bu iki şekilde sağlanır. Birincisi, bir disassembler kullanarak programın deadlist(çalışır vaziyette olmayan bir exe'nin içeriği) denilen assembly kodu elde edilebilir. İkinci bir yöntem ise, debugger kullanarak live(canlı, yani o anda çalışan ve cpu(işlemci)'de işlenen assembly kodu) olarak bu programın içeriğinin görüntülenmesidir. Birinci yöntem daha uzun bir süre gerektirecektir, çünkü tüm exe analiz edilip içinde geçen tüm jump ve call komutları için referans açıklamaları oluşturmak gerekir. Diğer yöntem ise daha kolaydır.

Sadece o anda işlenen kodun birkaç satır öncesi ve sonrası dahil olmak üzere görüntülenir. Yeni başlayanlar için disassembler kullanmak daha kolay ve cazip gelebilir, çünkü bu yöntemde assembly kodlarının yanında daha fazla açıklama vardır ve bir altyordamın nerelerden çağrıldığı ve hangi adres ya da değişkenleri kullandığı daha açık bir şekilde görülebilir.Program kırılımında zaman önemli görülüyorsa, debugger kullanmak daha uygundur. Bunun sebebi, disassembler programının exe'yi disassemble etmek için harcadığı zamandan kurtulmuş olunması ve debugger'da breakpoint(durak noktası) konulmasının daha kolay olmasıdır. Debugger kullanılarak daha dinamik breakpoint'ler konulabilir.

Program kırmak için bazen diğer tool'larla birlikte Hex Editör'ler de kullanılır. Hex Editör, programın exe'sini açarak yama yapılmasına ve kodun değiştirilmesine yardımcı olur.

Burada Disassembler, Hex Editör ve Debugger kavramları, en çok kullanılan örnekleri üzerinde incelenmiştir:

5.1. Disassembler

Çalıştırılabilir(exe) programlar hafızada, makine dilinde bulunurlar , bu kodların anlaşılabilmesi için, ASSEMBLY kodlarına çevrilmesi gerekir. Bu iş için kullanılan programlara disassembler denir.

Burada disassembler örneği olarak W32Dasm tanıtılacaktır:

5.1.1. W32Dasm

W32Dasm disassembler***8217;ı http://www/expage.com/page/w32dasm adresinden temin edilebilir. Kurulumu kolaydır. Kurulum tamamlandıktan sonra, W32Dasm ile bir program disassemble edileceğinde, öncelikle W32Dasm programı çalıştırılır. Disassembler editörü gelir ve disassembler menüsü yardımıyla dosya saklandığı yerden çağrılarak işleme başlanır.

5.1.1.1. Özellikleri

· W32Dasm Windows NT 4.0 ile çalıştırılabilir.

· W32Dasm Intel MMX komut setini disassemble edebilmektedir.

· 32 bit debugger***8217;ın, kod yamalama fonksiyonu(komut assembler***8217;ı) vardır.

· CPU kaydedicilerinin ve bayrakların değişiklik göstergeci mevcuttur.

· Referans adresine sağ tuşla çift tıklandığında bütün Call ve Jump Cross Reference adreslerine dallanabilir. Referansa dönmek için F12 kullanılır.


__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
  #20  
Alt 28.07.09, 18:10
Unrealseptic - ait kullanıcı resmi (Avatar)
Ordinaryüs
 
Üyelik tarihi: Feb 2008
Nereden: kocaeli
İletiler: 14.735
Blog Başlıkları: 2
Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!Unrealseptic öyle bir şöhrete sahip ki kendinden önce namı yürüyor!
Standart Cevap: Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi


5.1.1.2. Bir programın disassemble edilmesi

W32Dasm editörü Şekil 5.1.***8217;de görüldüğü gibidir. Disassemble edilecek program, Disassembler menüsünden ***8220;Open File to Disassemble***8221; penceresinden seçilir. Burada örnek olarak AudioWriter programının disassemble edilişi gösterilecektir.

Şekil 5.1. W32Dasm Editöründe disassembler menüsü

Açılan pencereden AudioWriter.exe tıklanarak disassemble edilecek program seçilmiş olur.

Dosya seçilip, Aç tuşuna basıldığında W32Dasm, exe kodu assembly kodlarına çevirmeye başlar. Bu işlem 5 dakika kadar kendi kendine yürütüldükten sonra kodları gösteren bir ekran gelir. Bu ekran Şekil 5.3.'te gösterilmektedir.

W32Dasm ile şifre kırma tekniği, programın açılışında girilen yanlış koda karşı verdiği hata mesajına dayanır. Bu mesaj not edilerek, kod içinde bulunmaya çalışılır. Kodlar yön tuşları yardımıyla aşağıya doğru incelenebilir. Wdasm programında kodlar incelenirken, ekranın en altında bulunan status bar'da o an üzerinde bulunulan satırın ofset adresi yer alır. Programın kırılımında, jump komutları(jnb, jl, jns, jbe, jo, jmp, jne, jb gibi) şifreyi bulma konusunda yardımcı olan noktalardır. Bu komutların adresleri üzerine gelindiğinde, diğer kodlarda Şekil 5.3.'te görülen izleme bandı maviyken yeşile dönmektedir. Şekil 5.4.'te kodların üzerine gelindiğinde status bar'da meydana gelen değişiklik gösterilmiştir.

Disassembler içinde kodlar incelenerek hata mesajının olduğu yer bulunur. Bu mesajın öncesinde çok yakın bir yerde girilen numara ile gerçek seri numarasının karşılaştırılıp dallanıldığı bölüm vardır. Jump(dallanma) komutlarını ve çağrıları(call) çok dikkatli incelemek gerekir. Jump komutu değiştirilerek programın seri numara hata vermesi engellenmiş olur.

5.2. Hex Editör


Hex Editör Programı, programcının heksadesimal yama (patch) editörüdür. Diğer bir deyişle, NotePad gibi Text Editörler***8217;den farklı olarak temiz textler yerine formatsız ikili(binary) dosyalarla çalışan özel editörlerdir [4].

Hex Editör programına örnek olarak, HexEdit tanıtılacaktır:

5.2.1. HexEdit

HexEdit programını kullanabilmek için gerekli olan tek dosya, HE.EXE çalıştırılabilir dosyasıdır. Bu dosya path***8217;te bulunduğunda sorun yoktur. On-line yardım alabilmek için HEXEDIT.HLP dosyası da HE.EXE ile aynı dizine kopyalanmalıdır. Otomatik yedek(backup) ler alabilmek için HEB.BAT ve MAKEBAK.EXE dosyaları path***8217;te bulunmalıdır (HE.EXE ile aynı dizinde olmak zorunda değildir).
__________________

Güzel Sanatlar Fakültesi/Lisesi Yetenek Sınavlarına Hazırlık Kursu
Resim Yağlı Boya Hobi Kursu
Hızlı ve Etkili Okuma Kursu
Çocuklar için Hızlı Okuma Kursu
Çocuklar için Resim Kursu
Diksiyon Kursu
Nefes Teknikleri Kursu
Kişisel Gelişim Kursları
Alıntı ile Cevapla
Cevapla

Tags
amaçlı, eğitim, kırma, program, ıncelenmesi, yöntemlerinin

Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Bütün zaman ayarları WEZ +2 olarak düzenlenmiştir. Şu anki saat: 23:45 .