|
ÖN SÖZ |
Merhabalar, Keygen hazırlama serimiz devam ediyor. Yine aynı kişinin ikicinci crackmesine dallanıyoruz. Çok fark yok sadece algoritma da ufak değişiklikler yapılmış. İnceleyelim ve görelim:
YAZI |
Programımızı PEiD ile kontrol ediyoruz, herhangi bir sıkıştırma yok. Kripto analizi de yapıyoruz(PEiD'in pluginlerinden), sorun yok. Devam edelim. Programımızı çalıştıralım. İsim ve Serial bölümü, güzel. Şimdi bir şeyler yazıp tamam diyelim. herhangi bir mesaj kutusu ya da hata vermedi. Aklımıza yazalım bunu. Şimdi programımızı Olly ile açalım. Kod(CODE) ekranına sağ tıklayıp "Search For > All referenced text strings" tıklayalım. Açılan pencerede "ASCII "You did it! Now make a keygen =)" " yazan yere çift tıklayın. Biraz daha yukarı çıkın ve aşağıdaki kodlarda olduğumuzu göreceksiniz. Kod satırlarının yanındaki yorum satırlarını okuyunuz:
4011D3|.PUSH 19 ; /Count = 19 (25.) 4011D5|.PUSH crackme_.00403096 ; |Buffer = crackme_.00403096 4011DA|.PUSH 66 ; |ControlID = 66 (102.) 4011DC|.PUSH [ARG.1] ; |hWnd = 004A0452 ('Crackme - not cracked yet',class='FHCF_Crackme') 4011DF|.CALL <JMP.&USER32.GetDlgItemTextA> ; \GetDlgItemTextA ;serial burada alınıyor 4011E4|.PUSH 1E ; /Count = 1E (30.) 4011E6|.PUSH crackme_.00403078 ; |Buffer = crackme_.00403078 4011EB|.PUSH 65 ; |ControlID = 65 (101.) 4011ED|.PUSH [ARG.1] ; |hWnd = 004A0452 ('Crackme - not cracked yet',class='FHCF_Crackme') 4011F0|.CALL <JMP.&USER32.GetDlgItemTextA> ; \GetDlgItemTextA;ismimiz alınıyor 4011F5|.CMP EAX,4 ;isim uzunluğu 4 ile karşılartırılıyor 4011F8|.JB SHORT crackme_.00401245 ;4'ten az ise dallan 4011FA|.MOV ECX,EAX ;ecx=eax ismin uzunluğu ecxte 4011FC|.MOV DWORD PTR DS:[4030C0],ECX ; USER32.7E3821CC;ecx değerini 4030C0 adresine yazdırıyor 401202|.PUSH EDI 401203|.PUSH crackme_.00403051 ; /Arg2 = 00403051 401208|.PUSH crackme_.00403061 ; |Arg1 = 00403061 40120D|.CALL crackme_.00401262 ; \crackme_.00401262;hesaplama yapılan call F7 ile dalalım
40120D adresindeki call 401262 adresine dallanıyor ve orada ismimizi kullanarak bir hesaplama yapıyor.Bu hesaplamanın sonucu bizim gerçek serialimiz.
401262/$ PUSH EBP ;buradayız 401263|. MOV EBP,ESP 401265|. ADD ESP,-4 401268|. XOR EBX,EBX ;ebx=0 40126A|. XOR EDX,EDX ;edx=0 40126C|. XOR EAX,EAX ;eax=0 40126E|. XOR ECX,ECX ;ecx=0 401270|. XOR ESI,ESI ;esi=0 crackme_.00401180 401272|. XOR EDI,EDI ;edi=0 401274|> MOVSX EAX,BYTE PTR DS:[ECX+403078] ;ismimizin ilk baytı alınıyor 40127B|. ADD EBX,EAX ;her bayt ebx'e atılıp toplanıyor 40127D|. ADD EBX,123 ;ebx=ebx + 123 ;ebx'e 123h ekleniyor 401283|. INC ECX ;ecx bir artır 401284|. CMP DWORD PTR DS:[4030C0],ECX ;ecx ve ismin uzunluğu aynımı? 40128A|.^JNZ SHORT crackme_.00401274 ;değilse devam et 40128C|. ADD EBX,6666 ;döngü bitince ebx=ebx AND 6666h ;sonucunda gerçek serial ortaya çıkıyor 401292|. LEAVE 401293\. RETN 8
Döngüden çıkıp devam edince aşağıda gördüğünüz PUSH EBX komutu ile ebx'te bulunan gerçek serial yığına atılıyor. Daha sonra tekrar çağrılacak tabi ki.
401212|.PUSH EBX 401213|.PUSH crackme_.00403096 ; ASCII "112233" 401218|.CALL crackme_.00401320 ; bu CALL girdiğimiz seriali bir döngüye sokuyor ve oradan bir sonuç çıkartıyor 40121D|.POP EBX ; bu komut ile yığına attığımız gerçek seriali çağırıp ebx'e yazıyoruz 40121E|.POP EDI ; 0013FC78 40121F|.CMP EAX,EBX ;iyi ve kötü serial burada karşılaştırılıyor 401221|.JNZ SHORT crackme_.00401245 ;eax doğru serial ise dallanma olmuyor ve devam ediliyo (iyi çocuk) 401223|.PUSH 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL 401225|.PUSH crackme_.0040304D ; |Title = "wee" 40122A|.PUSH crackme_.00403019 ; |Text = "You did it! Now make a keygen =)" 40122F|.PUSH 0 ; |hOwner = NULL 401231|.CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA 401236|.PUSH crackme_.0040303A ; /Text = "Crackme - cracked!" 40123B|.PUSH [ARG.1] ; |hWnd = 004A0452 ('Crackme - not cracked yet',class='FHCF_Crackme') 40123E|.CALL <JMP.&USER32.SetWindowTextA> ; \SetWindowTextA
SON NOTLAR |
Şimdide keygeni yazalım:
XOR EBX,EBX ;ebx=0 XOR EDX,EDX ;edx=0 XOR EAX,EAX ;eax=0 XOR ECX,ECX ;ecx=0 XOR ESI,ESI ;esi=0 crackme_.00401180 XOR EDI,EDI ;edi=0 MOVSX EAX,BYTE PTR DS:[ECX+403078] ;ismimizin ilk baytı alınıyor ADD EBX,EAX ;her bayt ebx'e atılıp toplanıyor ADD EBX,123h ;ebx=ebx + 123h ;ebx'e 123h ekleniyor INC ECX ;ecx bir artır CMP DWORD PTR DS:[4030C0],ECX ;ecx ve ismin uzunluğu aynımı? JNZ SHORT crackme_.00401274 ;değilse devam et ADD EBX,6666h ;döngü bitince ebx=ebx AND 6666h ;sonucunda gerçek serial ortaya çıkıyor
Yukarıda keygen kodlarını alıp radasmye göre düzenleyip algoritmamızı hazırladık. Ancak bir şeye dikkat etmenizi istiyorum. Kodlara 123h ve 6666h yazdık, yani bunlar on altılık değerler, karışıklık olmasın. Keygen kaynak kodlarını BURADAN indirebilirsiniz.
TEŞEKKÜRLER |
sorularımı cevapsız bırakmayan herkese
sonsuz TEŞEKKÜRLER ........
sonsuz TEŞEKKÜRLER ........
SON SÖZ |
Öldürmeyen Her Darbe Güce Güç Katar ::: BlueDeviL // SCT
UNUTMADAN |
Bu programı kullanarak para kazanıyorsanız lütfen satın alın. Bu yazının yazılma amacı program yazanlara programlarını daha iyi korumaları konusunda yol göstermektir. Lisanssız kullanımda Dokümanı hazırlayan sorumlu değildir.
Diyeceğim şudur ki: Emek verilip de yapılmış bir şeyi çalma, onu satın al.
Diyeceğim şudur ki: Emek verilip de yapılmış bir şeyi çalma, onu satın al.
Hiç yorum yok:
Yorum Gönder