
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 içerisinde CPU nun anlayacaðý dilde
ve iþletim sisteminin özelliklerine baðlý olarak makine dili olarak Hexedecimal
(onaltýlýk) bir düzende bulunur.Makine koduna çevrilmiþ programlar içerisinde
programcýnýn yazmýþ olduðu kodu barýndýrmazlar. Öyle ise 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 (binary) dönüþtürülerek CPU ‘ya gider
0 ve 1 ler bilgisayarýn iþleyiþindeki temel olan elektrik sinyalý var
(1) elektrik sinyali yok (0) olarak CPU tarafýndan yorumlanarak programlar
iþler.
Makine dilininin bu zor ve anlaþýlmaz oluþundan dolayý ASSEMBLY dili geliþtirilmiþtir.
Bu dil bilgisayar dilleri içerisinde en alt düzey programlama dilidir.
Bu dil ile yazýlan programlar CPU ya direkt olarak hitap eder . Fakat
bu dil ile uzun programlar yazmak ta oldukça zor ve gereksizdir. 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 ile prosedür veya fonksiyonlar yazýlýr. Günümüzde
bu sadece bazý aygýt sürücülerini yazarken yada virus lerde kullanýlmaktadýr.
Gelelim Windows programlarýna ; Windows için yazýlan programlar da çeþitli
programlama dilleri yada program geliþtirme araçlarý ile yazýlarak derlenir
ve çalýþtýrýlabilir kod haline dönüþtürülür. Bu çalýþtýrýlabilir kodun
DOS programlarýnda en belirgin farký içerisinde kullandýðý iþletim sistemini
özel fonksiyonlarýdýr. DOS iþletim sisteminin INTERRUPT denilen bazý fonksiyonlarý
vardýr. Bu fonksiyonlar windows için yazdýgýnýz programlarýn içerisinde
direkt olarak yer almazlar bunun yerine Windows iþletim sisteminin hali
hazýrda yazýlmýþ fonksiyonlarý kullanýlýr.(Bu konu üzerinde istenirse
daha ileriki yazýlarýmda durabilirim , ama þimdilik bu kadar yeterli diyorum)
Hepimizin mutlaka dikkatini çekmiþtir Windows / System dizini altýnda
bir çok DLL uzantýlý dosya mevcuttur. Ýþte bu dosyalar içerisinde programlarýn
çalýþýrken kullandýðý birçok fonksiyon yada taným bulundururlar. Ýþte
bu fonksiyonlar programlarý kýrmamýza yardýmcý olacak noktalardýr. Daha
önce de belirttiðim gibi programlar makine dilinde bulunuyordu dosyalarda
, öyleyse bunlarý anlayabileceðimiz bir þekile sokmak için bu programlarý
ASSEMBLY diline çevirmemiz gerekecek. Bu iþ için kullanacaðýmýz programlara
Disassembler denilir . Programlarýn ham içeriðini yani onaltýlýk sayý
düzenindeki içeriðini görüntüleyebilmek içinse HEX editör denilen programlara
ihtiyacýmýz olacak . Bunun haricinde ise bazen programlarýn CPU daki iþeniþ
sýrasýndaki içeriðini görüntüleyebilen ve aslýnda programlardaki hatalarý
ayýklamak için kullanýlan Debugger denilen programlar ise ileride çok
iþimize yarayacak.
Öyle ise program kýrmak için gerekli olan þeyleri þöyle sýralayabiliriz.
1-ASSEMBLY dilini bilmek 2- Windows iþletim sistemini iyi tanýmak ve fonksiyonlarýný
bilme (C++ kullananlar bu konuda pek zorluk çekmiyecektir ) 3-Ýyi bir
Disassembler programý 4-Hexeditör programý 5-Debugger programý 6- Sabýr
(en gerekli þey) . Bu saydýklarýmýn hepsine sahip olduðunuzda program
kýrmak için herþeyiniz vardýr anlamýna geliyor.
Ýsterseniz küçük bir örnek ile baþlayabiliriz. Bu iþ için oldukça kolay
bir korumasý olan ve bizimde kullanacaðýmýz bir program olan HEXWORKSHOP
ile iþe baþlayabiliriz. Bu program daha önce birçok kiþi tarafýndan ve
farklý yöntemler izlenerek kýrýlmýþtýr . Benim izleyeceðim yötem ise bazýlarýnýza
saçma gelebilir ama unutmayýki buradaki amacým kendimi ispat etmek deðil
sadece öðretmektir.
Hedef Program :HexWorkshop 2.52
Nereden Bulurum : www.bpsoft.com
Kýrarken Kullanýlan Programlar :Wdasm89 & HexWorkshop 2.52
Öncelikle programýn Demo yada deneme sürümü olmasýnýn bize saðladýðý dezavantajlarý
inceliyoruz. Programý ilk açtýðýmýzda karþýmýza bu programýn 20 gün süreli
bir demo versiyon olduðunu hatýrlatan bir pencere ile karþýlaþýyoruz.Eðer
Bu versiyonu bu yakýn tarihte kurduysanýz ayrýca size upgrade etmenizi
öneren bir baþka pencere daha çýkýyor karþýmýza . Bunun haricinde programýn
Demonstration Version diye bir menüsü olduðunu görüyoruz , buraya týkladýðýmýzda
ise bir Serial Number soran pencere ile karþýlaþýyoruz. Öyleyse bize burada
bir doðru serial numara yada programa doðru olduðunu zannetirecek bir
yöntem gerekli. Programý disassemble ederek iþe baþlýyabiliriz. Programýn
disassemble iþlemi bittikten sonra kullandýðý windows fonksiyonlarýný
inceleyelim functions menusunden imports ‘a baktýðýmýzda user32.getwindowtexta
fonksiyonu iþe yarayabilir diyoruz ve ilk denememizi bu fonksiyon ile
yapýyoruz . Programý load edip user32.GetWindowTextA fonksiyonlarýnýn
kullanýldýðý yerlere durak noktasý koyuyoruz. Aþþaðý yukarý 7- 8 arasý
durak noktasý koyduktan sonra programý çalþýtýrýp Demonstration Version
menüsünü týklayýp Serial Number olarak herhangi bir no giriyoruz.Ben 99999999
girdim ve register tuþuna bastýðýnýzda HOP Wdasm içinde buluyoruz kendimizi
yani iþe yaradý !! . Daha sonra F8 tuþu ile hatalý Serial Number girdiðimize
dair ekran çýkana kadar devam ediyoruz ilerlemeye. Bu noktaya gelene kadar
iþlenen kodlarý iyi takip edin çünkü en son iþlenen Dallanma komutunun
yeri çok önemli yani (je , Jne , Jz , jnz , Ja , Jb gibi ) . En nihayetinde
hata ekraný çýktýðýnda OK ye basýp iþlemi tekrar yapalým ve her iþlenen
koþullu dallanma komutuna bir durak noktasý daha koyalým.
:0043178B E8E8DC0100 call 0044F478 à Serial Number ýn ekrandan okunmasý
:00431790 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FFFFFEFC]
:00431796 83C164 add ecx, 00000064
:00431799 E8F21BFDFF call 00403390
:0043179E 50 push eax
:0043179F 8D45DC lea eax, dword ptr [ebp-24]
:004317A2 50 push eax
:004317A3 E8E8B90000 call 0043D190
:004317A8 83C408 add esp, 00000008
:004317AB 680C534800 push 0048530C
:004317B0 8D45DC lea eax, dword ptr [ebp-24]
: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 [ebp-24]
:004317C7 50 push eax
:004317C8 E893970000 call 0043AF60
:004317CD 83C404 add esp, 00000004
:004317D0 8945EC mov dword ptr [ebp-14], eax
:004317D3 E907000000 jmp 004317DF
:004317DF 837DEC00 cmp dword ptr [ebp-14], 00000000
:004317E3 0F8479000000 je 00431862 à Girilen Serial Nuber Yanlýþ ise dallanma
olur
:004317E9 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FFFFFEFC]
:004317EF 83C164 add ecx, 00000064
:004317F2 E8991BFDFF call 00403390
:004317F7 50 push eax
Yukarýda görülen kod üzerinde daha fazla da çalýþabilirir ama ben buna
þu an gerek duymuyorum ,çünkü bu program girilen numarayý dogru kabul
ettikten sonra çalýþtýðý dizinde bir dosya oluþturuyor. REG uzantýsý olan
bu dosya var olunca yada içerisinde belli bir imza olunca girilen serial
numaranýn doðru olup olmadýðýný bir daha hiç kontrol etmiyor ve böylece
sonsuza dek Full version olarrak çalýþýyor .Anlaþýldýðý gibi bu JE 00431862
komutunu JNE 00431862 yada tamamýný NOP komutuna çevirirsek bu program
gireceðimiz herhangi bir kodu kabul edicek ve Crackimiz tamamlanmýþ olucaktýr.Wdasm
programýndan aradýðýmýz byte larýn 30BE3h adresinde yer aldýðýný görüyoruz
. Hexworkshop programýnýn kendisini kullanýp Hworks32.exe dosyasýný açýp
30BE3h adrsine gidiyoruz 0F8479000000 byte larýný 909090909090 byte larý
ile deðiþtirip baþka bir isimle kaydediyoruz. Çünkü ayný isimle o an hafýza
da olan bir dosyayý kayýt edemeyiz . Daha sonra HexWorkshop programýndan
çýkýp orijinal dosyanýn adýný baþka bir isimle kaydedip kýrýlmýþ dosyayý
orijinal adýyla kaydedersek program hazýr olur. Geriye çalýþtýrýp herhangi
bir Serial Number kodu yazýp Register etmek kalýyor. Bu aylýk bu kadar
, önümüzdeki ay yeni konular ve daha ileri tekniklerle birlikte olmak
üzere Hoþçakalýn.
Herhangi bir konudaki düþünce ve önerilerinizi mail adresime gönderebilirsiniz.

|