Dkümanda Geçen Programları Download Edebileceğiniz Linkler:W32Dasm > www.tahribat.com/download/w32dasm. zip Hex Workshop > www.tahribat.com/download/hw25. exeSoftice WinNT/2000 > http://www.nigh7sky.net/download/debugger/SoftIceWNT405. zip Dosya Boyutu: 5.643 Kb Softice Win9x > http://www.nigh7sky.net/download/debugger/SoftIceW9x405. zip Dosya Boyutu: 5.639 Kb

helal beeee... Dalımızı kesenin, ağacını kkünden skeriz...

valla dküman süper allah razı olsun aynı hatayı tekrar yapma yapılacak cok hata var

GİRİŞInternet'ten indirilen ya da bilgisayar dergileri tarafından verilen çoğu programın belirli bir kullanım süresi bulunmaktadır. Bu programlar, içeriğine gre 1 hafta ila 1 ay arasında kısıtlı kullanım süreleri olan shareware veya limited software'lerdir. Yani paylaşım amaçlı yazılmış ve daha sonra paylaşılan 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 denilen, shareware programlara gre daha amatr coder'lar tarafından hazırlanan ve kar amacı gütmeyen yazılım çeşitleri de mevcuttur ve bu programlar için para denmesi gerekmemektedir. Aslında shareware programlar için de para denmeyebilir ancak bu, devletler hukukları altında korunan progamcının haklarını ve telif ücretlerini gasp ederek yani illegal yollardan mümkün olmaktadır . Program kırmak, cracker'lık, bilgisayar programlarındaki lisans haklarının aşırıya kaçması, BSA 'nın aşırı baskılarıyla ve Microsoft'un tekelini daha fazla yaymasıyla ivme kazandı. Günümüzde piyasaya yeni çıkan programların birkaç gün içerisinde kırılıp crack patch'inin internete konulduğu grülmektedir. Program kırabilmek için programcılıktan biraz anlamak gerekir. zellikle dongle adı verilen donanımla korunan programlar kırılmak isteniyorsa, Assembly dilini mutlaka bilmek gerekmektedir . Programlar için çeşitli koruma tipleri mevcuttur. rneğin, CD sürücüde CD olup olmadığını kontrol eden koruma tipleri, password koruma tipleri ki eğer doğru password girilmemişse ya program register olmaz ya da çalışmaz. Son olarak da süreli programlar ki, zellikle dergilerin verdiği cd'lerdeki programlar bu şekildedir. Program, süresi dolduğunda (30 gün, 90 gün) çalışmaz. En kolay kırılan programlar, Windows altında çalışan ve register etmek istendiğinde bir pencere içerisinde hata mesajı veren programlardır. Çoğunlukla, programı register etmek için sizden bir user name ve password ister fakat program satın alınmamışsa, girilen bilgiler, "invalid registeration number" gibi ya da benzer hata mesajlarıyla geri dnecektir . Bir programın kırılması, o programın yazılış amacı dışında davranmasına sebep olmak olarak yorumlanabilir. Programlar belli bir programlama dilinde yazıldıktan sonra derleyici denilen başka programlar ile çalıştırılabilir kod haline çevrilir. Bu çalıştırılabilir kod, CPU nun anlayacağı dilde ve işletim sisteminin zelliklerine bağlı olarak, makine dilinde Hexedecimal bir düzende bulundurulur. Makine koduna çevrilmiş programlar, içerisinde programcının yazmış olduğu kodu içermezler. Bu durumda programın içeriğini, derlenmiş bir koddan açık ve net bir biçimde anlamak çok zordur. Makine dili denilen dil, aslında rakamsal bir dildir. Bu onaltılık sayı düzeninde bulunan kodlar, ikilik sayı sistemine dnüştürülerek CPU'ya gnderilir. 0 ve 1 ler (bilgisayarın işleyişinde temel olan elektrik sinyali var (1) ve elektrik sinyali yok (0) ) CPU tarafından yorumlanarak işlenir. Makine dilininin bu şekilde zor ve anlaşılmaz oluşundan dolayı ASSEMBLY dili geliştirilmiştir. Assembly Dili, bilgisayar dilleri içerisinde en alt düzey programlama dilidir. Assembly ile yazılan programlar CPU'ya direkt olarak hitap eder. Fakat bu dil ile uzun programlar yazmak oldukça zordur. Bunun yerine, diğer diller ile yazılan programlarda o programlama dilinin yetersiz kaldığı ya da yavaş kaldığı noktalarda daha hızlı ve direkt erişim olanağına sahip bir dil olan ASSEMBLY dili ile prosedür veya fonksiyonlar yazılabilir. Günümüzde bu, sadece bazı aygıt sürücülerini yazarken ya da viruslerde kullanılmaktadır . Windows için yazılan programlar da, çeşitli programlama dilleri ya da program geliştirme araçları ile yazılarak derlenir ve çalıştırılabilir kod haline dnüştürülür. Bu çalıştırılabilir kodun DOS programlarından en belirgin farkı, içerisinde kullandığı işletim sisteminin zel fonksiyonlarıdır. DOS işletim sisteminin INTERRUPT denilen bazı fonksiyonları vardır. Bu fonksiyonlar, Windows için yazılan programların içerisinde direkt olarak yer almazlar, bunun yerine Windows işletim sisteminin hali hazırda yazılmış fonksiyonları kullanılır . Windows / System dizini altında bir çok DLL uzantılı dosya mevcuttur. Bu dosyalar, içerisinde programların çalışırken kullandığı birçok fonksiyon ya da tanım bulundururlar. Szkonusu fonksiyonlar, programların kırılmasına yardımcı olacak noktalardır. Programlar makine dilinde bulunurlar, bu kodların anlaşılabilmesi için, ASSEMBLY kodlarına çevrilmesi gerekir. Bu iş için kullanılan programlara DISASSEMBLER denilir. Programların ham, yani onaltılık sayı düzenindeki içeriğinin grüntülenebilmesi için de, HEX EDITOR denilen programlar kullanılır. Bunların dışında, programların CPU daki işlenişi sırasındaki içeriğini grüntüleyebilen ve gerçekte programlardaki hataları ayıklamak için kullanılan DEBUGGER denilen programlar da kulanılmaktadır . Bu durumda, program kırmak için gerekli olan bilgi ve dkümanlar şu şekilde sıralanabilir: 1-ASSEMBLY dilini bilmek, 2- Windows İşletim Sistemini iyi tanımak ve fonksiyonlarını bilmek, 3-Disassembler Programı, 4-Hex Editr Programı, 5-Debugger Programı. Bu tool lardan faydalanarak, programların Serial Number ları ya da password leri kırılabilir; deneme sürümlerinin kısıtlanmış fonksiyonları genişletilebilir ve Time Trial'lı programların da tarih kısıtlamaları kaldırılabilir. Disassembler, Hex Editr ve Debugger kavrcyber-port. netve bu türdeki programların çalışmasına yabancı olanların, program kırılımına geçmeden nce 5. Blüm'e gz atmaları tavsiye edilir. Assembly kodlarına uzak olanların da, program kırımına geçmeden nce EK-B'ye bakmaları tavsiye edilir. Başlangıç için yeterli olabilecek notlar eklenmiştir.1. BİR WINDOWS PROGRAMININ ŞİFRESİNİN KIRILMASI Windows altında çalışan bir çok program, password korumalıdır. Çoğunlukla, programı register etmek için sizden bir user name ve password ister fakat program satın alınmamışsa ya da doğru password bilinmiyorsa, girilen bilgiler, "invalid registeration number" gibi ya da benzer hata mesajlarıyla geri dner. Bu tür programlar, kırılımı en kolay olan programlardır. Burada, Windows programlarının kırılımı rnek bir program üzerinde, aşamalar halinde gsterilmiştir: 1.1. Kırılacak Program Hedef Program : HexWorkshop Programın Bulunabileceği Adres : www.bpsoft.com Program ilk açıldığında ekrana, bu programın 20 gün süreli bir demo versiyon olduğunu hatırlatan bir pencere gelecektir. Eğer bu versiyon yakın tarihte kurulmuşsa upgrade edilmesini neren bir başka pencere daha grülecektir. Bunun haricinde, programın Demonstration Version diye bir menüsü olduğu grülür ve bu menüye tıklandığında ise Serial Number soran bir pencere ile karşılaşılır. Bu durumda, burada yapılması gereken doğru bir seri numarası ya da programa girilen seri numarasının doğru olduğunu zannetirecek bir yntem bulmaktır . 1.2. Kırılımı Gerçekleştirecek Program Kırarken Kullanılan Program : Wdasm89 Wdasm89 bir disassembler'dır. Disassembler ile program kırma tekniği, hata mesajından faydalanarak, kod içinde şifrenin bulunmasına dayanır . 1.3. Programın Kırılım Aşamaları Programın kırılımı on aşamada gerçekleştirilmiştir. Bu aşamalar: 1.3.1. Programın disassemble edilmesi Program disassemble edilerek crack işlemine başlanır. Programın disassemble işlemi bittikten sonra ise, kullandığı Windows fonksiyonlarının incelenmesi gerekir . 1.3.2. Sonuca gtürecek en uygun fonksiyonun bulunması Disassembler ekranında, Functions Menüsünden, Imports'a bakılarak sonuca gtürecek en uygun fonksiyon bulunur. HexWorkshop programının kırılımında, User32. getwindowtexta fonksiyonundan faydalanılacaktır . 1.3.3. Fonksiyonun bulunduğu yerlere breakpoint konulması Program load edilip user32. GetWindowTextA fonksiyonlarının kullanıldığı yerlere breakpoint konulur . 1.3.4. Register menüsüne herhangi bir değer girilmesi Daha sonra program çalıştırılarak Demonstration Version menüsü açılır ve buraya Serial Number olarak herhangi bir numara girilir. Burada seri numarası olarak 99999999 girildiği varsayılacaktır . 1.3.5. Wdasm progrcyber-port. netgirilmesi Seri numarası girme işlemi sonucunda REGISTER tuşuna basıldığında Wdasm programının içine otomatik olarak girilecektir. Bu durum crack işleminde doğru yolda olunduğunu gsterir. Daha sonra F8 tuşu ile hatalı Serial Number girildiğine dair ekran çıkana kadar ilerlemeye devam edilir. Bu noktaya gelinceye kadar işlenen kodlar iyi takip edilmelidir çünkü en son işlenen Dallanma Komutunun yeri oldukça nemlidir . 1.3.6. Hata ekranının bulunması Hata ekranı çıktığında OK tuşuna basılarak işlem tekrarlanır ve her işlenen koşullu dallanma komutuna bir durak noktası konulur. :0043178B E8E8DC0100 call 0044F478 ; Seri Numarası'nın ekrandan okunması :00431790 8B8DFCFEFFFF mov ecx, dword ptr :00431796 83C164 add ecx, 00000064 :00431799 E8F21BFDFF call 00403390 :0043179E 50 push eax :0043179F 8D45DC lea eax, dword ptr :004317A2 50 push eax :004317A3 E8E8B90000 call 0043D190 :004317A8 83C408 add esp, 00000008 :004317AB 680C534800 push 0048530C :004317B0 8D45DC lea eax, dword ptr :004317B3 50 push eax :004317B4 E867CE0000 call 0043E620 :004317B9 83C408 add esp, 00000008 :004317BC 85C0 test eax, eax :004317BE 0F8414000000 je 004317D8 :004317C4 8D45DC lea eax, dword ptr :004317C7 50 push eax :004317C8 E893970000 call 0043AF60 :004317CD 83C404 add esp, 00000004 :004317D0 8945EC mov dword ptr , eax :004317D3 E907000000 jmp 004317DF :004317DF 837DEC00 cmp dword ptr , 00000000 :004317E3 0F8479000000 je 00431862 ;Seri Numarası yanlış ise dallanma olur :004317E9 8B8DFCFEFFFF mov ecx, dword ptr :004317EF 83C164 add ecx, 00000064 :004317F2 E8991BFDFF call 00403390 :004317F7 50 push eax Crack işlemine tabi tutulan HexWorkshop Programında, girilen numara doğru kabul edildikten sonra çalıştığı dizinde bir dosya oluşturulur. REG uzantılı olan bu dosya oluşturulduğunda ya da içerisinde belli bir imza olduğunda, girilen seri numarasının doğru olup olmadığı bir daha kontrol edilmez ve sonsuza dek Full Version olarak çalışır . 1.3.7. Kodun değiştirilmesi Programın girilen herhangi bir kodu kabul etmesi için yapılması gereken işlem, Koşullu Dallanma komutunun durumunu değiştirmektir. Koddan da grüldüğü üzere, 004317E3 satırında seri numarasının 00431862'den farklı olması durumunda hata verecektir. Ancak JE 00431862 komutu JNE 00431862 komutuna ya da tamamı NOP komutuna çevrildiğinde, program girilecek herhangi bir kodu kabul edecektir ve Crack işlemi tamamlanmış olacaktır . 1.3.8. Kırılacak programın exe'sinde kodun değiştirilmesi Wdasm programından aranılan byteların 30BE3h adresinde yer aldığı grülmektedir. HexWorkshop programının kendisini kullanarak Hworks32. exe dosyası açılarak 30BE3h adresine gidilir ve 0F8479000000 byteları 909090909090 byteları ile değiştirilerek başka bir isimle kaydedilir. Çünkü aynı isimle o an hafızada olan bir dosya kayıt edilemez . 1.3.9. Programın son halinin kaydedilmesi Daha sonra HexWorkshop programından çıkılarak orijinal dosyanın adı başka bir isimle kaydedilip, kırılmış dosya orijinal adıyla kaydedilerek program hazır hale getirilir . 1.3.10. Programın register edilmesi Daha sonra yapılması gereken, programı çalıştırıp herhangi bir Seri Numarası yazarak kayıtlı hale getirmektir. 2. PROGRAMLARIN DENEME SÜRÜMLERİNDEN FONKSİYON KISITLAMASININ KALDIRILMASI Program koruma tiplerinden bir tanesi de, programın bazı fonksiyonlarının kısıtlanmasına dayanır. Satın alınmadığı müddetçe bu tür programların en nemli fonksiyonları kullanılamaz. Bu tür korumaya bir rnek verilecek olursa, Acrobat Reader programının freeware sürümleri kolaylıkla bulunmasına rağmen, programın bünyesinde bulunan Acrobat Writer kısmına ulaşmak için programın satın alınması gerekir. Aşağıda da bu koruma tipine rnek teşkil edecek şekilde, internetten sayfa ve site indirilmesine yardımcı olan Teleport programındaki kısıtlamanın kaldırılması aşamalar halinde gsterilmiştir: 2.1. Kırılacak Program Hedef Program : Teleport Pro Program açıldığında Serial Number sormak gibi rahatsız edici herhangi bir ekran gelmemektedir ancak bir siteyi indirirken en fazla elli dosyanın indirilmesine izin vermektedir. 2.2. Kırılımı Gerçekleştirecek Program Kırılımında Kullanılacak Araçlar : Soft-ICE Kırılımda kullanılan Soft-ICE programı, en çok kullanılan debugger'dır. Debugger'lar programların breakpointler ile durdurularak kodlarının incelenmesini ve hataların düzeltilmesini sağlarlar. 2.3. Programın Kırılım Aşamaları Programın kırılımı, sekiz aşamada gerçekleşmiştir. Bu aşamalar: 2.3.1. Programın register bilgilerinin ğrenilmesi İlk olarak yapılacak iş, help dosyasında register kısmını okumaktır. Bu, programın nasıl kayıtlı hale getirileceği konusunda az da olsa bir bilgi verecektir. Klasik olarak, help kısmında about ya da register diye bir kısım olup olmadığına bakılır. Bu program itibariyle register diye bir kısım olduğu grülür. Bu kısma tıkladığında ekrana Name, Company ve Code dan oluşan bir pencere gelir. Makineye daha nceden kurulmuş olan Soft-ICE Progrcyber-port. netgirilir. Program, breakpointler ile durdurulur. En fazla kullanılan breakpointler, bpxgetwindowtexta ve bpxgetdlgitemtexta'dır. Bu fonksiyonların sonundaki a karakterleri, 32 bit programlar için kullanılacağını gstermektedir . 2.3.2. Register ekranında istenen blümlere herhangi bir değer girilmesi Register ekranında, name kısmına Turgut Günata, company kısmına turgutgunata, Serial kısmına da 7777777 diye herhangi bir serial yazılsın. 2.3.3. Soft-ICE'ta breakpoint konulması Enter tuşuna basılmadan nce Ctrl+D ile Soft-ICE 'a geçip breakpoint konulmalıdır. Soft-ICE ta iken bpx getwindowtexta yazıp entere basılır ve sonra x ile yeniden Windows'a dnülür . 2.3.4. Girilen bilgilerin onaylanması Enter'a basıldığında yeniden Soft-ICE ekranına gelindiği grülür, çünkü program getwindowtexta ile yazılanları okumaya çalışır ve Soft-ICE da bu komutu grünce durur . 2.3.5. Girilen değerlerin okutulması Kayıt ekranında üç tane girdi olduğu için program bunları teker teker okuyacak ve kendi gerçek seri numarası ile verilen seri numarasını karşılaştıracaktır. Bu nedenle, Soft-ICE'ta iken x yazılıp enter'a basılacaktır. Sonra bir kez daha x yazıp entere basılacak, bylelikle girilen isim ve şirket kısımları programa okutulmuş olur. Bundan sonra program artık registerlar aracılığıyla bu bilgileri değişik hesaplardan geçirecek ve kodu hesaplayarak sonradan girilen kod ile karşılaştıracaktır. Soft-ICE'ta şu şekilde bir ekran çıkacaktır : USER32! GetWindowTextA BFF51804 B1B2 MOV CL, B2 BFF51806 55 PUSH EBP 2.3.6. Gerçek seri numarasının bulunması Burada iken bc 0 ile koyulan breakpoint temizlenir. Şimdi bu kod takip edilerek gerçek serial bulunmaya çalışılır. Kodları adım adım izlemek için F10 tuşuna basılır. Alt tarafta o an hangi exe veya dll'nin çalıştığı yazmaktadır. Hala Teleport Pro verilen bilgileri okuduğundan şu noktaya gelinceye kadar F10 a basılır . Reference To: USER32. GetWindowTextA, Ord:013Fh :0044A950 FF15C0434600 Call dword ptr :0044A956 8B4D10 mov ecx, dword ptr :0044A959 6AFF push FFFFFFFF :0044A95B E83793FFFF Call 00443C97 :0044A960 EB0B jmp 0044A96D 00444A95B deki çağrı nın F8 ile içine girilebilir ancak çağrıların ardından conditional jump yani "je" "jne" gibi kodlar yoksa bu çağrılar F10 ile izlenebilir. F10 ile kod izlendiğinde şu noktaya gelinir : ... 0042472D C6415C01 mov , 01 :00424731 E958FFFFFF jmp 0042468E :00424736 B8981F4600 mov eax, 00461F98 :0042473B E8B0610000 call 0042A8F0 :00424740 51 push ecx :00424741 51 push ecx :00424742 53 push ebx :00424743 56 push esi :00424744 57 push edi :00424745 8BF9 mov edi, ecx :00424747 6A01 push 00000001 :00424749 E8F1DE0100 call 0044263F :0042474E 33DB xor ebx, ebx :00424750 6A0A push 0000000A :00424752 53 push ebx :00424753 FFB7DD000000 push dword ptr ;Seriali edi+dd ye tek tek yaz :00424759 E852700000 call 0042B7B0 :0042475E 8B0D9C1A4800 mov ecx, dword ptr :00424764 83C40C add esp, 0000000C :00424767 8945EC mov dword ptr , eax :0042476A 3899CD020000 cmp byte ptr , bl :00424770 0F841B020000 je 00424991... Bu noktada yani xx:00424753 de iken d edi+dd yazılırsa data penceresinde EC 25 A3 00 grülür. Eğer d A325EC yazılırsa data penceresinde sonradan girilen '7777777' şeklindeki kod grülür. Dword ptr, programın verilen Serial'ı byte byte alarak belirtilen belleğe yerleştirmesi anlamındadır. Bu yüzden testen işlem yapılarak girilen koda ulaşıldı. Kod izlenmeye devam edildiğinde şu noktaya gelinir : ... Possible StringData Ref from Data Obj ->"User" :00424778 BED0B74700 mov esi, 0047B7D0 :0042477D 0F840B010000 je 0042488E :00424783 FFB7D5000000 push dword ptr ;Kullanıcı ismini belleğe yerleştir :00424789 E894090000 call 00425122 :0042478E 3945EC cmp dword ptr ; Eax ile gerçek kodu karşılaştır :00424791 59 pop ecx :00424792 753A jne 004247CE ;Kod doğru değil :00424794 8D4DF0 lea ecx, dword ptr ;Kod doğru :00424797 E8B2EF0100 call 0044374E Possible Reference to String Resource ID=07076: "Thank you! Your copy of Teleport Pro is now registered", 2.3.7. Programın register edilmesi Bu noktada yapılması gereken tek işlem :0042478E yi F10 ile geçtikten sonra ? eax yazmaktır. Bu yazıldığında 1458171568 grülür. Bu, gerçek seri numarasıdır. Soft-ICE tan çıkıldıktan sonra, Name= Turgut Günata Company =turgutgunata Serial = 1458171568 yazıp program kayıtlanır. Bu işlemlerin gerçekleştirilmesi için Soft-ICE konusunda bilgi sahibi olmak gerekmektedir. 2.3.8. Programın seri numarasının hesaplanışı Programın serial'ının nasıl hesaplandığını grmek için 00424789 deki call a F8 ile girilebilir. Hesaplama şu şekilde gerçekleşmektedir. İlk başta isim en az 5 karakter mi diye bakılıp, daha sonra boydan 4 çıkartılır ve 4. karakterden sonraki her karakter 5DFEE4A4H ile xor edilip toplanır. Assembly de yazılacak olursa, kod şu şekilde olur : mov edi, offset szName ; İsmi edi ye yolla push edi call lstrlen ; Listele cmp eax, 5 ; 5 ten düşükse işlemi durdur. jl ExitProc0 add eax, -4 ; 4 çıkart xor ebx, ebx ; ebx i sıfırla lea edi, szName ; İsmi al mov esi, 5DFEE4A4H ; Numarayı esi ye yolla Hesapla: cmp ebx, eax ; Sona gelindi mi? jae Goster xor esi, ; Değilse Xor la inc ebx ; Ebx i artır jmp Hesapla Goster: mov eax, esi ; Serial eax 'ta 3. TIME TRIAL'LI PROGRAMLARDAN ZAMAN KISITLAMASININ KALDIRILMASI Süreli programlar, program kodunda kullanım süresinin kısıtlanması sayesinde, belirtilen süre dolduğunda (30 gün, 90 gün) çalışmayan programlardır. zellikle dergilerin verdiği CD'lerdeki programlar bu şekildedir. Bu tür bir korumanın konulmasındaki amaç, ticaridir ve programın bu süre içinde tanıtılması ve satın alınmasını amaçlar. Burada, zaman kısıtlamasının kaldırılması rnek bir program üzerinde bilinmesi gereken yntemler ve tüm aşamalarıyla birlikte gsterilmektedir: 3.1. Call Flow Yaklaşımı: Herhangi bir program çalıştırıldığında, bir seri fonksiyon, prosedür ve açıklamalardan geçer. Call Flow denilen olgu ise bir programın çalıştırılmasından sonra izlediği yolun bir listesi ya da diyagrcyber-port. netverilen addır. Bu yol, programın çalıştırıldığı zamandaki koşullar nedeniyle farklılıklar gsterebilir. Aşağıda verilen 6 basamak incelenmelidir : 1.) GetSystemTime. . 2.) Installed. . 3.) Expired. . 4.) DaysLeft. . 5.) Halt. . 6.) Main. . Bu prosedürler kullanılarak, Time Trial korumalı bir programın asm kodu aşağıdaki gibi olacaktır: 00000001 : Call GetSystemTime. 00000002 : Call Installed. 00000003 : if eğer 30 günden fazlaysa... 00000004 : Call Expired, 00000005 : Jmp Halt. 00000006 : 30 günden fazla değilse... 00000007 : Call DaysLeft, 00000008 : Jmp Main. Gerçek bir kodu incelediğimizde işe şuna benzer: Call 041829B0 Call 0492832C Cmp Ax, Bx JL 04927435 Call 04348234 Jmp 0432833C JL Address Call 04583BC0 Jmp 042392BC Yukarıdaki kod incelenecek olursa, programın çalışma şekli JL emrinden nceki ax ve bx değerlerine dayanmaktadır. Buradaki problem ise büyük bir kodun disassemble edilişinden sonra patchlemek için doğru yeri bulmanın zor olmasıdır, çünkü bu tür kodlarda bir çok cmp / jl veya cmp / jne oluşumları bulunmaktadır . 3.1.1. Yama yapılacak doğru yeri bulmak: Yukarıdaki kodu kullanarak ortaya 2 farklı program yolu çıkartılabilir. Hala 30 günlük deneme süresi içindeyken, programın takip ettiği yol şuna benzeyecektir: GetSystemTime Installed Cmp ax, bx JL DaysLeft Main. Deneme süresi sona erdiğinde ise kod şuna benzeyecektir: GetSystemTime Installed Cmp ax, bx JL Expired Halt. Bu iki listeye bakılırsa, JL komutuna kadar herşeyin aynı olduğu grülür; ama JL de ilk liste atlamayı yaparken 2. liste bizi programın sonuna getirmektedir. JL komutu ax ve bx değerlerine bağlı durumdadır. Zamana bağlı program kilidini kaldırmak içinse yapılması gereken ya ax ve bx in değerlerini değiştirerek sürekli bir deneme süresine sahip olmak ya da JL komutunu Jmp komutu ile değiştirip programın ilk call flow'daki gibi çalışmasını sağlamak olacaktır . 3.1.2. Crack işlemi için ihtiyaç duyulacak dkümanlar: - Soft-ICE - Bir Hex Editrü. - Bir Text Editrü. 3.1.3. Crack işleminin aşamaları nce, Soft-ICE'la birlikte install edilmiş olan symbol loader yüklenir. Bu grev çubuğundaki klasrden açılabilir. Symbol Loader'daki file menüsüne gidip `open module` a tıklanır. Buradan da kırılmak istenen programın ana çalıştırma dosyasına tıklanır (rn: mirc için mirc32. exe). Bu işlem tamamlandıktan sonra `Module` menüsüne gidilerek "Load Module" a tıklanır. Normalde bu bir hata mesajıyla gelecektir, `Yes` e tıklayıp yüklemeye devam edilir. Şimdi Soft-ICE, Symbol Loader nedeniyle araya girecek ve aşağıdakine benzer birçok satır grüntülenecektir. FFFF INVALID FFFF INVALID FFFF INVALID FFFF INVALID FFFF INVALID. Bu bir hata değildir. Soft-ICE, sadece hafızadaki henüz çzemediği bir blümü gstermektedir. Şimdi Soft-ICE, yapılmak istenen işleme gre ayarlanmalıdır . 3.1.3.1. Kod penceresinin kapatılması. Soft-ICE'ta "wc" yazılır. Bu komut kod penceresini kontrol eder. Kod penceresinin gzükmesi istenmediğinden, bu şekilde kapatılır. Bu aynı zamanda mouse kullanılarak da yapılabilir. Kapatılmak istenen pencerenin üst kşesine mouse ile tıklayıp sürüklenebildiği kadar yukarıya sürüklendiğinde, bu pencere kapanacaktır . 3.1.3.2. GeTSystemTime için breakpoint konulması. GetSystemTime için bir breakpoint konulmalıdır. Bu, komut penceresinde "Bpx GetSystemTime" yazılarak sağlanır. Bu arada, GetSystemTime sadece fonksiyonun adresini belirtir. Fonksiyonun adresi bilinse, "Bpx 004283CD" gibi bir satır da yazılabilirdi. Bu durumda bpx komutuna bir offset de eklenebildiği grülüyor; rn: "Bpx GetSystemTime +4" teki gibi. Bu komut, fonksiyonun başlangıcından 4 offset sonra Soft-ICE'ın devreye gireceğini gsterir . 3.1.3.3. Programın yüklenmeye devam edilmesi. Soft-ICE'ta breakpoint ayarlandığına gre programın yüklenmesine ve çalışmasına devam etmek için izin verme zamanı geldi. Yapılması gereken CTRL+D tuşlarına basmaktır. Program yüklenmeye ve çalışmaya devam ederken 'GetSystemTime' komutunu işleyecektir. Bu olduğunda, Soft-ICE belirecek ve programı fonksiyonun başında durduracaktır. Komut penceresinde ise 'BPX due to KERNEL32! GetSystemTime' yazısı grülecektir. Burası olayın kaydedilmeye başlanması gereken yerdir . 3.1.3.4. Fonksiyondan çıkılması. Şimdi 'GetSystemTime' fonksiyonunun başlangıcında bulunuluyor. Bu fonksiyon atlamalıdır ki tüm fonksiyon işlendikten hemen sonra yer alan asm komutuna varılsın. ('GetSystemTime' fonksiyonu Windows \ System dizininde bulunan Kernel32. dll'nin bir parçasıdır). Bu fonksiyon bilgisayarın o anki durumundan bağımsız olarak her zaman aynı komutları işleyecektir, bu yüzden bu komutların kaydedilmesine gerek yoktur. Fonksiyondan hemen sonraki asm komutuna atlamak için yapılması gereken "F11" tuşuna bir kez basmak olacaktır. Bu noktadan sonra yapılacak işlemlerde dikkatli olmak gerekmektedir . 3.1.3.5. Nag ekranına kadar tüm komutların kaydedilmesi. Bu noktada yapılan herşeyin kaydedilmesi gerekmektedir. Yapılması gereken; `Programı kullanabilmek için % gününüz kaldı` text'ini içeren Nag Ekranı çıkana kadar F10 tuşuna basarak kodun içinde adım adım ilerlemektir. Dikkat edilirse, komut penceresinde işlenen tüm kodun belireceği grülür. Tüm bu bilgiler Soft-ICE Buffer'ında kaydedilmektedir . 3.1.3.6. Log dosyasının kaydedilmesi. Nag ekranı çıktığında, ilk log dosyasını kaydetmenin zamanı gelmiştir. Yapılması gereken hala yüklü olan Soft-ICE Symbol Loader'a giderek File menüsünden `Save Soft-ICE history as...` e tıklamaktır. Şimdi bu dosya, asa1. txt diye kaydedilecektir. Bu dosya bir text editrle açılacak olursa, komut penceresindeki tüm olanların kaydedilmiş oldukları grülecektir . Bu, ilk " Call Flow " dosyasıdır. 3.1.3.7. Tarihi ileriye alıp tüm işlemlerin tekrarlanması Şimdi yapılması gereken 2. bir call flow logu hazırlamaktır, ancak bu sefer sistemin tarihi ileriye alınmalıdır ki, "Deneme Süreniz Sona Erdi." mesajı grülebilsin. Bu, programımızın 'GetSystemTime' fonksiyonundan sonra fakat Nag ekranı çıkmadan nce farklı bir yol izlemesine neden olacaktır . 3.1.3.8. İki Log dosyasının karşılaştırılması. Tüm adımlar tekrarlandıktan ve 2. log dosyası (rn:asa2. txt) kaydedildikten sonra iki log dosyasını karşılaştırmak gerekir. Burada iyi korunulduğu sylenen bir Microsoft programını kullanarak ortaya çıkan 2 tane rnek log dosyası üzerinde açıklama yapılacaktır . Bu iki log dosyası, Ek-A'ya konulmuştur. 3.1.3.9. İki log dosyasının farklılaştığı ilk noktanın bulunması. Dikkat edilirse her iki log dosyası da 015F:3000ADC1 adresine kadar aynıdır. İlk dosyada, bu adresteki komut atlama yapmıyor, fakat ikinci dosyada aynı komut atlamayı yaptırıyor. Bu, o noktadaki EAX in değerinin sistem zamanına bağlı olarak aldığı değişiklikten kaynaklanıyor. Aşağıdaki kod satırları incelenmelidir: LEA EAX, 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.1.3.10. Dosyada değişiklikler yapılması. JA komutunun atlama yapmaması için dosya değiştirilmelidir. Bu bir çok yolla yapılabilir: Basit ve ucuz olan yol; 015F:3000ADC1 adresindeki `77 3D` değerlerini `90 90` olarak değiştirerek "JA 3000AE00" komutunu nop lamaktır . Bu yol çoğu zaman işe yarasa da, doğru yol 3 byte uzunluğunda olan 'LEA EAX, ', yine 3 byte uzunluğunda olan 'CMP EAX,05' ve 2 byte uzunluğunda olan `JA` (3 asm kodu için toplam 8 byte etti) komutlarını; 5 byte uzunluğundaki 'MOV EAX,00000005' ve birer byte uzunluklarındaki 3 `NOP` komutuyla değiştirmek olacaktır. Bu, EAX kaydının herzaman doğru değere sahip olmasını ve aynı sayıda byte'ın değiştirilmiş olmasınısağlayacaktır . 3.1.3.11. Programı yamalamak . Artık yapılması gereken, programı istenilen bir Hex editrü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 ynteminin, 2 ayrı yol izlenen bir çok olayda da kullanılabilme imkanı vardır. rnek : - CRC rutinlerini kırmak için ; - Dongle korumasının kaldırılması ; - Üç deneme ve password soru alanının dışındasın şeklindeki kısıtlamaların kaldırılması için kullanılır. 4. CD KORUMASININ KALDIRILMASI Programlardaki koruma tiplerinden bir tanesi de, CD sürücüde CD olup olmadığını kontrol eden koruma tipleridir. Bu koruma, genelde oyun programlarında kullanılır. Program bilgisayara install edilmesine rağmen, her kullanımda CD ister. Bu tür korumaları kaldırılmasının aşamaları, rnek bir program üzerinde gsterilmektedir: 4.1. Kırılacak Program Hedef Program: Herhangi bir oyun programı. 4.2. Kırılımı Gerçekleştirecek Program Kırılımında Kullanılacak Araçlar: W32Dasm ve HIEW 4.3. Programın Kırılım Aşamaları Programın kırılımı, yedi aşamada gerçekleşmiştir. Bu aşamalar: 4.3.1. Programı CD'siz çalıştırarak hata mesajının alınması ncelikle, kırılacak oyun programı CD takılmadan çalıştırılır. Bu durumda, oyun çalışmayıp, ekrana hata mesajı veren bir pencere çıkacaktır. Programın kırılmasında bu hata mesajından faydalanılacaktır, bu nedenle hatırlanması gerekmektedir . 4.3.2. W32Dasm programında kırılacak programın çağrılması Daha sonra, W32Dasm disassembler'ı çalıştırılır. Disassembler ekranı açıldığında, Toolbar üzerinde sol tarafta bulunan ilk küçük butona basılır ya da menülerden - Open File to Disassemble blümüne gelinir. Açılan menüde kırılmak istenen exe program seçilir. Disassemble işlemi yaklaşık 5 dakika sürecektir. Bu işlem tamamlandığında ekrana programın assembly kodu gelecektir . 4.3.3. Assembly kodunun incelenmesi Bu aşamada yapılacak işlem, String Data References butonuna tıklamaktır. String Data Items adlı bir pencere açılır. Kod aşağı doğru incelenerek oyunun hata mesajı bulunmaya çalışılır. Bulunduğunda, üzerine çift tıklanır . 4.3.4. W32Dasm textine dnülmesi Sonra Win32Dasm textine dnmek için pencere kapatılır. Grüldüğü gibi CD kontrol rutininde bulunulmaktadır. Burası hata mesajının bulunduğu alandır . 4.3.5. Call ve jump komutlarının ofsetlerinin alınması Bu aşamada, kodda bulunan bütün call ve jump komutlarının offsetlerinin not alınması gerekir. @offset'in yanındaki h uzantısız hexadecimal sayıya ihtiyaç vardır . 4.3.6. Hiew progrcyber-port. netgeçilmesi Daha sonra HIEW'e geçilir. Bu program içinde aşağı yukarı hareket için kursor tuşları kullanılır. HIEW. exe çalıştırılır. HIEW dizini içinde, exe dosya ve programların bir listesi bulunur . 4.3.7. Hiew içinde kırılacak programın exe'sinde numaranın değiştirilmesi Hiew dizini içindeki listeden kırılacak oyunun kaydedildiği dizine gelinerek oyunun exe'sine tıklanır. F4' e tıklanarak - Text, Hex ve Decode menüsüne gelinir. Bu menülerden Decode'a tıklanır. Kodların offset adreslerinin bulunduğu bir liste gelir. F5' e basılarak Win32Dasm'da not alınan numara buraya yazılır. Sayı yazıldığında bu numaranın bulunduğu satıra gelinir ve kursor komutun üzerine konumlanır. rneğin, ekrana E92BF9BF74 gibi 5 byte'lık bir sayı gelirse buraya F3'e bastıktan sonra 90-90-90-90-90 yazılır. F10' a basıp çıkıldığında oyunun CD koruması kaldırılmış olur .5. HİZMET PROGRAMLARININ TANITILMASI Bir programın kırılması için, onun disassemble edilebilmiş koduna ihtiyaç vardır. Bu iki şekilde sağlanır. Birincisi, bir disassembler kullanarak programın deadlist denilen assembly kodu elde edilebilir. İkinci bir yntem ise, debugger kullanarak live(canlı, yani o anda çalışan ve cpu 'de işlenen assembly kodu) olarak bu programın içeriğinin grüntülenmesidir. Birinci yntem daha uzun bir süre gerektirecektir, çünkü tüm exe analiz edilip içinde geçen tüm jump ve call komutları için referans açıklamaları oluşturmak gerekir. Diğer yntem ise daha kolaydır. Sadece o anda işlenen kodun birkaç satır ncesi ve sonrası dahil olmak üzere grüntülenir. Yeni başlayanlar için disassembler kullanmak daha kolay ve cazip gelebilir, çünkü bu yntemde assembly kodlarının yanında daha fazla açıklama vardır ve bir altyordamın nerelerden çağrıldığı ve hangi adres ya da değişkenleri kullandığı daha açık bir şekilde grülebilir. Program kırılımında zaman nemli grülüyorsa, debugger kullanmak daha uygundur. Bunun sebebi, disassembler programının exe'yi disassemble etmek için harcadığı zamandan kurtulmuş olunması ve debugger'da breakpoint konulmasının daha kolay olmasıdır. Debugger kullanılarak daha dinamik breakpoint'ler konulabilir . Program kırmak için bazen diğer tool'larla birlikte Hex Editr'ler de kullanılır. Hex Editr, programın exe'sini açarak yama yapılmasına ve kodun değiştirilmesine yardımcı olur. Burada Disassembler, Hex Editr ve Debugger kavramları, en çok kullanılan rnekleri üzerinde incelenmiştir: 5.1. Disassembler Çalıştırılabilir programlar hafızada, makine dilinde bulunurlar, bu kodların anlaşılabilmesi için, ASSEMBLY kodlarına çevrilmesi gerekir. Bu iş için kullanılan programlara disassembler denir . Burada disassembler rneği olarak W32Dasm tanıtılacaktır: 5.1.1. W32Dasm W32Dasm disassembler'ı http://www/expage.com/page/w32dasm adresinden temin edilebilir. Kurulumu kolaydır. Kurulum tamamlandıktan sonra, W32Dasm ile bir program disassemble edileceğinde, ncelikle W32Dasm programı çalıştırılır. Disassembler editrü gelir ve disassembler menüsü yardımıyla dosya saklandığı yerden çağrılarak işleme başlanır. 5.1.1.1. zellikleri - W32Dasm Windows NT 4.0 ile çalıştırılabilir. - W32Dasm Intel MMX komut setini disassemble edebilmektedir. - 32 bit debugger'ın, kod yamalama fonksiyonu vardır. - CPU kaydedicilerinin ve bayrakların değişiklik gstergeci mevcuttur. - Referans adresine sağ tuşla çift tıklandığında bütün Call ve Jump Cross Reference adreslerine dallanabilir. Referansa dnmek için F12 kullanılır . 5.1.1.2. Bir programın disassemble edilmesi W32Dasm editrü Şekil 5.1.'de grüldüğü gibidir. Disassemble edilecek program, Disassembler menüsünden "Open File to Disassemble" penceresinden seçilir. Burada rnek olarak AudioWriter programının disassemble edilişi gsterilecektir. Şekil 5.1. W32Dasm Editründe disassembler menüsü Açılan pencereden AudioWriter. exe tıklanarak disassemble edilecek program seçilmiş olur. Şekil 5.2. Disassemble edilecek programın seçilmesi Dosya seçilip, Aç tuşuna basıldığında W32Dasm, exe kodu assembly kodlarına çevirmeye başlar. Bu işlem 5 dakika kadar kendi kendine yürütüldükten sonra kodları gsteren bir ekran gelir. Bu ekran Şekil 5.3.'te gsterilmektedir. Şekil 5.3. AudioWriter programının disassemble edilmesi W32Dasm ile şifre kırma tekniği, programın açılışında girilen yanlış koda karşı verdiği hata mesajına dayanır. Bu mesaj not edilerek, kod içinde bulunmaya çalışılır. Kodlar yn tuşları yardımıyla aşağıya doğru incelenebilir. Wdasm programında kodlar incelenirken, ekranın en altında bulunan status bar'da o an üzerinde bulunulan satırın ofset adresi yer alır. Programın kırılımında, jump komutları şifreyi bulma konusunda yardımcı olan noktalardır. Bu komutların adresleri üzerine gelindiğinde, diğer kodlarda Şekil 5.3.'te grülen izleme bandı maviyken yeşile dnmektedir. Şekil 5.4.'te kodların üzerine gelindiğinde status bar'da meydana gelen değişiklik gsterilmiştir. Şekil 5.4. Kodların incelenmesinde status bar ve izleme bandının kullanımı Disassembler içinde kodlar incelenerek hata mesajının olduğu yer bulunur. Bu mesajın ncesinde çok yakın bir yerde girilen numara ile gerçek seri numarasının karşılaştırılıp dallanıldığı blüm vardır. Jump komutlarını ve çağrıları çok dikkatli incelemek gerekir. Jump komutu değiştirilerek programın seri numara hata vermesi engellenmiş olur. 5.2. Hex Editr Hex Editr Programı, programcının heksadesimal yama editrüdür. Diğer bir deyişle, NotePad gibi Text Editrler'den farklı olarak temiz textler yerine formatsız ikili dosyalarla çalışan zel editrlerdir . Hex Editr progrcyber-port. netrnek olarak, HexEdit tanıtılacaktır: 5.2.1. HexEdit HexEdit programını kullanabilmek için gerekli olan tek dosya, HE. EXE çalıştırılabilir dosyasıdır. Bu dosya path'te bulunduğunda sorun yoktur. On-line yardım alabilmek için HEXEDIT. HLP dosyası da HE. EXE ile aynı dizine kopyalanmalıdır. Otomatik yedek ler alabilmek için HEB. BAT ve MAKEBAK. EXE dosyaları path'te bulunmalıdır . 5.2.1.1. zellikleri - Birlikte çalışacağı dosyalarda büyüklük sınırlaması yoktur. - Dosya üzerinde yapılan bütün değişiklikleri kaydeder. İstenildiği kadar geri alma imkanı sağlar. - 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. Büyük-küçük harf duyarlılığıyla ya da olmadan bulma ve değiştirme imkanı sağlar. - Dosyanın her byte(F2) ve sektrüne(SF2) sıradan erişimli atlama imkanı sağlar. - Karakter stringleri ve heksadesimal serilerde arama yapar. - 15000 tarama eşlemesine kadar saklama imkanı vardır. - Desimal, heksadesimal ve ikili sistemler arası dnüşüm yapabilir. - Tanınmayan karakterler için ASCII tablosu getirebilir . - İkili dosyalarda sıradan erişimli stringler için tarama yapabilir . 5.2.1.2. Ekran grüntüsü HexEdit çalıştırıldığında, yama yapılmak istenen dosya belirlenerek, okunacak ve aşağıdaki ekran grüntüsü oluşacaktır: Found: 127/290 Changes : 4297 Mask:Off Mode:C Page:1 Current Sector: 39(00000027) Byte: 20360(00004F88) Total Sectors : 127(0000007F) Bytes: 65503(0000FFDF) 000102030405060708090A0B0C0D0E0F012 3456789ABCDEF 00- 74 69 6F 6E 20 6F 66 20-48 45 58 45 44 49 54 2E -00- tion of HEXEDIT. -00 01- 54 58 54 20 66 6F 72 20-6D 6F 72 65 20 69 6E 66 -01- TXT for more inf -01 02- 6F 72 6D 61 74 69 6F 6E-2E 36 54 68 65 72 65 20 -02- ormation.6There -02 03- 69 73 20 6E 6F 20 64 69-66 66 65 72 65 6E 63 65 -03- is no difference -03 04- 20 62 65 74 77 65 65 6E-20 74 68 65 20 72 65 67 -04- between the reg -04 05- 69 73 74 65 72 65 64 20-61 6E 64 20 6E 6F 6E 2D -05- istered and non- -05 06- 33 72 65 67 69 73 74 65-72 65 64 20 76 65 72 73 -06- 3registered vers -06 07- 69 6F 6E 73 20 28 74 68-69 73 20 69 73 20 4E 4F -07- ions (this is NO -07 08- 54 20 43 72 69 70 70 6C-65 77 61 72 65 21 21 21 -08- T Crippleware!!! -08 09- 21 21 29 2E 0F 20 20 20-20 4D 69 6B 65 20 47 72 -09- !!). Mike Gr -09 0A- 61 68 61 6D 0D 20 20 20-20 42 6F 78 20 36 30 30 -0A- aham Box 600 -0A 0B- 33 36 18 20 20 20 20 55-20 6F 66 20 41 20 50 6F -0B- 36 U of A Po -0B 0C- 73 74 61 6C 20 4F 75 74-6C 65 74 10 20 20 20 20 -0C- stal Outlet -0C 0D- 45 64 6D 6F 6E 74 6F 6E-2C 20 41 42 13 20 20 20 -0D- Edmonton, AB -0D 0E- 20 43 61 6E 61 64 61 20-20 54 36 47 20 32 53 34 -0E- Canada T6G 2S4 -0E 0F- 3C 20 6F 72 20 63 6F 6E-74 61 63 74 20 22 6D 69 -0F- < or contact "mi -0F 000102030405060708090A0B0C0D0E0F012 3456789ABCDEF F1:Help F2/SF2:Jump F3:Search F4:Srch/Rep F8:Mask F9:Mode ESC:Exit Alt keys: A:Ascii B:Base C:Config S:Shell X:Abort! T:Text U:Undo Şekil.5.5. HexEdit programının ekran çıktısı Ekran grüntüsünün en başında, yamalanacak dosyanın adı ve HexEdit'in versiyonu belirtilmektedir. Bir aşağı satırda bulunan 'Found: 127/290' ifadesi, daha nceki taramanın 290 bulguyla sonuçlandığı ve burada 127. bulguya atlanmış olduğunu ifade eder. Aynı satırdaki 'Changes : 4297' ifadesi de dosya üzerinde 4297 değişiklik yapıldığını gsterir. Burada Undo yapılarak orjinal dosyaya ulaşmak mümkündür. 'Mask:Off', text filtrelemesini ifade ederken, 'Mode:C' karakter düzenleme modunda olunduğunu gstermektedir . 5.2.1.3. Fonksiyon tuşları ve kısayollar 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 sektre 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 dnüşü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 Alt-X: Panic Abort Esc: Exit Backspace: Kaydedilmemiş değişiklikleri geri al 5.3. Debugger Debugger bir hata ayıklama programı olup, kullanıcılara programların analiz edilmesinde, bazı kritik noktalarda durma noktaları koyma ve programın çalışması sırasında istenen noktadaki kaydedici ve bellek durumlarının incelenmesini sağlarlar. Eğer program bir hata bulursa, bazı debugger programları kullanıcıya bu noktada hataları düzeltme ve programın çalıştırılmasına izin verirler. Bu zellik kaydedicilerin kapsamlarının incelenmesi ve değiştirilmesini sağlar. Bu işlemler debugger tarafından mikroişlemcideki komutların icrasıyla veya bir simulatr kontrolü veya bir emülatr altında icra edilmesiyle yapılır . 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 ' 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 işlemi için kullanılmaktadır . Bir çok Reverse Engineer 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 bir yazılım debug etme programıdır. Soft-ICE'ın geliştirilme sebepleri şunlardır : - Yüksek seviyeli debugger ların gerçekleştiremediği ya da çok yavaş gerçekleştirdiği debug mekanizmalarına 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 : - Hafıza okuma/yazma, port okuma/yazma, hafıza düzenlemeleri ve interruptlar esnasında gerçek zamanlı durma noktaları , - 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 imkanı, - Diğer programlara ihtiyaç duymadan 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 grüntüsü grülmektedir. Burada browse düğmesi yardımıyla debugger'ın kurulması istenen dizin belirlenebilir. Şekil 5.6. Kurulum dizininin belirlenmesi Daha sonra ekran kullanılan ekran kartının belirlenmesi gerekecektir. Şekil 5.7.'de ekran grüntüsü grülmektedir. Şekil 5.7. Ekran kartının belirlenmesi Bu aşamada, kullanılan mouse'un tipi belirtilmelidir. Şekil 5.8.'de mouse tipinin belirlendiği ekran grülmektedir. Şekil 5.8. Mouse tipinin belirlenmesi Son olarak sistem konfigürasyonunun düzenlendiği ekran gelir. Burada ilk seçenek seçilerek kurulum işlemi tamamlanır. Şekil 5.9.'da sistem konfigürasyonunun yapıldığı ekran grüntüsü verilmiştir. Şekil 5.9. Sistem konfigürasyonunun yapılması Soft-ICE kurulduktan sonra autoexec. bat dosyasında şyle bir satırın olması gerekmektedir: C:\Progra 1\NuMega\SoftIc 1\winice. exe Burada, kurulan klasr 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ı gstermesi gerekmektedir. Eğer satır yoksa, autoexec. bat dosyasına eklenmelidir . 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 editrü 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 gsterecek ş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 gsterir. 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 ları pencerenin tepesinde gsterir. 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 kırarken çok kullanılır. F11="^G @SS:ESP;" ;F11 Call dan program rutinine dnü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 ; (SIW95\WINICE. 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:\windows\system\kernel32. dll ;Buradaki satırlar Soft-ICE 'ın otomatik olarak EXP=c:\windows\system\user32. dll ;yükleyeceği dll'leri gsterir. Hangi EXP=c:\windows\system\gdi32. dll ;rutinlerin program tarafından kullanıldığını EXP=c:\windows\system\comdlg32. dll ;bildirir. Genelde bir çok program bu dll'leri EXP=c:\windows\system\shell32. dll ; kullanır. Bu yüzden bu dll'lerin Softice EXP=c:\windows\system\shell232. 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 . 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 . Bu satırlar autoexec. bat ve config. sys dosyalarının sonuna eklenmelidir. Dosyanın başına eklendiğinde sorun çıkarır . 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 1\NUMEGA\SOFTIC 1\WINICE. EXE REM Soft-ICE olmadan baslat :NORM Rem Buradan kesilir Config. sys dosya rneği. Rem Buradan itibaren kopyalanır REM Menüyü olustur. MENUITEM NORM, Windows 98 MENUITEM SICE, SoftICE ile Windows 98 MENUDEFAULT NORM,5 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 editrü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ı gstermektedir. Breakpoint konulduktan sonra fonksiyon tuşları yardımıyla kodlar incelenip, düzeltmeler yapılabilir . 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 : Soft-ICE programı ilk kurulduğunda, 1. Symbol loader'a girip Edit menüsünden 'Soft-ICE initilization settings' yazan blü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 gre 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 sylendiğ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 grülür. Alttaki pencere komutların yazıldığı input penceresidir. Soft-ICE'ta kullanılan bazı komutların grevleri ; x = Soft-ICE'tan çıkar. bpx = Soft-ICE' a belli API kodlarında dur emri verir. bpm = Soft-ICE' a belli bellek blgelerinde dur emri verir. bpr = Belli hafıza blegelerinde dur emri verir. d = Belleği ve yazılı olan değerleri gsterir. 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 grü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 gsterir. d eax ; eax register ının belirttiği yerdeki belleği gsterir. Input penceresinde kullanılan komutların grevleri de aşağıda verilmiştir: bl = O andaki breakpointleri gsterir. ((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 gsterir. ( ? 23 # gibi) Soft-ICE'ın kullanımı için gerekli fonksiyon tuşlarının grevleri de aşağıdaki şekildedir: F1 : Genel Help'i grüntüler "^H;" F2 : Register penceresini getirir "^WR;" F3 : Mevcut kod modunu değiştirir "^SRC;" F4 : Ekranı yeniler "^RS;" F5 : Programa dnüşü sağlar "^X;" F6 : Kursrü komut ve kod pencereleri arasına konumlandırır "^EC;" F7 : Kursrün bulunduğu satıra gider "^HERE;" F8 : Satır satır çalıştırma "^T;" F9 : Kursrün bulunduğu satıra durma noktası koyar. "^BPX;" F10 : Program basamakları "^P;" F11 : Dnüş adresine gider "^G @SS:SP;" F12 : Soft-ICE'ın versiyon numarasını grü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 yntemdir. 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 grü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 Editr 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ı gsterilmiş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 1\NuMega\SoftIc 1\winice. exe Burada, kurulan klasr 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ı gstermesi 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 1\NuMega\SoftIc 1\winice. exe Burada, kurulan klasr 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ı gst Soft-ICE kurulduktan sonra autoexec. bat dosyasında şyle bir satırın olması gerek C:\Progra 1\NuMega\SoftIc 1\winice. exe Burada, kurulan klasr 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ı gstermesi gerekmektedir. Eğer bu satır yoksa, autoexec. bat dosyawritten by Anarki

aramıza hoş geldin... eli boşta gelmemişsin;) Herkes hoş bir seda duymak ister...

Evet doküman bana ait.

eğer dkümanı sen yazdıysan dküman arşivine ekliyelim.. Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)