ForumSinsi - 2006 Yılından Beri

ForumSinsi - 2006 Yılından Beri (http://forumsinsi.com/index.php)
-   Yazılım & Donanım (http://forumsinsi.com/forumdisplay.php?f=247)
-   -   Crack Nasıl Yapılır ? - Part-IV (http://forumsinsi.com/showthread.php?t=32246)

RaHaTSiZ 11-28-2007 01:58 PM

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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.