Thursday, April 12, 2007

Hayatımın ilk cracking denemesi

Bugün Georgian Legend DVD'sindeki sevdiğim müziklerden biri olan Şımt'ı mp3 olarak kaydetmek istedim. DVD'den mp3 elde eden programları inceledim ve bunlardan birini indirdim. Program deneme modundayken parçanın yarısını oluşturuyor. Dedim parasını verip aliim, ama para ödeme sayfası garibime gidince tırstım. Canım sıkkın yarım Şımt.mp3'ümü dinlerken aklıma beş-altı yıl önce cracking (halk arasında heking diye bilinir) ile ilgilendiğim geldi. Dedim aceba crack edebilir miyim programı.

Tabi herşeyi unutmuş olduğumdan ufak bir zihin tazeleme işim oldu. Sonra hatırladığım yarım yamalak bilgi ile işe koyulmaya karar verdim. Program da biraz amatörce hazırlanmış görüntüsü verdiğinden cesaretim arttı, herhalde gelişmiş bir koruma yöntemi kullanmıyorlardır diye düşündüm. Yaklaşık iki saatlik okuma, deneme, yanılma silsilesinden sonra programı aslanlar gibi çalışır hale getirdim.

Uyguladığım yöntem dead listing (static analysis) diye geçiyor. Bu yöntemle crack ettiğiniz program ne serial verirseniz verin kabul ediyor. İşin özü exe'yi disassemblerle açmak, seri numarası kontrolü yapan kod dallanmalarını (if conditions) bulmak ve sonra da bunları hexadecimal editör ile etkisiz hale getirmek (patch etmek).

exetools sayfasından W32Dasm ve Hview yazılımlarını indirdim. Exe'yi W32Dasm ile açtım, seri numarası kontrol kodlarını bulmak için seri numarası girdiğimde verdiği hata mesajı stringlerini aradım. Kodu incelediğimde programın hatalı numara girilince hata rutinini çalıştırdığını, numara doğru ise devam ettiğini gördüm. Yapmam gereken sadece hata rutinine girmeyi sağlayan dallanmayı etkisizleştirmekti. Assembly'de dallanmalar jne (jump if not equal) ile yapılıyordu ve iki yerde vardı.



Hview'de decode modunda bu jne'leri je (jump if equal) yaptım (85'leri 84 yaptım) ve, voila, program girdiğim seri numarasını kontrol etmeyi bırakıp bana hoşgeldin dedi.


İşin ilginç yanı şu anki haliyle programa geçerli bir seri numarası verirseniz kabul etmez çünkü kabul kodlarını tam tersine çevirdim! Yani mutlaka geçersiz bir numara vermelisiniz :P

İşte böyle. Aslında cracking aleminde lafı edilmez süper basit bir işlem ama beni mutlu etti. İlk kez başkasının bir programının tersine mühendisliğini yapıp benim istediğim gibi çalışan bir exe elde etmiş oldum. Tabi bunda asıl pay programa hiçbir özel güvenlik tedbiri koymayan gariban yazılımcıların. Programı biraz inceleyeceğim, kullanmaya karar verirsem mutlaka satın alırım. Beni biliyorsunuz, bedavacılardan tiksinirim.

2 comments:

Nart Bedin Atalay said...

Piravo, piraavo..

Hocam, suncagiz yazdiginla cracking in temelde nasil calistigini tek okumada anlamis bulunuyorum. Yasasin blog, yasasin Turkce.

taktirlerimi sunarim

Rahmi Lale said...

Samilziim,
SAGE'de 'fazla çalışma ücretinin' kesilmiş olması sende bir zaman buhranına mı yol açtı?
Bir ara bu tür bir olay için LoopRecoder diye bir program kullanmıştım. Kaynaktan bagımsız her türlü sesi kayıt edebiliyorsun; kırmaya, dökmeye gerek kalmıyor ;)
Selametle...