Code Cracking e giris
Piyasadaki Programlari kirmak için http://astalavista.box.sk/ den yada
benzeri sitelerden crack ler indirerek programlari çalisir hale
getirmeyi yada Nag Screenlerden kurtulmayi biliyorsunuzdur.
(Bilmiyosaniz zaten bu sayfada size göre bisi yok)
Peki bu programlarin nasil yapildigini merak etmedinizmi hiç?
Aslinda düsünüldügü kadar zor bir is diyildir... Biraz
deneyiminiz varsa 5 dakkanizi harcayip istediginiz programi
internetten crack indirmeden kendiniz kirabilirsiniz.
Öncelikle biraz programlama ve ASM Bilgisine ihtiyaciniz var, Eger assemble size birsey ifade etmiyorsa caninizi sikmayin Holy babaniz size anlatir bisiler... Eger iyi düzeyde Programlama bilginiz varsa, Programcilarin Kolayca kirilmayan programlar yazmalari için dikkat etmeleri gereken noktalari da burda açiklicam... simdilik assemblein Maiknenizin anladigi dil oldugunu söyliyelim.
Öncelikle sunu söylemeliyim ki Her programi kiran kesin bi yönetm yoktur, Biraz kafayi yormaniz gerekio... elinizdeki Programlari cracklemek için assagidaki programlara ihtiyaciniz olacak..
Programin adi | Açiklama |
Hex Workshop | Çok kullanisli bir Hex editor. |
W32Dasm | 32 Bit Disassembler, Exenin kodlarini birazcik daha anlasilir bi hale sokup bize faydali oluyor. |
RegMon | Registry Monitor,Programi kullanmakta oldugunuz zaman içinde Windows Registrysine eklenen yada degistirilen herseyi size rapor eder. |
FileMon | File Monitor, Hangi dosyanin neresinde ne degisiklik yapildigini bildirir |
Numega Softice | Debugging Programi ama Dos tabanli oldugu için Windows Milennium ve sonrasinda çalismiyor, onun için açiklamasina girmicem |
Isterseniz öncelikle bu is için en çok isinize yariycak program olan Hex Workshopu kendisini kullanarak cracklemekle basliyalim :)
Registration
Key isteyen Programlari kirma:
(Hex Workshopu kullanarak Hex Workshopu crackliyoruz :) ehue
Mesela Kimi program düzgün çalismasi
için size Registration key sorar...
Alin iste Hex Workshop V2.50 böyle bi program :)
Basliyoruz.. Öncelikle programi açin... help de registration u gördünüz mü? sizden bi registration key istio... sallayin bisiler... Tutmadi dimi? Eger çok balli biri diyilseniz hayatiniz boyunca denesenizde tutturamazsiniz. Makine Salladiginiz kod üstünde islem yapar, programin güvenligi açisindan verdiginiz user name e göre sifrenizde degisik olmak zorundadir çünkü...
ana mantik en basite indirgenmis olarak sudur...
eger
girilen usename ve sifre algoritmaya uyuyorsa... Bu adam bu
programi istedigi gibi kullanabilir.
eger girilen usename ve sifre algoritmaya uymuyorsa... Siktirip
gitsin, bedawa dagitmiyoruz...
Algoritmayi çözmek gerçekten zordur, onun yerine biz ana mantigi
tersine çevirmeye çalisicaz..
yani program koduyla oynayarak adamin yanlis sifre girmesi
halinde programa dogru sifre girilmis muamelesi yaptirmaya çalisicaz...
bu durumda makine, mantik olarak dogru username ve sifre
girilirsede yanlis sifre muamaelesi uyguliycak :) ama söyledigim
gibi salliyarak dogru sifre girmek imkansiz gibi bisi zaten.
Herneyse Sifreyi kafadan attiniz... size bi hata mesaji geldi.. error mesaj penceresinin basligina bakin ne yaziyo...
"Registration unsuccessful" bunu bi yere not edin lazim olucak.
Hex workshopu kapatin ve bi yere programin exe dosyasinin(HWORKS32.EXE) bi yedegini alin.
simdi W32Dasm prgoramini açiyoruz... menuden disassembler > open file to disassemble i seçiyoruz. burdan HWORKS32.EXE yi açiyoruz, ve program bizi biraz beklettinten sonra önümüze makine dilinde birsürü kod çikariyo...
bi bok anlamadiniz dimi çikanlardan :)
Herneyse Yine menuden Refs > Dialog references i seçelim. ve burda biraz önce gördügümüz "Registration unsuccessful" yazisini bulalim. hmm sanirim orda yok, unutalim o zaman simdilik... assagidakileri uygulayalim... eger aradigimiz pencerenin adini burda bulsak asagidakilere gerek kalmazdi ama bulamadik napalim...
Menulerden Search>Find text e tiklayarak Registration Unsuccessful yazalim.
söle bisi çikicak karsimiza...
Name:
DialogID_0075, # of Controls=003,
Caption:"Registration Unsuccessful",
ClassName:"" 001 - ControlID:FFFF, Control Class:"STATIC" Control Text:"You have entered an invalid registration number." 002 - ControlID:FFFF, Control Class:"STATIC" Control Text:"Please confirm you entered a valid..... 003 - ControlID:0001, Control Class:"BUTTON" Control Text:"&OK" |
Yani kisaca kafadan attigimiz serial i yazinca karsimiza çikan diyalogun makina dilindeki hali....
Üstteki satirdaki DialogID_0075 e dikkat edelim
simdide...
Tamam, simdi Dialog references e dönelim programin Refs
menusundeki.
Dialog: DialogID_0075 satirini bulup çift tiklayalim.
azicik yukari scroll edelim... su satiri gördükmü?
* Possible Reference to Dialog: DialogID_0075
Burda Asm ile yazilmis satirlar var, yukaridaki satirin anlami su... Program bu noktada Registration Unsuccessful baslikli diyaloga basvuruyor. Bu pencere yanlis sifre girildiginde çiktigina göre aradigimiz kod buralarda biryerlerde fakat devam etmek için biraz Assemble ögrenmemiz gerekicek :)
Push, Lea, call, jne, jmp, jne, .... bunlarin hepsi asm komutlari fakat biz konu program kirmaysa bizi ilgilendirenler sadece mantiksal seçim yaptiran komutlar... su suna esitse söle yap, bu bundan büyükse böle yap falan gibi seyler yani... Açiklamalari yapicam birazdan siz sadece okuyun anlamasanizda simdilik... Bu tip komutlara örnek olarak Jne, Jmp, Je, jae, jb, je falan gibi komutlar var asm dilinde... Farkettiyseniz hepsi J harfiyle basliyo...
Program Registration unsuccessful diyaloguna ihtiyaç duyduguna göre bu noktadan biraz önce sifrenin dogru yada yanlis oldugunu kontrol eden kod yazili olmali, bu yüzden * Possible Reference to Dialog: DialogID_0075 satirindan yukari dogru her satira bakip J ile baslayan komut ariyoruz... biraz yukari çiktiktan sonra asagidaki gibi satirlar görüceksiniz. highlighted satiri asagidaki gibi Je ile baslayan komutun üstüne gelin. o satir yesil olucak...
simdiii..... Je li satiri sectikten sora status bara bakiyoruz @Offset yazisini gördünüzmü? onu bi köseye not ediyoruz... sonundaki h harfini ve bastaki 0lari not etmenize gerek yok.. hatta not etmeyin. yani 256B3 'ü not edin.
Burdaki offset, aradigimiz kodun exe içindeki yeri... tamamdir istedigimizi aldik artik W32Dasm yi kapatabiliriz. Hex Workshopu açin, hatirliyorsaniz bi yedegini almistik, siz program files in icinde duran orjinalini açin...
Simdi menuden File > open a tiklayarak daha önceden yarattigimiz Hworks.exe nin yedegini açalim. karsiniza yine bi sürü sey çikti... Edit Menusunden Gotoyu seçin, Beggining of File'i tiklayip Offset'e 256B3 yazin. aynen assadaki gibi yani..
Gotoya tiklayin... karsiniza söle bisi gelicek...
Imlecin bulundugu konumun yaninda 0F 84 bulunuyor... Bu biraz önce W32Dasm programinda gördügümüz Je komutunun Hex kodundaki anlami bu... Hatirlarsaniz W32 asm programinda Registration unsuccessful diyalogundan önceki J ile baslayan ilk komutu aramistik. bu komut Je yerine baska birseyde olabilirdi o zaman burda 0F 84 yerine baska bir kod da olabilirdi... Yani bu offsette 0F 84 bulmamizin sebebi serialin dogrulugunun Je komutuyla kontrol edilmesidir. farkli komutlarin Hex kodlarini da assagida verdim... ASM komutlari genellikle kisaltmalardan olustugu için yanlarina ingilizce anlamlarini yazdim.
Hex Kodu: | ASM Kodu: | Anlami: |
75 yada 0F85 | jne | jump if not equal |
74 yada 0F84 | je | jump if equal |
EB | jmp | jump directly to |
90 | nop | no operation |
77 yada 0F87 | ja | jump if above |
0F86 | jna | jump if not above |
0F83 | jae | jump if above or equal |
0F82 | jnae | jump if not above or equal |
0F82 yada 72 | jb | jump if below |
0F83 yada 73 | jnb | jump if not below |
0F86 yada 76 | jbe | jump if below or equal |
0F87 | jnbe | jump if not below or equal |
0F8F yada 7F | jg | jump if greater |
0F8E | jng | jump if not greater |
0F8D | jge | jump if greater or equal |
0F8C | jnge | jump if not greater or equal |
0F8C | jl | jump if less |
0F8D | jnl | jump if not less |
0F8E | jle | jump if less or equal |
0F8F | jnle | jump if not less or equal |
Eveet kodun yerini bulduk, kodu da bulduk sira geldi kodu ters çevirmeyee... Çok basit... Je nin anlami Jump if equal, O zaman bunun yerine Jump if not Equal (Jne) komutunu koyarsak kod tam tersine çalisicak. Jne nin hex karsiligi 0F 85... o zaman buldugumuz degerin yerine bunu girelim... amman dosyaya insert yapmiyalim, dosya boyutu degisirse büyük ihtimalle çalismaz çünkü. 0F 85 in üstüne yazalim yani, 84 ü 85 yapalim. üstüne yaziyorsaniz Hex Workshop sizi uyaricak zaten.
Eveet bunuda yaptiysaniz artik save edin, Hex workshoptan çikin. Hex workshopun exe dosyasini silip yerine degistirdigimiz exe dosyasini koyun... önceden yaptigimiz gibi helpden registrationa basin... Ve kodu yine sallayin :) kodun dogrulandigini göreceksiniz :) Size username ve organization soracak ve register olmus olacak...
Biraz uzun ve zahmetli ama basit sayilir. Bunu degisik programlarda da deneyebilirsiniz. yada programlama bilginiz varsa burda ögrendiginiz offsetteki kodu degistiren bir program yazabilirsiniz.
Bu kadari programi kirmaniza yeter ama eger baskalarinin kullanmasi için programi kiran bir exe dosyasi yaratmak istiyorsaniz o konudada yardimci oliim... Asagidaki örnek hex workshop için yazdigim Crackin source code u, belki faydali olur.
|
Bu olayda biraz
zahmetli ama programlara 100lerce dolar saymaktan iyidir :)
Bosuna mi yaziom acaba ya :) bu kadarini yapicak adam çikarmi
merak ediorum walla... bunu becerdiyseniz bana mail atin ya merak
ettim :))