Code Cracking'e Giriş

Piyasadaki Programları kırmak için http://astalavista.box.sk den yada benzeri sitelerden crackler indirerek programlari çalışır hale getirmeyi yada Nag Screenlerden kurtulmayı biliyorsunuzdur.
(Bilmiyosanız zaten bu sayfada size göre bişi yok)

Peki bu programların nasıl yapıldığını merak etmedinizmi hiç?
Aslında düşünüldüğü kadar zor bir iş diyildir... Biraz deneyiminiz varsa 5 dakkanızı harcayıp istediğiniz programı internetten crack indirmeden kendiniz kırabilirsiniz.

Öncelikle biraz programlama ve ASM Bilgisine ihtiyacınız var, Eğer assembly size birşey ifade etmiyorsa caninizi sikmayin Holy babaniz size anlatir bişiler... Eğer iyi düzeyde Programlama bilginiz varsa, Programcıların Kolayca kırılmayan programlar yazmaları için dikkat etmeleri gereken noktalari da burda açıklicam... şimdilik assembly'inMaiknenizin anladığı dil olduğunu söyliyelim.

Öncelikle şunu söylemeliyim ki Her programı kıran kesin bi yönetm yoktur, Biraz kafayı yormaniz gerekio... elinizdeki Programları cracklemek için aşşağıdaki programlara ihtiyacınız olacak..

Programın adı

Açıklama

Hex Workshop

Çok kullanışlı bir Hex editor.

W32Dasm

32 Bit Disassembler, Exenin kodlarini birazcik daha anlaşılır bi hale sokup bize faydalı oluyor.

RegMon

Registry Monitor,Programı kullanmakta olduğunuz zaman içinde Windows Registrysine eklenen yada değiştirilen herşeyi size rapor eder.

FileMon

File Monitor, Hangi dosyanın neresinde ne değişiklik yapıldığını bildirir

Numega Softice

Bunun açıklamaları diğer crack dökümanlarında

İşterseniz öncelikle bu iş için en çok işinize yariycak program olan Hex Workshopu kendisini kullanarak cracklemekle başlıyalım :)

Registration Key isteyen Programları kırma:
(Hex Workshopu kullanarak Hex Workshopu crackliyoruz :)

Mesela Kimi program düzgün çalışması için size Registration key sorar... Alın işte Hex Workshop V2.50 böyle bi program :)

Başlıyoruz.. Öncelikle programı açın... help de registration u gördünüz mü? sizden bi registration key istio... sallayın bişiler... Tutmadı dimi? Eğer çok ballı biri diyilseniz hayatınız boyunca denesenizde tutturamazsınız. Makine Salladığınız kod üstünde işlem yapar, programın güvenliği açısından verdiğiniz user name e göre şifrenizde değişik olmak zorundadır çünkü...

ana mantık en basite indirgenmiş olarak şudur...

eğer girilen usename ve şifre algoritmaya uyuyorsa... Bu adam bu programı istediği gibi kullanabilir.
eğer girilen usename ve şifre algoritmaya uymuyorsa... s.ktrip gitsin, bedawa dağıtmıyoruz...

Algoritmayı çözmek daha zordur, onun yerine biz ana mantığı tersine çevirmeye çalışıcaz..
yani program koduyla oynayarak adamın yanlış şifre girmesi halinde programa doğru şifre girilmiş muamelesi yaptırmaya çalışıcaz... bu durumda makine, mantık olarak doğru username ve şifre girilirsede yanlis sifre muamaelesi uyguliycak :) ama söylediğim gibi sallıyarak doğru şifre girmek imkansiz gibi bişi zaten.

Herneyse Şifreyi kafadan attınız... size bi hata mesajı geldi.. error mesaj penceresinin başlığına bakın ne yazıyo...

"Registration unsuccessful" bunu bi yere not edin lazim olucak.

Hex workshopu kapatın ve bi yere programın exe dosyasının(HWORKS32.EXE) bi yedeğini alın.

şimdi W32Dasm prgoramını açıyoruz... menuden disassembler > open file to disassemble i seçiyoruz. burdan HWORKS32.EXE yi açıyoruz, ve program bizi biraz beklettinten sonra önümüze makine dilinde birsürü kod çıkarıyo...

bi bok anlamadiniz dimi çıkanlardan :)

Herneyse Yine menuden Refs > Dialog references i seçelim. ve burda biraz önce gördüğümüz "Registration unsuccessful" yazısını bulalım. hmm sanirim orda yok, unutalim o zaman simdilik... aşşağıdakileri uygulayalım... eğer aradığımız pencerenin adını burda bulsak aşağıdakilere gerek kalmazdı ama bulamadık napalım...

Menulerden Search>Find text e tıklayarak Registration Unsuccessful yazalım.

şöle bişi çıkıcak karşımıza...

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 kısaca kafadan attığımız serial i yazinca karşımıza çıkan diyaloğun makina dilindeki hali....

Üstteki satırdaki DialogID_0075 e dikkat edelim şimdide...
Tamam, şimdi Dialog references e dönelim programın Refs menusundeki.
Dialog: DialogID_0075 satırını bulup çift tıklayalım. azicik yukarı scroll edelim... şu satırı gördükmü?

* Possible Reference to Dialog: DialogID_0075 

Burda Asm ile yazılmış satırlar var, yukarıdaki satirin anlamı şu... Program bu noktada Registration Unsuccessful     başlıklı diyaloğa başvuruyor. Bu pencere yanlış şifre girildiğinde çıktığına göre aradığımız kod buralarda biryerlerde fakat devam etmek için biraz assembly öğrenmemiz gerekicek :)

Push, Lea, call, jne, jmp, jne, .... bunların hepsi asm komutları fakat biz konu program kırmaysa bizi ilgilendirenler sadece mantıksal seçim yaptıran komutlar... şu şuna eşitse şöle yap, bu bundan büyükse böle yap falan gibi şeyler yani... Açıklamaları yapıcam birazdan siz sadece okuyun anlamasanızda şimdilik... Bu tip komutlara örnek olarak Jne, Jmp, Je, jae, jb, je falan gibi komutlar var asm dilinde... Farkettiyseniz hepsi J harfiyle başlıyo...

Program Registration unsuccessful diyaloğuna ihtiyaç duyduğuna göre bu noktadan biraz önce şifrenin doğru yada yanlış olduğunu kontrol eden kod yazılı olmalı, bu yüzden * Possible Reference to Dialog: DialogID_0075  satırından yukarı doğru her satıra bakıp J ile başlayan komut arıyoruz... biraz yukarı çıktıktan sonra aşağıdaki gibi satirlar görüceksiniz. highlighted satırı aşağıdaki gibi Je ile başlayan komutun üstüne gelin. o satır yeşil olucak...

şimdiii..... Je li satiri sectikten sora status bara bakıyoruz @Offset yazısını gördünüzmü? onu bi köşeye not ediyoruz... sonundaki h harfini ve baştaki 0ları not etmenize gerek yok.. hatta not etmeyin. yani 256B3 'ü not edin.

Burdaki offset, aradığımız kodun exe içindeki yeri... tamamdır istediğimizi aldık artık W32Dasm yi kapatabiliriz. Hex Workshopu açın, hatırlıyorsanız bi yedeğini almıştık, siz program files in icinde duran orjinalini açın...

Şimdi menuden File > open a tıklayarak daha önceden yarattığımız Hworks.exe nin yedeğini açalım. karşınıza yine bi sürü şey çıktı... Edit Menusunden Gotoyu seçin, Beggining of File'ı tıklayıp Offset'e 256B3 yazın. aynen aşşadaki gibi yani.. 

Gotoya tıklayın... karşınıza şöle bişi gelicek...

İmlecin bulunduğu konumun yanında 0F 84 bulunuyor... Bu biraz önce W32Dasm programında gördüğümüz Je komutunun Hex kodundaki anlamı bu... Hatırlarsanız W32 asm programında Registration unsuccessful diyaloğundan önceki J ile başlayan ilk komutu aramıştık. bu komut Je yerine başka birşeyde olabilirdi o zaman burda 0F 84 yerine başka bir kod da olabilirdi... Yani bu offsette 0F 84 bulmamızın sebebi serialin doğruluğunun Je komutuyla kontrol edilmesidir. farklı komutların Hex kodlarını da aşşağıda verdim... ASM komutları genellikle kısaltmalardan oluştuğu için yanlarına ingilizce anlamlarını yazdım.

Hex Kodu: ASM Kodu: Anlamı:
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 sıra geldi kodu ters çevirmeyee... Çok basit... Je nin anlamı Jump if equal, O zaman bunun yerine Jump if not Equal (Jne) komutunu koyarsak kod tam tersine çalışıcak. Jne nin hex karşılığı 0F 85... o zaman bulduğumuz değerin yerine bunu girelim... amman dosyaya insert yapmıyalım, dosya boyutu değişirse büyük ihtimalle çalışmaz çünkü. 0F 85 in üstüne yazalım yani, 84 ü 85 yapalım. üstüne yazıyorsanız Hex Workshop sizi uyarıcak zaten.

Eveet bunuda yaptıysanız artık save edin, Hex workshoptan çıkın. Hex workshopun exe dosyasını silip yerine değiştirdiğimiz exe dosyasını koyun... önceden yaptığımız gibi helpden registrationa basın... Ve kodu yine sallayın :) kodun doğrulandığını göreceksiniz :)  Size username ve organization soracak ve register olmuş olacak...

Biraz uzun ve zahmetli ama basit sayılır. Bunu değişik programlarda da deneyebilirsiniz. yada programlama bilginiz varsa burda öğrendiğiniz offsetteki kodu değiştiren bir program yazabilirsiniz.

Bu kadarı programı kırmanıza yeter ama eğer başkalarının kullanması için programı kıran bir exe dosyası yaratmak istiyorsanız o konudada yardımcı oliim... Aşağıdaki örnek hex workshop için yazdığım Crackin source code u, belki faydalı olur.


Uses Crt;

Const A: Array[1..2] of Record {<-------- 2 byte cracklenecek}
A : Longint;
B : Byte;
End =
((A:$256B3;B:$0F),(A:$256B3;B:$84));
{<--offset "256B3" ve "0F 84" deişecek}

Var Ch:Char;
I:Byte;
F:File;
FN:file of byte;
Size:longint;


Begin
Writeln('My Hex Workshop Crack :) ');writeln('Hex Workshop V2.54 Crack');
Assign(F,'HWORKS.EXE'); {<-------------- Cracklenecek dosyanın adı}
{$I-} Reset(F,1); {$I+}
If IOResult <> 0 then
begin
writeln('Dosya bulunamadı');
halt(1);
end;
For I:=1 to 2 do {<---------------------- 2 byte Cracklenecek}
Begin
Seek(F,A[I].A);
Ch:=Char(A[I].B);
Blockwrite(F,Ch,1);
End;
Writeln('Dosya Cracklendi!');
End.

Bu olayda biraz zahmetli ama programlara 100lerce dolar saymaktan iyidir :)
Boşuna mı yaziom acaba ya :) bu kadarını yapicak adam çıkarmı merak ediorum walla... bunu becerdiyseniz bana mail atın ya merak ettim :))

Text by Mysterious HolyOne of Night

Kaynak: HolyOne
Tarih:
Hit: 33995
Yazar: HolyOne

Taglar: code cracking'e giriş


Yorumlar


Yorum yapabilmek için üye girişi yapmalısınız.

Yorumlar

SweetyVolty tarafından yazıldı. Tarih: 21/Haz/16 00:01
tövbe bismillağ. yazarı en son gördüm