|
ÖN SÖZ |
Keygen nasıl yazılır serimizin 5nci yazısında yine bir isme göre serial hesaplama algosuyla karşı karşıyayız. Pes etmek yeter demek yok bu işi öğreneceğiz. Buyrun kodları 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 = 000B0652 ('Crackme - not cracked yet',class='FHCF_Crackme') 4011DF|.CALL <JMP.&USER32.GetDlgItemTextA> ; \GetDlgItemTextA---->serialimiz 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 = 000B0652 ('Crackme - not cracked yet',class='FHCF_Crackme') 4011F0|.CALL <JMP.&USER32.GetDlgItemTextA> ; \GetDlgItemTextA-->ismimiz bu api ile alınıyor 4011F5|.CMP EAX,5 ;ismimizin uzunluğu 5 ile karşılaştırılıyor 4011F8|.JB SHORT crackme_.00401245 ;5'ten küçükse dallanıyor yoksa devam 4011FA|.MOV ECX,EAX ;ismin uzunlupu ecx'e yazılıyor 4011FC|.MOV DWORD PTR DS:[4030C0],ECX ;ecx değeri 4030C0 adresine yazılıyor 401202|.PUSH EDI 401203|.PUSH crackme_.00403051 401208|.PUSH crackme_.00403061 40120D|.CALL crackme_.00401262 ;serial hesaplama döngüsüne dallanıyor F7 ile içine dalalım 401262 $ PUSH EBP ;F7 basıp daldığımız yer burası 401263 . MOV EBP,ESP 401265 . ADD ESP,-4 401268 . XOR EBX,EBX ;yazmaçlar sıfırlanıyor 40126A . XOR EDX,EDX 40126C . XOR EAX,EAX 40126E . XOR ECX,ECX 401270 . XOR ESI,ESI ; crackme_.00401180 401272 . XOR EDI,EDI ;buraya kadar 401274 > MOVSX EAX,WORD PTR DS:[ECX+403078] ;ismimizin+ecx yazmacının ilk iki baytı eax'e yazılıyor 40127B . IMUL ECX ;eax=eax * ecx 40127D . ADD EBX,EAX ;ebx=ebx+eax 40127F . ADD ECX,2 ;ecx=ecx+2 401282 . >CMP BYTE PTR DS:[ECX+403078],0 ;ecx+isim 0 ile karşılaştırılıyor ;ayrıca ecx 2şer 2şer arttığı için ;döngü daha çabuk bitiyor 401289 .^ JNZ SHORT crackme_.00401274 ;0 değilse dallan yoksa devam 40128B . ROL EBX,99 ;ebx=ebx ROL 99h 40128E . XCHG EAX,EBX ;yer değiştir 40128F . SHR EAX,CL ;eax=eax SHR CL 401291 . MOV ESI,EAX ;esi=eax=serial :) 401293 . LEAVE 401294 . RETN 8 401212|.PUSH EBX 401213|.PUSH crackme_.00403096 ; ASCII "11223344"->benim girdiğim serial 401218|.CALL crackme_.00401324 ;bu calldaki işlemden sonra girdiğimiz serial eax'e yazılıyor 40121D|.POP EBX ; crackme_.00403061 40121E|.POP EDI ; crackme_.00403061 40121F|.CMP ESI,EAX ;iyi kötü çocuk burada karşılaştırılıyor 401221|.JNZ SHORT crackme_.00401245 ;eğer yanlış serial girildiyse dallan yoksa devam 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 = 000B0652 ('Crackme - not cracked yet',class='FHCF_Crackme') 40123E|.CALL <JMP.&USER32.SetWindowTextA> ; \SetWindowTextA
SON NOTLAR |
Seriali crackme zaten kendisi verdiği ve buraya kadar bununla ilgili buna benzer 4 crackmeyi de çözdüğünüz için keygenin assembly kodlarını buraya yazmıyorum. Ancak kaynak kodları buradan indirebilirsiniz.
TEŞEKKÜRLER |
Türk Ters Mühendisliğine gönül vermiş 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