RaHaTSiZ
|
Crack Nasıl Yapılır ? - Part-IV
Günümüzde bir çok program ‘registration (kayıt olma)’ bug ına sahiptir Bu bug, program çalıştırıldığında geçerli bir kod girilmesini isteyen bir ekran şeklinde belirecektir Doğru kod girilmediğinde program çalışmayacaktır Bu durumda, debugger’lar Code Reversing ( Kod değiştirme) işlemi için kullanılmaktadır [12]
Bir çok Reverse Engineer ( exe kodu değiştiren kişi-cracker ) tarafından tercih edilen debugger olması ve örnek program kırılımında da kullanılması sebebiyle burada Soft-ICE debugger’ından bahsedilmektedir:
5 3 1 Soft-ICE
Soft-ICE, düşük seviyeli (hardware-level) bir yazılım debug etme programıdır Soft-ICE’ın geliştirilme sebepleri şunlardır [13]:
Yüksek seviyeli (software-level) debugger ların gerçekleştiremediği ya da çok yavaş gerçekleştirdiği debug mekanizmalarına (düşük seviyeli breakpointler koyma, memory protection, kilitlenen programlardan çıkma vb ) 80386 sanal makine özelliği sağlar
Güçlü bir hata kontrolü sağamak için yeni bir debugger kullanımını öğrenmek gerekmez Soft-ICE eski debugger larla çalışabilme imkanı verir
Kullanımı kolay bir ekrana sahiptir Ekranı öncelikle diğer debugger larla beraber çalışılabilecek şekilde küçük olarak gelir Tek başına çalıştırılmak istendiğinde ekran büyütülebilir Her iki durumda da komutlar ekrana sığabilecek şekilde düzenlenmiştir
------------------------------------
5 3 1 1 Özellikleri
Soft-ICE programının sağladığı özellikler de şu şekildedir [13]:
• Hafıza okuma/yazma, port okuma/yazma, hafıza düzenlemeleri ve interruptlar esnasında gerçek zamanlı durma noktaları (breakpoint),
• Sembolik ve kaynak seviyeli debugging,
• Eski debugger larla çalışabilme özelliği,
• I/O portlarının ayarlanması, hafızada adres çakışması gibi sorunlar çıkarmadan kurulabilme imkanı,
• Kullanıcıya öğrenim kolaylığı sağlayan dinamik bir Help,
• DOS harici işletim sistemleri ve kendisini boot edebilen programlarda hata ayıklamaya izin veren soft boot (yeniden başlatma) imkanı,
• Diğer programlara ihtiyaç duymadan(stand-alone) kullanılabilme imkanı sağlar
5 3 1 2 Kurulumu ve gerekli ayarlamaların yapılması
Soft-ICE’ın kurulumu esnasında ilk ekran ve register ekranı geçildikten sonra, debugger’ın kurulacağı dizinin belirlenmesini isteyen bir ekran gelecektir Şekil 5 6 ’da bu ekran görüntüsü görülmektedir Burada browse düğmesi yardımıyla debugger’ın kurulması istenen dizin belirlenebilir
Soft-ICE kurulduktan sonra autoexec bat dosyasında şöyle bir satırın olması gerekmektedir:
C:Progra~1NuMegaSoftIc~1winice exe
Burada, kurulan klasör veya sürücü farklı olabilir fakat Soft-ICE’ın mutlaka Windows’tan önce başlaması gerektiğinden, bu satırın winice exe dosyasını göstermesi gerekmektedir Eğer satır yoksa, autoexec bat dosyasına eklenmelidir [5]
Eğer Softice 'ı kullanım amacımıza uygun şekilde ayarlamak için winice dat dosyasının değiştirilmesi gerekmektedir Bu dosya Softice' ın kurulduğu dizindedir Bu dosya herhangi bir text editörü ile açılıp, değiştirilebilir Dosyanın değiştirilmiş hali aşağıda verilmiştir
PENTIUM=ON ;Eğer bilgisayarınız pentium ise bunu On yapın aksi halde Off 'u
Winice dat dosyası
NMI=ON ; Eğer bilgisayar pentium ise On, aksi halde Off olmalıdır
ECHOKEYS=OFF
NOLEDS=OFF
NOPAGE=OFF
SIWVIDRANGE=ON
THREADP=ON
LOWERCASE=OFF
WDMEXPORTS=OFF
MONITOR=0
PHYSMB=64 ;Buradaki değer bilgisayardaki gerçek RAM boyutunu gösterecek şekilde ayarlanır
SYM=1024 ;Kaynak kodundaki sembolleri saklamak için 1Mb lık yer ayırır
HST=256 ;Geçmiş komutları saklamak için 256 K yer ayırır
TRA=8
MACROS=32
DRAWSIZE=2048
;Bundan sonraki yerler tavsiye edilen ayarlardır
;Mevcut sisteme uygun şekilde değiştirilebilir
X; = Softice'tan çık Noktalı virgül enter'a basılması gerektiğini belirtiyor
wl; = Sofice'ta lokal değişkenler penceresini açıp kapatır
code on; = Dissamble edilmiş kodun hexadecimal değerini gösterir
altscr off; = Softice'ın herşey için aynı ekranı kullanmasını sağlar
Lines 57; = Pencerenin boyutunu ayarlar
wc; = Softice kod penceresinin boyutunu belirtir
wd; = Softice hexadecimal penceresinin boyutunu belirtir
wr; = Register(kaydedici) ları pencerenin tepesinde gösterir
faults off; = Windows'un çökmesi halinde Softice'ın çalışmasını engeller
INIT="X;"
INIT="wl;code on; altscr off; lines 57; wc 32; wd 8; wr; faults off;"
F1="h;" ;Bu ayarlar fonksiyon tuşlarını tanımlar
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;" ; F10 (Kod içinde adım adım dolaşma) kırarken çok kullanılır
F11="^G @SS:ESP;" ;F11 Call (çağrı) dan program rutinine dönülmesini sağlar
F12="^p ret;"
SF3="^format;"
CF8="^XT;"
CF9="TRACE OFF;"
CF10="^XP;"
CF11="SHOW B;"
CF12="TRACE B;"
AF1="^wr;"
AF2="^wd;"
AF3="^wc;"
AF4="^ww;"
AF5="CLS;"
AF8="^XT R;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="code on; altscr off; lines 57; wc 32; wd 8; wr; wl; ww 2; faults off"
CF2="^wr;^wd;^wc;"
; WINICE DAT
; (SIW95WINICE DAT)
; for use with SoftICE Version 3 2 (Windows 95)
; 14 July 1997
; Path, Soft-Ice'ın kurulduğu mevcut dizin ve dosya ile değiştirilmelidir
EXP=c:windowssystemkernel32 dll ;Buradaki satırlar Soft-ICE 'ın otomatik olarak
EXP=c:windowssystemuser32 dll ;yükleyeceği dll'leri gösterir Hangi
EXP=c:windowssystemgdi32 dll ;rutinlerin program tarafından kullanıldığını
EXP=c:windowssystemcomdlg32 dll ;bildirir Genelde bir çok program bu dll'leri
EXP=c:windowssystemshell32 dll ; kullanır Bu yüzden bu dll'lerin Softice EXP=c:windowssystemshell232 dll ; tarafından yüklenmesi gerekmektedir
Winice dat 'a yapılan her değişikliğin etkili olabilmesi için Windows'un yeniden başlatılması gerekir Mevcut Winice dat dosyasında bu değişiklikler gerçekleştirilerek Soft-ICE'ın kullanım amacına uygun şekilde çalışması sağlanmış olur [5]
Soft-ICE'ın kullanımında yaygın bir sıkıntı da, debugger'ın istenilen şekilde başlatılması için autoexec bat dosyasının değiştirilmesidir Soft-ICE'ın Windows'la birlikte mi yoksa istenildiği zaman mı başlatılacağını belirlemek için, autoexec bat ve config sys dosyaları aşağıda verilen şekilde değiştirilebilir Soft-ICE'ın Windows'la birlikte yüklenmesinin dezavantajı, her an aktif olması ve bizim isteğimiz dışında da açılabilmesidir Gerçekleştirilen değişiklikler sayesinde, Windows her başlatıldığında bilgisayarın nasıl açılması gerektiğini soracaktır [5]
Bu satırlar autoexec bat ve config sys dosyalarının sonuna eklenmelidir Dosyanın başına eklendiğinde sorun çıkarır [4,5]
Autoexec bat dosya örneği
Rem -----Buradan itibaren kopyalanır-------
goto %config%
REM Soft-ICE'ı başlat - softice in kurulu oldugu yere dikkat edilmelidir
:SICE
C:PROGRA~1NUMEGASOFTIC~1WINICE EXE
REM Soft-ICE olmadan baslat
:NORM
Rem ----Buradan kesilir------
Config sys dosya örneği
Rem -----Buradan itibaren kopyalanır-------
REM Menüyü olustur
[MENU]
MENUITEM NORM,Windows 98
MENUITEM SICE,SoftICE ile Windows 98
MENUDEFAULT NORM,5
[NORM]
[SICE] Rem ----Buradan kesilir-----
5 3 1 3 Kullanımı
Kurulum tamamlandıktan ve gerekli düzenlemeler gerçekleştirildikten sonra, programın debug edilmesine geçilir Soft-ICE ile debug edilecek program açıldıktan sonra, Ctrl+D yardımı ile Soft-ICE editörüne geçilir Program, breakpointler ile durdurulur En fazla kullanılan breakpointler, bpx getwindowtexta ve bpx getdlgitemtexta’dır Bu fonksiyonların sonundaki a karakterleri, 32 bit programlar için kullanılacağını göstermektedir Breakpoint konulduktan sonra fonksiyon tuşları yardımıyla kodlar incelenip, düzeltmeler yapılabilir [13]
Bazı durumlarda, bpx getwindowtexta breakpointi konduğunda hata mesajı alınabilir Bunun sebebi, Soft-ICE'ın bu API'yi tanımamasıdır Bu API'nin tanıtılması şu şekilde olacaktır [4]:
Soft-ICE programı ilk kurulduğunda,
1 Symbol loader'a girip Edit menüsünden 'Soft-ICE initilization settings' yazan bölüme 'x: lines 40; wd; wr; wc 20; code on;' yazılır Buradaki 40 ve 20 rakamları kullanılan ekran çözünürlüğüne göre ayarlanabilir 'Code on' komutu assembly komutlarının yanında heksadesimal olarak makine kodlarının da yer almasını sağlayarak, patch hazırlanırken yardımcı olacaktır
2 Winice dat dosyasını not defteri ile açarak, başında EXP ibaresi olan tüm satırların önündeki noktalı virgül ( işaretleri kaldırılmalıdır Bu durumda Soft-ICE, Windows API'lerinden haberdar olacaktır Ayrıca Soft-ICE'ta iken başı hatırlanan bir API'yi bulmak için 'exp' komutu kullanılabilir Mesela, 'exp getwindow' komutu ile getwindow ile başlayan tüm API'ler sıralanacaktır
Soft-ICE'ın kurulmasına rağmen etkili bir şekilde kullanmayı öğrenmek, zaman ve uygulama gerektirir Soft-ICE'a geçmek için daha önce de söylendiği üzere, Ctrl+D tuşları kullanılır Bu tuşlara basılması bütün programları durdurarak Soft-ICE ekranına geçilmesini sağlar Softice'a geçildiğinde birkaç pencere ve değişik bilgiler görülür Alttaki pencere komutların yazıldığı input penceresidir Soft-ICE'ta kullanılan bazı komutların görevleri [13];
x = Soft-ICE'tan çıkar
bpx = Soft-ICE' a belli API kodlarında dur emri verir
bpm = Soft-ICE' a belli bellek bölgelerinde dur emri verir
bpr = Belli hafıza bölegelerinde dur emri verir
d = Belleği ve yazılı olan değerleri gösterir
e = Bellekteki değerleri değiştirir
cls = Input penceresini temizler
s 0 l ffffffff 'text' = Hafızada text yazısını arar
Bu komutlar, program içinde aşağıdaki şekilde kullanılır:
bpx getdlgitemtexta ;Soft-ICE' a bu API kodunu görünce dur komutunu verir
bpm 0157:0009AC2D ;Soft-ICE' a verilen bellek adresine erişildiğinde dur komutunu verir
bpr 0157:00643345 0157:00643345 ;İki adres arasında bir adrese erişildiği zaman dur komutunu verir
d 00456787 ; Verilen bellek adresinde tutulan değerleri gösterir
d eax ; eax register(kaydedici) ının belirttiği yerdeki belleği gösterir
Input penceresinde kullanılan komutların görevleri de aşağıda verilmiştir:
bl = O andaki breakpointleri gösterir ((00) BPX #0028:09876543 C=01 gibi)
bc = O anda konulmuş breakpoint'leri temizler (bc 1 bir nolu breakpointi siler )
bd = Breakpoint'i kapatır (bd 0 0 nolu breakpointi kapatır)
be = Breakpoint'i açar (be 0, kapatılan 0 nolu breakpointi açar)
? = Belli bir register veya sayının değerini gösterir ( ? 23 # gibi)
Soft-ICE’ın kullanımı için gerekli fonksiyon tuşlarının görevleri de aşağıdaki şekildedir:
F1 : Genel Help’i görüntüler "^H;"
F2 : Register penceresini getirir "^WR;"
F3 : Mevcut kod modunu değiştirir "^SRC;"
F4 : Ekranı yeniler "^RS;"
F5 : Programa dönüşü sağlar "^X;"
F6 : Kursörü komut ve kod pencereleri arasına konumlandırır "^EC;"
F7 : Kursörün bulunduğu satıra gider "^HERE;"
F8 : Satır satır çalıştırma "^T;"
F9 : Kursörün bulunduğu satıra durma noktası(breakpoint) koyar "^BPX;"
F10 : Program basamakları "^P;"
F11 : Dönüş adresine gider "^G @SS:SP;"
F12 : Soft-ICE’ın versiyon numarasını görüntüler "^VER;"
Soft-ICE' la program kırma tekniği, komutlar ve fonksiyon tuşları yardımıyla kodlar incelenerek kırılacak programın gerçek seri numarasının bulunmaya çalışılmasına dayanır
SONUÇ
Bir programın kanunlar dahilinde ve tam versiyon olarak kullanılabilmesi için satın alınması gerekir Günümüzde Internet'te ya da bilgisayar dergileri tarafından verilen CD'lerde shareware veya freeware programlara erişmek mümkündür Bunlar üretici firmaların programları tanıtmak ve alınmasını sağlamak için başvurdukları bir yöntemdir Shareware programlar, belli bir süre sonunda ya belirli bir miktar ücret ödeyip bu yazılımın satın alınmasını ya da kullanıcının bilgisayarından silinmesini talep etmektedirler Bunun yanında freeware programlar için para ödenmesi gerekmemektedir Artık bilgisayar programlarının maddi açıdan alınmasının zorlaşması, her yeni çıkan programı almanın imkansız olması nedeniyle shareware programların da koruma kodları kaldırılarak para ödenmeden kullanımı sağlanabilmektedir Günümüzde piyasaya yeni çıkan programların birkaç gün içerisinde kırılıp, crack patch’inin internete konulduğu görülmektedir Fakat bu işlem, devletler hukukları altında korunan programcının hakları ve telif ücretleri açısından illegal bir durumdur
Program kırabilmek için programcılıktan ve Assembly dili komutlarından biraz anlamak gerekir Ayrıca program kırılımı sırasında kullanılan Disassembler, Hex Editör ve Debugger gibi programların kullanımını öğrenmek gerekmektedir Bu tezde, kırılıma yardımcı programların tanıtımı yapılmış, ayrıca programlardan şifre, fonksiyon, zaman ve CD korumalarının kaldırılma aşamaları gösterilmiştir
Program kırmaktaki tek amaç, programa bedavadan sahip olmak olmamalıdır Çünkü, program mutlaka daha önce başka biri tarafından kırılmıştır ve crack'ini ya da full versiyonunu internetten bulmak mümkündür Asıl amaç, kullanılan programların bizden habersiz neler yaptıklarını bilmek ve herşeyin kontrolümüz altında olmasını sağlamak olmalıdır
C:Progra~1NuMegaSoftIc~1winice exe
Burada, kurulan klasör veya sürücü farklı olabilir fakat Soft-ICE’ın mutlaka Windows tan önce başlaması gerektiğinden, bu satırın winice exe dosyasını göstermesi gerekmektedir Eğer bu satır yoksa, autoexec bat dosyasına eklenmelidi
Soft-ICE kurulduktan sonra autoexec bat dosyasında şöyle bir satırın olması gerekmektedir:
C:Progra~1NuMegaSoftIc~1winice exe
Burada, kurulan klasör veya sürücü farklı olabilir fakat Soft-ICE’ın mutlaka Windows tan önce başlaması gerektiğinden, bu satırın winice exe dosyasını göst
Soft-ICE kurulduktan sonra autoexec bat dosyasında şöyle bir satırın olması gerek
C:Progra~1NuMegaSoftIc~1winice exe
Burada, kurulan klasör veya sürücü farklı olabilir fakat Soft-ICE’ın mutlaka Windows tan önce başlaması gerektiğinden, bu satırın winice exe dosyasını göstermesi gerekmektedir
|