Gönderen Konu: Lisanssız programların zaman kilidinin kırılması  (Okunma sayısı 1761 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı physico

  • ByKuS
  • *
  • İleti: 2831
  • Rep Gücü : 161
  • Cinsiyet: Bay
  • çokta tıın! =P
    • Profili Görüntüle
Lisanssız programların zaman kilidinin kırılması
« : Aralık 13, 2007, 02:55:53 ÖS »

 :D

ZAMAN KİLİTİ 

İnternette dağıtılan ticari programların koruma işlemlerinde ( kilitlerinde) sık sık DLL terimi kullanılmaktadır. Bu tip programlar kullanılmaya başladığı tarihten itibaren XX gün geçtikten sonra program sahibine ödeme yapılmadan tekrar programın kullanılmasına izin vermez.

Koruma sisteminin gizli düzeni oldukça basittir.

1- Program tarafından bize bir seri numarası verilir.
2- Bizden unlock kodunu girmemizi ister, bu kod # ile hesaplanır.
3- İsim, şirket ve diğer maddeler koruma için geçerli değildir.

Burada bize gerekecek bazı bilgiler :

1- Program her yüklendiğinde değişik bir seri numarası tedarik edilir.
2- Kayıt bilgileri bilgisayarın hard diskinde W95 Registry içinde TSF uzantılı dosyalarda saklanır. Bu bilgiler şifrelenmiş olarak hard diskin bazı bölümlerinde depolanır.

Örneğin “ GeoBoy “ V1.3.1 ( zaman kilitli birçok programdan birisi ) adlı programda “ GeoBoy” kelimesi için kayıt bilgilerini aradım, hard diskin bazı bölgelerinde birçok değişik karakter buldum. Bunlar benim girdiğim bilgilerin şifrelenmiş halidir. Fakat bu şifre kırma çalışmamda daha çok DLL ile ilgilendim. Kırma işlemi bittikten sonra programı tekrar kurmak istersek bu eski kayıtları tamamen silmek zorundayız.

Programı hard diskte kurarsak program çalışacaktır. DLL ‘leri aramak için MS-DOS ortamında DIR/S komutunu yazmamız gerekir. Genellikle zaman bilgimiz programımızın yükleme klasöründe veya WIN/SYSTEM klasörü içinde bulunur.

Şimdi internetten aldığım GeoBoy V 1.3.1 adlı programın zaman kilidini kırmaya çalışalım. Bu program NDG software tarafından yazılmıştır. Program çalıştırıldığı zaman, zaman kilidi penceresini görebiliriz. Bu pencereye isim, şirket, ve unlock kodunu giriyoruz.

Şimdi SoftIce ‘ a girelim.

: TASK

HWND yazalım.

: HWND GEOBOY

Şu an bazı edit kutularını arıyoruz ve bulduklarımız aşağıda gözüküyor.


Handle hQueue SZ Qowner Class Name Window Procedure
.............. ............. .... ............ .................. ...............................
052C(2) 0D52 32 GEOBOY Edit 177F:00000BF4*
0508(2) 0D52 32 GEOBOY Edit 177F:00000BF4*
052C(2) 0D52 32 GEOBOY Static 178F:000052FA
0510(2) 0D52 32 GEOBOY Edit 177F:00000BF4*

3 adet edit referansı buldum. Şimdi ilk olarak BMSGging’i deneyelim.

:BMSG 052c WM_GETTEXT

Şimdi windows 95 kernel’ in içine girdim. BD 00 ile pasif duruma getirdim. Şimdi TL32V20 ve DLL’ ye ulaştım. Her bir CALL veya MOV EAX veya MOV ECX veya LEA EAX veya LEA ECX ‘ den sonra adım adım EAX, ECX, EDI, ESI ‘ yı inceledim. En sonunda girdiğim her bilginin (isim, şirket, unlock kod) kayıtlı olduğu DLL adreslerine ve seri numara (her yüklemede tekrar üretilen) ile doğru unlock kodun bulunduğu adreslere ulaştım.

Dikkat edersek, girdiğimiz unlock kodu (örneğin 121212) EBP-14 içinde kayıtlı iken doğru olanı EBP-28 içinde kayıtlıdır. Şimdi MOV ve LEA’ yı kullanarak yaptığım kırma işlemini inceleyelim.

LEA EAX, [EBP-28]
PUSH EAX
CALL 10001D08
ADD ESP, 04
LEA EAX, [EBP-14]
LEA ECX, [EBP-28]
PUSH EAX
PUSH ECX

Burada önemli nokta doğru kodu bulup yanlış olanıyla yer değiştirilmesidir. LEA EAX, [EBP-14], LEA EAX [EBP-28] ile değiştirildi. Bu işlem ile EAX içindeki doğru kod benim girdiğim sahte kodun yerine taşındı.

Program tekrar çalıştırıldığında unlock kod olarak istediğimiz bir sayı girdiğimizde hata vermiyorsa program kırıldı demektir.