31 Ağustos 2016 Çarşamba

Registration Key isteyen Programları kırma:

(Hex Workshopu kullanarak Hex Workshopu crackliyoruz :) ehue

    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... Siktirip gitsin, bedawa dağıtmıyoruz...

    Algoritmayı çözmek gerçekten 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 Assemble öğ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 :) 
 
 
 

10 yorum:

  1. SELAMLAR HOCAM DENİYORUM AMA ÇÖZEMİYORUM. YARDIM EDERSENİZ SEVİNİRİM

    YanıtlaSil
    Yanıtlar
    1. Cumartesi gunu cep telefonumdan ulasirsaniz yardimci olurum.

      Sil
  2. MAGNET Field BİR PROGRAM VAR BUNU KIRABILIR MISINIZ

    YanıtlaSil
  3. googleden al yapıştır tabi

    YanıtlaSil
  4. Hocam kendi kendine süreli key ve keye şifre yazıp bunu karşı tarafa satan bir programa nasıl kendi key ve şifremizi ekleriz

    YanıtlaSil
  5. Lisans kodu lazım alabilirmiyim

    YanıtlaSil
  6. BİR PROGRAM VAR ÇÖZEBİLİR MİSİNİZ ACABA

    YanıtlaSil
  7. Çözmem gereken 12 haneli lisans var fakat her tıklamada şifreler değişiyot savit bir şifre yok 8rakam gösyeriyor onun karşılığını bulup yazmam gerekiyor

    YanıtlaSil