Natural

natural

Breaking News

Keygenme 2



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:
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
Ş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.
sorularımı cevapsız bırakmayan herkese
sonsuz TEŞEKKÜRLER ........
Öldürmeyen Her Darbe Güce Güç Katar ::: BlueDeviL // SCT
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.

Blue DeviL
E-Mail: bluedevil@sctzine.com
ICQ: 82503282

Hiç yorum yok