Crack
nedir.?
Herkezin crack konusunda bir miktar bilgisi vardir ancak bu
konuda en iyiyim demek genelde çok zordur.Ilk basta zor gibi görünebilir
fakat isin içine girdikçe çok zevkli oldugunu farkedersiniz.
Crack dünyasina girdikçe PC nize ve onda kullandiginiz
programlara daha fazla hakim oldugunuzu farkedersiniz.Bu sayede
assembly programlama dili konusunda da bir miktar bilginiz
olacaktir.Zaten asil amaç budur.Burada anlatilan yöntem sadece
programlarin genel çalisma prensipleri konusunda bilgi vermek için
yazilmistir.Dogru olan daima bir programi parasini verip lisansli
olarak kullanmaktir.O yüzden buradaki bilgileri sadece merakinizi
gidermek için kullanin ve bende bunun için anlatiyorum.
Crack için neye ihtiyacimiz var.? Assembly dil bilgisi elbette
size bir miktar faydali olacaktir ancak bu konuda bir bilginiz
yoksa hiç dert etmeyin çünkü sadece birkaç tane komuta göz
asinaliginiz yeterli olacaktir tabii baslangiç için.
Gerekli Software
Ilk öncelikle ilk ihtiyacimiz olacak program W32Dasm8.9 and
Hiew.Bu programlari çesitli arama motorlarindan ariyarak
bulabileceginiz gibi benden maillede isteyebilirsiniz.
Baslangiç Için Gerekli Birkaç Detay
ASM kodlari ile ugrasmak pek kolay degildir, bütün hepsini
bilmek zordur ancak gerekli olan birkaç tanesi üzerinde duralim.
ASM kodlarinda her iki basamak bir byte gösterir.Yani 75564345=4
byte'dir.75 bir byte,56 bir byte gibi.Eger biz bir kodu
degistirmek istersek daima iki basamagi degistiririz.Mesela 75 ki
bu hexadecimal da jne( jump not equal) anlamindadir 74 'e
degistirilirse je (jump if equal) komutuna degismis olur.Bu
degisim çogu kez bir programi register yapmak için yeterlidir.
(Programin kendi içinden ürettigi bir seri nosunu sizin
girdiginiz bir seri nosuyla karsilastirip sonucunda hata veren
bir komutu hata vermeyen yani register edilmis varsayan bir
komuta degistirebilirsiniz.)Tabii bu bu kadar kolay olmaz
herzaman ama baslangiç için yeterlidir.Asagida gerekli olan
birkaç komutu yazdim.
Je:Jump if equal
Jne:Jump not equal
nop:no operation
call: call a operation
jmp: jump
Program Koruma Tipleri
Programlar için çesitli koruma tipleri mevcuttur.Mesela cd
driverda cd olup olmadigini check eden koruma tipleri,password
koruma tipleri ki eger dogru password'ü girmesseniz ya program
register olmaz yada çalismaz ve son olarakta süreli programlar
ki özellikle dergilerin verdigi cd lerdeki programlar böyledir
süresi dolunca (30 gün, 90 gün) program çalismaz.En kolay
kirilan programlar windows altinda çalisan ve register etmek
istediginizde bir pencere içerisinde hata mesaji veren
programlardir.Mesela programi register etmek için sizden bir
user name ve password ister fakat siz eger para veripte dogrusunu
almadiysaniz yazacaginiz seyler size "invalid register
number" gibi yada benzer hata mesajlariyla geri dönecektir.(Tabi
dünyada görülmemis derecede balli biriyseniz ve attiginiz
password tutarsa o ayri bir konu).Simdi ben size bir örnekle karisik
görünen ancak çok basit olan bu isin nasil yapilacagini
bedavaya gösterecegim.Örnek olarakta WinRar95 programini
kullanacagiz.Bu programin demo versiyonlarini dergi cd lerinde
bulabilirsiniz.
Cracking'e Baslayalim
Ilkönce su Winrar95 programini inceleyelim.Programi çalistirin.Üst
kösede "Winrar(unregistered version)" yaziyor.Simdi
"options" a clikleyin ve register'a basin.Karsiniza
sizden bir name ve registration no isteyen bir windows mesaj
kutusu çikti.Bunlara rastgele bir seyler yazin.Mesela name'e
"türkiye" registration number'ada "123456".Simdi
ok 'e basin.Hoop "Registration Failed" yazdi.Hiç
sasirmadiniz tabiki ama programin en zayif noktasi duruyor su
anda karsinizda.Bu hata mesajini bir kenara yazin.Winrar95.exe
den iki kopya yapin bunlarin birinin uzantisini w32(Winrar95.w32)
digerininkinide .exx yapin.Simdi disassembler programimiz olan
W32Dasm yi çalistiralim.Open file to disassembler komutunu
bulalim menüden ve Winrar95.w32 yi disassemble edelim.Islem
bitince karsiniza bir sürü anlamsiz sey çikabilir font
tipinizi degistirmeniz gerkmektedir.Disassembler butonuna basin
font'a gidin select fontu seçip Arial 'i seçin.Simdi ekran daha
anlamli hale geldi.Simdi yukarida "Str References"
butonunu bulup ona tiklayin.Karsiniza programdaki bütün hata
mesajlari çikti.Bizim hata mesajimizi
hatirlayin."Registration Failed".Onu bulun ve iki kez
tiklayin.Simdi arkada W32Dasm ekraninda size bu hata mesajini
veren program komut satirindasiniz.
Satirda görecekleriniz sunlar olacaktir.
:00413A8F 6A6A push 0000006A
:00413A91 E863640000 call 00419EF9
:00413A96 59 pop ecx
:00413A97 50 push eax
:00413A98 FF7508 push[ebp+08]
* Reference To: USER32.MesssageBoxA, Ord:0000h
:00413A9B E8120B0100 Call 004245B2
:00413AA033C0 xor eax,eax
:00413AA2 A358674200 mov dword ptr [00425758],eax
:00413AA7 A338564200 mov dword ptr [00425638],eax
:00413AAC564200 mov dword ptr [0042564C],eax
:00413AB1 EB56 jmp 00413B09
*Referenced by a (U)nconditional or (C)onditional Jump at Adress:
<-------Buraya Dikkat
:00413A82(C)
*Possible StringData Ref from Data Obj ->"Winrar"
:00413AB3 68D86A4200 push 00426AD8
:00413AB8 FF359C644200 push dword ptr [0042649C]
*Reference To: USER32.Set WindowTextA, Ord:0000h
:00413ABE E86B0A0100 Call 0042452E
*Possible Reference to String Resource ID=00048 :
"normal"
:00413Ac3 6A30 push 00000030
*Possible Reference to Dialog:ARCINFODLG,CONTROL_ID: 006C
"Registration Failed" üzerine tikladiginizda karsiniza
çikan ASM kodlari bunlar."Referenced by a (U)nconditional
or (C)onditioanl Jump At Adress:" satirina ve ondan sonra
gelen"I:00413A82 (C)" adresine dikkat edelim.Iste bu
adresteki komut bizi hep buraya yani hata mesaji aldigimiz komut
satirlarina yolluyor.Öyleyse simdi oraya gidelim.Win32dasm
ekraninin yukarisinda bulunan "Goto CD LOc"(Goto Code
Location) butonuna tiklayalim.Yeni bir pencere açildi ve o
pencerenin sag alt tarafinda "Code Offset (Hex)" yazili
bir kutucuk var.Simdi biraz önceki 00413A82 adresini buraya yazip
ok tusuna basalim.Bizi "Registration Failed" mesajina
yollayan komut satirindayiz iste."Jne" komutunu görebilirsiniz
orada.Bu komutun üzerindeyken satirin rengini yesile
degistirdigine dikkat edin.Ekranin altina bakin orada asagidaki
gibi bir satir göreceksiniz.
Line:34985 Pg 467 of 998 Code Data @:00413A82 @Offset00013082h in
File:Winrar95.w32
@Offset 'den sonraki 00013082 sayisi bizi ilgilendiren sayi
oluyor.Yanindaki "h" harfini ve basindaki
"000" lari hesaba katmadan "13082" sayisini
bir kenara not edelim.Simdi HIEW programimizi çalistirip
programimizi kirma vakti geldi iste merak etmeyin çok az kaldi.Hiew
programinin içinde istediginiz exe file'ini çalistirabilirsiniz.WinRAR95.exe'yi
çalistirin.F4'e basin ve decode'u seçin.Bütün asm kodlarini görebilirsiniz.F5'e
basinsol üst köseye biraz önce kaydettiginiz @Offset yanindaki
numarayi yazin.Simdi jne komutunun satirindasiniz.F3'e
basin.75(jne)'u 74(je)'a degistirin ve f9'a basin.F10'a basip
programdan çikin.Iste o komutu degistirmis olduk.Denemek için
WinRar95 programini çalistiralim.Registration'a gidip kafamiza göre
birseyler yazip ok tusuna basalim evet registration okeylendi.Bu
kadar basit.Ama bir problem var.Yukarida hala "Unregistered
Version" yaziyor.Hemen W32Dasm'yi çalistiralim String Data
References Butondan "Unregistered Version" ifadesini
arattiralim.Iki tane var.ÇIft tiklayalim.Benzer satirlar göreceksiniz."Referenced
by a (U)nconditional or (C)onditioanal Jump At Adress:"
yazan yerin altindaki komut satirini yine Goto Code Location
butonundan arattirip o komut satirina gidip @offset 'den sonraki
sayiyi bir kenara yazalim (180AA). Simdi Hiew'a girip o satira
gidelim ve Jne 'u Je 'a (75'i 74'e) degistirip save edip çikalim.Simdi
WinRAR95'i çalistiralim.Oldu iste ne yukarida "Unregistered
Version" yaziyor nede register etmek istedigimizde bizi
reddediyor.Bu kadar basit.