Natural

natural

Breaking News

Keygenme 4



Keygen Nasıl yazılır serisi kaptanın seyir defteri 4 :) Yine isme göre hesaplama yapılıyor kısa ve basit bir döngü. Canınızı sıkmayın 9 yazılık bu seride ilerideki crackmelerde farklı şeyler var. Şimdi kodlarımızı inceleyelim.
Programı Ollydebugger ile açalım CTRL+N yapıp Names penceresini görelim. GetDlgItemText apisine sağ tıklayarak "Set breakpoint on every reference" seçelim. Programı çalıştırıp isim serial girin. "Check Serial" tuşuna basınca crackme break pointte duracak. Bizde incelemeye başlıyacağız.
4011D3|.PUSH 19                                 ; /Count = 19 (25.)
4011D5|.PUSH crackme_.00403096                  ; |Buffer = crackme_.00403096
4011DA|.PUSH 66                                 ; |ControlID = 66 (102.)
4011DC|.PUSH [ARG.1]                            ; |hWnd = 00401000
4011DF|.CALL <JMP.&USER32.GetDlgItemTextA>      ; \GetDlgItemTextA-->serialin alındığı api
4011E4|.PUSH 1E                                 ; /Count = 1E (30.)
4011E6|.PUSH crackme_.00403078                  ; |Buffer = crackme_.00403078
4011EB|.PUSH 65                                 ; |ControlID = 65 (101.)
4011ED|.PUSH [ARG.1]                            ; |hWnd = 00401000
4011F0|.CALL <JMP.&USER32.GetDlgItemTextA>      ; \GetDlgItemTextA-->ismimizin alındığı api
4011F5|.CMP EAX,5    ;apiden dönen değerin biride ismin uzunluğudur o da eax'e yazılır
      ;burada eax yani ismin uzunluğu 5 ile karşılaştırılıyor
4011F8|.JB SHORT crackme_.00401249  ;ismimiz 5 handen kısa ise dallan yoksa devam et
4011FA|.MOV ECX,EAX    ;ismin uzunluğu ecx'e yazılıyor
4011FC|.MOV DWORD PTR DS:[4030C0],ECX  ;ecxdeki veri 4030C0 adresine yazılıyor
401202|.PUSH EDI                                ;  ntdll.7C900228
401203|.PUSH crackme_.00403051                  ; /Arg2 = 00403051
401208|.PUSH crackme_.00403061                  ; |Arg1 = 00403061
40120D|.CALL crackme_.00401266                  ; \crackme_.00401266--> bu call serial hesaplanan yeri çağırıyor F7 ile dalalım
CALL 401266 adresini çağırıyor bu adrese F7 (trace into) ile giriyoruz ve orada nelerin döndüğünü öğreneceğiz. Şimdi serilain hesaplandığı yerleri inceleyelim ve ne yapıldığını anlamaya çalışalım:
401266/$PUSH EBP
401267|.MOV EBP,ESP
401269|.ADD ESP,-4
40126C|.XOR EBX,EBX    ;yazmaçlar sıfırlanıyor
40126E|.XOR EDX,EDX
401270|.XOR EAX,EAX
401272|.XOR ECX,ECX
401274|.XOR ESI,ESI                     ;  crackme_.00401180
401276|.XOR EDI,EDI
401278|.MOV ECX,DWORD PTR DS:[4030C0]  ;ecx'e ismin uzunluğu yazılıyor
40127E|.SUB ECX,2    ;ecx=ecx-2
401281|.MOVSX EAX,WORD PTR DS:[ECX+403078] ;ecx+isim ->hangi karaktere denk geliyorsa oradan itibaren
      ;o karakterin hex değeri eax'e yazılıyor
401288|.XOR EAX,ECX    ;eax=eax XOR ecx
40128A|.IMUL ECX    ;eax=eax * ecx
40128C|.CDQ     ;convert double quad
40128D|.IDIV DWORD PTR DS:[4030C0]  ;eax=eax / ismin uzunluğu, edx=kalan
401293|.NOT EAX     ;eax'i ters çevir
401295|.MOV DWORD PTR DS:[4030C4],EAX  ;eax'deki değeri 4030C4 adresine yaz
40129A|.LEAVE
40129B\.RETN 8
Hesaplama bitince RETN ile içine girdiğimiz CALL değerinden bir sonraki satıra uçuyoruz:
401212|.PUSH EBX
401213|.PUSH crackme_.00403096
401218|.CALL crackme_.00401328   ;eax=girdiğimiz serial
40121D|.POP EBX                                 ;  kernel32.7C817077
40121E|.POP EDI                                 ;  kernel32.7C817077
40121F|.CMP EAX,DWORD PTR DS:[4030C4]  ;eax ile gerçek serial karşılaştırılıyor
401225|.JNZ SHORT crackme_.00401249  ;eşit değilse dallan
401227|.PUSH 40                                 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
401229|.PUSH crackme_.0040304D                  ; |Title = "wee"
40122E|.PUSH crackme_.00403019                  ; |Text = "You did it! Now make a keygen =)"
401233|.PUSH 0                                  ; |hOwner = NULL
401235|.CALL <JMP.&USER32.MessageBoxA>          ; \MessageBoxA
40123A|.PUSH crackme_.0040303A                  ; /Text = "Crackme - cracked!"
40123F|.PUSH [ARG.1]                            ; |hWnd = 00401000
401242|.CALL <JMP.&USER32.SetWindowTextA>       ; \SetWindowTextA
Yukarıda olly ile de incelerseniz daha iyi anlarsınız, döngü dahi yok sadece ismimizin son iki hanesini alıp eax'e yazıp onunla bir kaç mantıksal işlem yapıyor o kadar. Keygenin kaynak kodlarını buradan alabilirsiniz.
Türk Ters Mühendisliğine katkıda bulunan 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 şudurki: Emek verilipde yapılmış bir şeyi çalma, onu satın al.

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

Hiç yorum yok