|
ÖN SÖZ |
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.
YAZI |
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
SON NOTLAR |
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.
TEŞEKKÜRLER |
Türk Ters Mühendisliğine katkıda bulunan 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 şudurki: Emek verilipde yapılmış bir şeyi çalma, onu satın al.
Diyeceğim şudurki: Emek verilipde yapılmış bir şeyi çalma, onu satın al.
Hiç yorum yok:
Yorum Gönder