|
![]() ![]() |
|
Konu Araçları |
amaçlı, eğitim, incelenmesi, kırma, program, yöntemlerinin |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#16 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi3 ![]() ![]() ![]() ![]() Şimdi yapılması gereken 2 ![]() ![]() ![]() ![]() 3 ![]() ![]() ![]() ![]() ![]() Tüm adımlar tekrarlandıktan ve 2 ![]() ![]() ![]() ![]() 3 ![]() ![]() ![]() ![]() ![]() Dikkat edilirse her iki log dosyası da 015F:3000ADC1 adresine kadar aynıdır ![]() ![]() ![]() LEA EAX,[ESI-01] Bu komut, ESI-01’deki byte’a bakıp değeri EAX’e koyuyor ![]() CMP EAX,05 Bu komut, EAX’teki değerin 5’e eşit olup olmadığına bakıyor ![]() JA 3000AE00 Eğer değer 5'ten büyükse 300AE00 adresine atla komutu ![]() 3 ![]() ![]() ![]() ![]() ![]() JA komutunun atlama yapmaması için dosya değiştirilmelidir ![]() 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) ![]() ![]() ![]() 3 ![]() ![]() ![]() ![]() ![]() 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 ![]()
__________________
Arkadaşlar, efendiler ve ey millet, iyi biliniz ki, Türkiye Cumhuriyeti şeyhler, dervişler, müritler, meczuplar memleketi olamaz
![]() ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#17 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi4 ![]() Programlardaki koruma tiplerinden bir tanesi de, CD sürücüde CD olup olmadığını kontrol eden koruma tipleridir ![]() ![]() ![]() 4 ![]() ![]() Hedef Program: Herhangi bir oyun programı ![]() 4 ![]() ![]() Kırılımında Kullanılacak Araçlar: W32Dasm ve HIEW 4 ![]() ![]() Programın kırılımı, yedi aşamada gerçekleşmiştir ![]() 4 ![]() ![]() ![]() Öncelikle, kırılacak oyun programı CD takılmadan çalıştırılır ![]() ![]() ![]() 4 ![]() ![]() ![]() Daha sonra, W32Dasm disassembler’ı çalıştırılır ![]() ![]() ![]() ![]() ![]() 4 ![]() ![]() ![]() Bu aşamada yapılacak işlem, String Data References butonuna tıklamaktır ![]() ![]() ![]() ![]() 4 ![]() ![]() ![]() Sonra Win32Dasm textine dönmek için pencere kapatılır ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#18 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi4 ![]() ![]() ![]() Bu aşamada, kodda bulunan bütün call ve jump komutlarının offsetlerinin not alınması gerekir ![]() ![]() ![]() 4 ![]() ![]() ![]() Daha sonra HIEW’e geçilir ![]() ![]() ![]() ![]() ![]() 4 ![]() ![]() ![]() Hiew dizini içindeki listeden kırılacak oyunun kaydedildiği dizine gelinerek oyunun exe’sine tıklanır ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#19 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi5 ![]() Bir programın kırılması için, onun disassemble edilebilmiş koduna ihtiyaç vardır ![]() ![]() ![]() ![]() ![]() ![]() Sadece o anda işlenen kodun birkaç satır öncesi ve sonrası dahil olmak üzere görüntülenir ![]() ![]() ![]() ![]() ![]() Program kırmak için bazen diğer tool'larla birlikte Hex Editör'ler de kullanılır ![]() ![]() Burada Disassembler, Hex Editör ve Debugger kavramları, en çok kullanılan örnekleri üzerinde incelenmiştir: 5 ![]() ![]() Çalıştırılabilir(exe) programlar hafızada, makine dilinde bulunurlar , bu kodların anlaşılabilmesi için, ASSEMBLY kodlarına çevrilmesi gerekir ![]() ![]() Burada disassembler örneği olarak W32Dasm tanıtılacaktır: 5 ![]() ![]() ![]() W32Dasm disassembler’ı http://www/expage ![]() ![]() ![]() ![]() ![]() 5 ![]() ![]() ![]() ![]() · W32Dasm Windows NT 4 ![]() ![]() · W32Dasm Intel MMX komut setini disassemble edebilmektedir ![]() · 32 bit debugger’ın, kod yamalama fonksiyonu(komut assembler’ı) 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 ![]() ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#20 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi5 ![]() ![]() ![]() ![]() W32Dasm editörü Şekil 5 ![]() ![]() ![]() ![]() ![]() Şekil 5 ![]() ![]() Açılan pencereden AudioWriter ![]() ![]() Dosya seçilip, Aç tuşuna basıldığında W32Dasm, exe kodu assembly kodlarına çevirmeye başlar ![]() ![]() ![]() ![]() ![]() W32Dasm ile şifre kırma tekniği, programın açılışında girilen yanlış koda karşı verdiği hata mesajına dayanır ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Disassembler içinde kodlar incelenerek hata mesajının olduğu yer bulunur ![]() ![]() ![]() ![]() 5 ![]() ![]() Hex Editör Programı, programcının heksadesimal yama (patch) editörüdür ![]() ![]() Hex Editör programına örnek olarak, HexEdit tanıtılacaktır: 5 ![]() ![]() ![]() HexEdit programını kullanabilmek için gerekli olan tek dosya, HE ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#21 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi5 5![]() ![]() ![]() ![]() · Birlikte çalışacağı dosyalarda büyüklük sınırlaması yoktur ![]() · Dosya üzerinde yapılan bütün değişiklikleri kaydeder ![]() ![]() · Güçlü bir makinada, dosyaları tarama hızı, 10 sn/MB oranındadır ![]() · Hızlı ve esnek bir ‘Bul/ Bul ve Değiştir’ özelliği vardır ![]() ![]() · Dosyanın her byte(F2) ve sektörüne(SF2) sıradan erişimli atlama(jump) imkanı sağlar ![]() · Karakter stringleri ve heksadesimal serilerde arama yapar ![]() · 15000 tarama eşlemesine kadar saklama imkanı vardır ![]() · Desimal, heksadesimal ve ikili(binary) sistemler arası dönüşüm yapabilir ![]() · Tanınmayan karakterler için ASCII tablosu getirebilir (Alt-A) ![]() · İkili dosyalarda sıradan erişimli stringler için tarama yapabilir (Alt-T) ![]() 5 ![]() ![]() ![]() ![]() HexEdit çalıştırıldığında, yama yapılmak istenen dosya belirlenerek, okunacak ve aşağıdaki ekran görüntüsü oluşacaktır: Ekran görüntüsünün en başında, yamalanacak dosyanın adı (burada HE ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() HexEdit programında kullanılan fonksiyon tuşları ve kısayollar aşağıdaki gibidir: F1: Help F2: İstenen byte’a atlama Shift-F2: İstenen sektöre atlama F3: Arama F4: Bul ve Değiştir F8: Text olmayan byte’ları maskele F9: Modu belirle Alt-A: ASCII Tablosu Alt-B: Taban dönüşümü Alt-C: Konfigürasyon Alt-N: Sonraki bulgu Alt-P: Önceki bulgu Alt-S: DOS’a geçiş Alt-T: Text taraması Alt-U: Undo(geri alma) Alt-X: Panic Abort (programdan hiç bir değişiklik kaydedilmeden hızlı çıkış) Esc: Exit Backspace: Kaydedilmemiş değişiklikleri geri al |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#22 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi5 ![]() ![]() Debugger bir hata ayıklama programı olup, kullanıcılara programların analiz edilmesinde, bazı kritik noktalarda durma noktaları (breakpoint) koyma ve programın çalışması sırasında istenen noktadaki kaydedici ve bellek durumlarının incelenmesini sağlarlar ![]() ![]() ![]() ![]() Debuggerlar geliştirilmeden önce, program kodu içinde değişkenlerin değerini araştırmak ve hata bulmak için programcıların aşağıdaki gibi kod parçaları kullanmaları gerekmiştir ![]() /*Code*/ ( ![]() ![]() ![]() loop change_a_variable; show_value_of_variable; end_loop ( ![]() ![]() ![]() Günümüzde bir çok program ‘registration (kayıt olma)’ bug ına sahiptir ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() Soft-ICE, düşük seviyeli (hardware-level) bir yazılım debug etme programıdır ![]()
![]() ![]() ![]() ![]() 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 ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#23 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi5 ![]() ![]() ![]() ![]() Soft-ICE kurulduktan sonra autoexec ![]() C:\Progra~1\NuMega\SoftIc~1\winice ![]() 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 ![]() ![]() ![]() ![]() Eğer Softice 'ı kullanım amacımıza uygun şekilde ayarlamak için winice ![]() ![]() ![]() ![]() ![]() PENTIUM=ON ;Eğer bilgisayarınız pentium ise bunu On yapın aksi halde Off 'u Winice ![]() 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 ![]() ![]() 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 ![]() ; (SIW95\WINICE ![]() ; for use with SoftICE Version 3 ![]() ; 14 July 1997 ; Path, Soft-Ice'ın kurulduğu mevcut dizin ve dosya ile değiştirilmelidir ![]() EXP=c:\windows\system\kernel32 ![]() EXP=c:\windows\system\user32 ![]() ![]() EXP=c:\windows\system\gdi32 ![]() EXP=c:\windows\system\comdlg32 ![]() ![]() EXP=c:\windows\system\shell32 ![]() ![]() ![]() ![]() Winice ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#24 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesiSoft-ICE'ın kullanımında yaygın bir sıkıntı da, debugger'ın istenilen şekilde başlatılması için autoexec ![]() ![]() ![]() ![]() ![]() ![]() ![]() Bu satırlar autoexec ![]() ![]() ![]() ![]() Autoexec ![]() Rem -----Buradan itibaren kopyalanır------- goto %config% REM Soft-ICE'ı başlat - softice in kurulu oldugu yere dikkat edilmelidir ![]() :SICE C:\PROGRA~1\NUMEGA\SOFTIC~1\WINICE ![]() REM Soft-ICE olmadan baslat :NORM Rem ----Buradan kesilir------ Config ![]() ![]() 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 ![]() ![]() ![]() ![]() Kurulum tamamlandıktan ve gerekli düzenlemeler gerçekleştirildikten sonra, programın debug edilmesine geçilir ![]() ![]() ![]() ![]() ![]() ![]() Bazı durumlarda, bpx getwindowtexta breakpointi konduğunda hata mesajı alınabilir ![]() ![]() Soft-ICE programı ilk kurulduğunda, 1 ![]() ![]() ![]() ![]() 2 ![]() ![]() ![]() ![]() ![]() ![]() Soft-ICE'ın kurulmasına rağmen etkili bir şekilde kullanmayı öğrenmek, zaman ve uygulama gerektirir ![]() ![]() ![]() ![]() ![]() 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 ![]() bc = O anda konulmuş breakpoint'leri temizler ![]() ![]() bd = Breakpoint'i kapatır ![]() be = Breakpoint'i açar ![]() ? = Belli bir register veya sayının değerini gösterir ![]() 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 ![]() 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 ![]() |
![]() |
![]() |
![]() |
Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi |
![]() |
![]() |
#25 |
Şengül Şirin
![]() |
![]() Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesiSONUÇ Bir programın kanunlar dahilinde ve tam versiyon olarak kullanılabilmesi için satın alınması gerekir ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() Program kırabilmek için programcılıktan ve Assembly dili komutlarından biraz anlamak gerekir ![]() ![]() ![]() Program kırmaktaki tek amaç, programa bedavadan sahip olmak olmamalıdır ![]() ![]() ![]() Hilal AKARKAMÇI Gazi Üniv ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Konu Araçları | Bu Konuda Ara |
Görünüm Modları |
|