![]() |
![]() |
#1 |
Aşmış Üye
![]() Üyelik Tarihi: Dec 2006
Konum: KoCaELi
Yaş: 40
Mesajlar: 34,356
Teşekkür Etme: 21 Thanked 162 Times in 97 Posts
Üye No: 23848
İtibar Gücü: 8770
Rep Puanı : 54700
Rep Derecesi :
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Cinsiyet : Erkek
|
![]() Bir programı kırmaya yada tersine çevirmeye (reverse) karar verdiğinizde eğer maksadınız , programa bedavadan sahip olmaksa bu işten şimdiden vazgeçin inanın ki bu kadar uğraşmaya değmez çünkü o programı mutlaka birileri zaten kırmıştır ve siz onun crack’ini internette kolaylıkla bulabilirsiniz hatta full versiyonunu da bulmanız mümkün olabilir. Eğer , ben kullandığım programların benden habersiz ne yaptıklarını bilmek istiyorum diyorsanız ve herşeyin kontrolüm altında olmasını istiyorum diyorsanız devam edin. Demo programların kırılmasını örnek olarak vermemiz ise sadece bir araçtır ama kesinlikle bir amaç değildir , demo programlardaki nag screen ( programın demo olduğuna dair uyarı ekranı) , seri numaralar , tarihsel ve rakamsal kısıtlamalar iyi birer örnek teşkil ettiğinden yazılarımda kullanılmaktadır.
Crackerlar ve programcılar arasında karşılıklı bir yarış vardır , programcılar yeni bir koruma geliştirir crackerlar onu kırar , programcılar daha yeni bir koruma geliştirir ve asla kırılamayacağını idda eder , crackerlar yeniden kırar ve bu sefer programcıları tiye alırlar , programcılar buna çok kızarlar ve artık programlarının içine sadece kırmaya çalışan crackerların farkedeceği türden mesajlar bırakırlar ( PleasefollowmeMRCracker adında bir fonksiyon buna bir örnek) bu iş böylece sürüp gider ;ama asla kırılamayacağı iddia edilen neredeyse tüm programlar her zaman kırılmıştır. Yani galip gelen taraf hep cracker’lardır. Neyse şimdilik bu konuya burada ara veriyorum. Bir programı kırmak için onun dissasemble edilmiş koduna ihtiyacınız vardır , birincisi ya bir dissasembler programı kullanarak o programın dead list denilen ( çalışır vaziyette olmayan bir exenin içeriği) olan assembly kodunu elde edersiniz yada ikinci yol olan debugger kullanarak live(canlı ; yani o anda çalışan ve cpu’da işlenen assembly kodu)olarak bu programın içeriğini görüntüleyebilirsiniz. Birinci yöntem daha uzun süre gerektirir , çü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 yöntem ise daha basittir , sadece o anda işlenen kodun birkaç satır öncesi ve sonrası da dahil olmak üzere görüntülenir . Yeni başlayanlar için birinci yol daha kolay ve cazip gelebilir , çünkü bu yöntemle assembly kodlarının yanında daha fazla açıklama vardır ve bir altyordamın nerelerden çağrıldığını ve hangi adresleri yada değişkenleri kullandığını daha açık bir şekilde görebilirsiniz , ama ben bir an önce kırayım şu programı diyorsanız debugger kullanmak daha işinize gelicektir , bunun birinci sebebi disassembler programların exe’yi disassemble etmek için harcadığı zamandan kurtulmuş olacaksınız ikinci sebebi ise breakpoint (Durak noktası) koymadaki kolaylıktır. Debugger kullanarak daha dinamik breakpoint’lar koyma şansına sahipsiniz . Örnek vermek gerekirse: Disassembler olarak Wdasm programını ve Debugger olarak da Softice programını ele alalım. Önümüzde bir program var ve registiration olanağı var , bizden bir kayıt numarası (programın parası ödendikten sonra size yollanan şifre) istiyor , birinci yol ile yani disassembler ile kırmamız için bu programın exe’sini disassemble etmemiz gerekiyor , bu en azından 10 dakikamızı alıcaktır. Daha sonra programın kullandığı windows API’lerinin listesinden getwindowtexta fonksiyonunu arayıp tümüne breakpoint koyma şansımız var ama bunun için fonksiyonun geçtiği herbir satıra listeden çift tıklayarak gelip breakpoint olarak işaretlememiz gerekiyor bu da en azından 5 dakikamızı alıyor , ve programı çalıştırıyoruz (aslında burada wdasm programının debugger özelliğini kullanmış oluyoruz aksi halde işimiz çok daha uzun sürer) .Program çalışmaya başladıktan sonra getwindowtexta fonksiyonunu çağıran her breakpoint’te duraklayacağız , çünkü biz breakpointları koyarken hangisinin neredekine ait olduğunu bulmamız zor olacağından biz tümüne koyduk ve bu yüzden de bayağı vakit kaybedip istediğimiz registiration ekranındaki geçen getwindowtexta fonksiyonuna ulaşabildik. Buraya kadar en azından 30 – 40 dakika vaktimizi aldı , bundan sonra ise disassembler ekranındaki satırları rahatça inceleyip gerekli kodu , algortimayı yada patch uygulayacağımız noktayı bulduk. Şimdi aynı programı softice ile kıracağımızı düşünelim , yapacağımız çok basit programı çalıştırıp registiration ekranına geliyoruz uydurma bir şifre yazıp OK tuşuna yada bunun benzeri tuşa basmadan evvel Softice programına atlıyoruz ctrl+D ile ; şimdi sıra breakpoint’u koymaya geldi bpx getwindowtexta yazıp enter’a basıyoruz , ve tekrar programımıza dönüyoruz şimdi OK tuşuna yada herneyse o tuşa basıyoruz , işte! Softice’ın içindeyiz bundan sonrası ise beş dakikamızı alır ve registiration kodunu yada patch uygulayacağımız noktayı tespit ediyoruz . İşte bu kadar bu yöntem ise en fazla 10 dakikamızı aldı. Tabii ki disassembler programların da çok işe yaradığı zamanlar yok değil mesela bazı programları disassemble ettikten sonra programın içinde geçen textlere ait referans satırlarına daha kolay ulaşıp bazen debuggerda çok vaktimizi alabilecek crackleri çok daha kısa bir zamanda gerçekleştirmemiz de mümkün olabiliyor . Bilhassa debugger ile uğraşıp ta bir türlü istediğiniz API ye denk gelen bir breakpoint bulamadığınızda . Şimdilik bu konuda yazıcaklarım bu kadar ilerki aylarda bu konunda ayrıntılarına gireceğiz mesela debugger ile breakpoint’u bulduktan sonra crack uygulamamız gereken noktayı nasıl tespit edeceğimizi ve bunun hakkında ipuçları . Gelelim ikinci konumuza yani kırarken kullandığımız araçlar ; tahmin ettiğiniz gibi softice debugger olarak , wdasm disassembler olarak ( ben bunu genelde TR-Scene deki yazılarım için kullanıyorum) , hexworkshop hexeditör olarak ve patch uygulamak için , pcom yada herhangi bir c++ yada pascal derleyici de crack yada keymaker hazırlamak için . Yine bana gelen mailler içinde sıkça sorulan bir soru breakpoint ların uygulanamaması hakkında , yani birçok okuyucu bpx getwindowtexta yazdığında hata mesajı aldığını yazıyor . Bunun sebebi softice ‘ın bu API den habersiz olması , peki nasıl haberi olacak ? Softice programını ilk kurduğunuzda yapmanız gereken birkaç şey var yani benim size tavsiye edebileceğim , 1- Symbol loader’a girip edit menüsünden Softice initialization settings yazan yere tıklayıp , initialization string yazan yere x; den sonra şunları eklemeniz lines 40; wd; wr; wc 20; code on; yani string şöyle görünmeli’ X;lines 40;wd;wr;wc 20 ;code on; ‘ buradaki 40 ve 20 rakamlarını kullandığınız ekran çözünürlüğüne göre ayarlayabilirsiniz , code on komutu assembly komutların yanında hexedecimal olarak makine kodlarının da yer almasını sağlıyacak bu da bize patch hazırlamakta lazım olacak . 2-winice.dat dosyasını notdefteri ile açıp başında EXP ibaresi olan tüm satırların önündeki ; ( noktalı virgül ) işaretlerini kaldırmanız gerekiyor işte böylece softice windows API lerinden haberdar olacak , ayrıca softice da iken başını hatırladığınız bir API yi bulma için exp kmoutunu kullanabilrisiniz mesela ‘exp getwindow’ komutu bize getwindow ile başlayan tüm API leri listeleycektir. Peki softice ile patch uygulayacağımız nktayı bulduktan sonra ne yapacağız diyorsanız işte burda hexeditörün kullanımı devreye giriyor , diyelimki jz xxxx:xxxx olan bir komutu jnz yada jmp xxxx:xxxx yaptığımızda programın çalışacağını tespit ettik , o zaman hemen elimize bir kağıt kalem alıp bu satırdan bir yada iki satır evvelinden başlayarak bir yada iki satır sonrasına kadar olan komutların hexedecimal formattaki makine kodlarını yazmaya başlayalım (yukarıda bahsettiğim code on komutu bunları görmemizi sağlıyacak ) , not alma işlemimiz bittikten sonra Hexworkshop programı ile yada herhangi bir hexeditör ile bu exe yada dll dosyasını açıyoruz ve az evvel not aldığımız hex kodları bu dosya içinde tümünü olmak üzere aratalım , büyük bir ihtimalle bir yerde bulacaktır bu kodları işte burası bizim crack’i uygulayacağımız nokta , ister bu noktanın ofset adresini hexworkshop tan okuyup bir yere yazarak c++ yada pcom gibi basit bir derleyici ile gerekli değişikliği yapacak bir crack yazabiliriz yada daha hexworkshop’ta iken istediğimiz kodu değiştirebiliriz. Böylece crack’imizi sabit bir hale getirmiş olduk . Aynı şekilde crack uygulayacağımız noktayı wdasm programından da elde etmemiz mümkün , dikkat ederseniz wdasm programın en altında bulunan status bar ‘da o anda olduğumuz satırın ofset adresi yer alır. İşte adım adım bir programın crack edilme işlemi bu şekilde gerçekleşiyor . Bu arada bilmeniz gereken birkaç husus daha var mesela op kod denilen makine dili komutların karşılığı yani softice da iken assembly kodların sol tarafında görülen hexedecimal rakamların anlamları , biraz çalışma ile bize lazım olacak bu op kodları ezberlemek fazla zamanınızı almayacaktır.Yada internetten intel op codes olarak arattıp bu kodların tümünü içeren dokümalara ulaşmanız da o kadar zor değil . |
![]() |
![]() |
Konuyu Görüntüleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir) | |
|
|
![]() |
||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Van Gölü’ndeki kirlilik adım adım izlenecek | jockeя | Eskiler (Arşiv) | 0 | 08-26-2008 10:28 AM |
Ey genç adam, yolumu adım adım bilirsin! | GooD aNd EvıL | Eskiler (Arşiv) | 0 | 06-26-2008 12:37 PM |
adım adım msn hacklemek artık hackleyemeyene bişey demiom_! | TiKkY_BoY | Eskiler (Arşiv) | 18 | 07-06-2007 02:33 PM |
Adım Adım Cracking (Program Şifrelerini Kırma Anlatım) | qarizma | Eskiler (Arşiv) | 1 | 11-17-2006 03:59 PM |