home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / afkay.asm < prev    next >
Encoding:
Assembly Source File  |  1999-07-24  |  4.6 KB  |  162 lines

  1. ;; Keygenerator for AfKayAs CrackMe #1 (by LaZaRuS)
  2.  
  3. .386
  4. .model flat, stdcall
  5. option casemap: none
  6.  
  7. include \masm32\include\windows.inc
  8. include \masm32\include\kernel32.inc
  9. include \masm32\include\user32.inc
  10. includelib \masm32\lib\kernel32.lib
  11. includelib \masm32\lib\user32.lib
  12.  
  13. wsprintfA proto C :DWORD,:DWORD,:VARARG
  14. wsprintf TEXTEQU <wsprintfA>
  15.  
  16. WinMain proto:DWORD,:DWORD,:DWORD,:DWORD
  17.  
  18. .data
  19. ClassName       db "SimpleWindow",0
  20. AppName         db "KeyGenerator for AfKayAs CrackMe #1",0
  21. EditClassName   db "edit",0
  22. EditText        db "LaZaRuS",0
  23. EditText2       db "AKA-682793",0
  24. sprint          db "%lu",0
  25. least           db "Enter at least one char",0
  26.  
  27. .data?
  28. hInstance HINSTANCE ?
  29. hwndEdit HWND ?
  30. hwndEdit2 HWND ?
  31. buffer db 512 dup(?)
  32. buffer2 db 512 dup(?)
  33.  
  34. .const
  35. EditID1    equ 1
  36. EditID2    equ 2
  37.  
  38. .code
  39. start:
  40. invoke GetModuleHandle, NULL
  41. invoke WinMain, hInstance, NULL, NULL, SW_SHOWDEFAULT
  42. invoke ExitProcess, 0
  43.  
  44. WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
  45.   LOCAL wc:WNDCLASSEX
  46.   LOCAL msg:MSG
  47.   LOCAL hwnd:HWND
  48.  
  49.   mov wc.cbSize, SIZEOF WNDCLASSEX
  50.   mov wc.style, CS_HREDRAW or CS_VREDRAW
  51.   mov wc.lpfnWndProc, OFFSET WndProc
  52.   mov wc.cbClsExtra, NULL
  53.   mov wc.cbWndExtra, NULL
  54.   push hInstance
  55.   pop wc.hInstance
  56.   mov wc.hbrBackground, COLOR_WINDOW+1
  57.   mov wc.lpszMenuName, NULL
  58.   mov wc.lpszClassName, OFFSET ClassName
  59.   invoke LoadIcon, NULL, IDI_APPLICATION
  60.   mov wc.hIcon, eax
  61.   mov wc.hIconSm, eax
  62.   invoke LoadCursor, NULL, IDC_ARROW
  63.   mov wc.hCursor, eax
  64.   invoke RegisterClassEx, addr wc
  65.   invoke CreateWindowEx, NULL,\
  66.          ADDR ClassName,\
  67.          ADDR AppName,\
  68.          WS_BORDER or WS_SYSMENU,\
  69.          200,\
  70.          200,\
  71.          290,\
  72.          130,\
  73.          NULL,\
  74.          NULL,\
  75.          hInst,\
  76.          NULL
  77.   mov hwnd, eax
  78.   invoke ShowWindow, hwnd, CmdShow
  79.   invoke UpdateWindow, hwnd
  80.  
  81.   .WHILE TRUE
  82.     invoke GetMessage, ADDR msg, NULL, 0, 0
  83.     .BREAK .IF (!eax)
  84.     invoke TranslateMessage, ADDR msg
  85.     invoke DispatchMessage, ADDR msg
  86.   .ENDW
  87.   mov eax, msg.wParam
  88.   ret
  89. WinMain endp
  90.  
  91. WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
  92.   LOCAL hdc:HDC
  93.   LOCAL ps:PAINTSTRUCT
  94.   LOCAL rect:RECT
  95.   LOCAL fln:DWORD
  96.   .IF uMsg==WM_DESTROY
  97.     invoke PostQuitMessage,NULL
  98.   .ELSEIF uMsg==WM_CREATE
  99.     invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,ADDR EditText,\
  100.             WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or ES_AUTOHSCROLL,\
  101.             20,15,245,25,hWnd,EditID1,hInstance,NULL
  102.     mov hwndEdit, eax
  103.     invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,ADDR EditText2,\
  104.             WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or ES_AUTOHSCROLL or ES_READONLY,\
  105.             20,50,245,25,hWnd,EditID2,hInstance,NULL
  106.     mov hwndEdit2, eax
  107.  
  108.   .ELSEIF uMsg==WM_COMMAND
  109.     mov eax, wParam
  110.       .IF ax==EditID1
  111.         shr eax, 16
  112.         .IF ax==EN_CHANGE ;; FROM NOW I TAKE NO RESPONSE FOR ANYTHING (THE REST WAS "BORROWED"
  113.                           ;; FROM ICZELION'S FANTASTIC TUTS)
  114.           invoke GetWindowText,hwndEdit,ADDR buffer,512 ;; Get Name
  115.           invoke lstrlen, ADDR buffer ;; Get length of name
  116.           cmp eax, 0 ;; if it is zero
  117.           je looser  ;; then jump
  118.           imul eax, 17CFBh ;; multiply length with 17CFBh
  119.           mov ebx, eax
  120.           mov esi, OFFSET buffer
  121.           xor eax, eax
  122.           lodsb ;; load first char from name in eax
  123.           add ebx, eax ;; add ASCII value of char to lenght * 17CFB
  124.           invoke wsprintf, ADDR buffer, ADDR sprint, ebx
  125.           mov esi, OFFSET buffer
  126.           mov edi, OFFSET buffer2
  127.           mov al, 'A' ;; these
  128.           stosb       ;; lines
  129.           mov al, 'K' ;; add
  130.           stosb       ;; A
  131.           mov al, 'A' ;; K
  132.           stosb       ;; A
  133.           mov al, '-' ;; - to the beginning of every serial
  134.           stosb
  135.           movsb ;; these lines
  136.           movsb ;; add the
  137.           movsb ;; serial
  138.           movsb ;; to AKA-
  139.           movsb ;; ""
  140.           movsb ;; ""
  141.           movsb ;; ""
  142.           movsb ;; ""
  143.           movsb ;; ""
  144.           invoke SetWindowText, hwndEdit2, ADDR buffer2 ;; set text of second edit field
  145.           jmp weiter
  146.           looser:
  147.           invoke SetWindowText, hwndEdit2, ADDR least  ;; "Enter at least one char"
  148.           weiter:
  149.           ;; HERE GOES ICZELION AGAIN :)
  150.         .ENDIF
  151.       .ENDIF
  152.   .ELSE
  153.     invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  154.     ret
  155.   .ENDIF
  156.   xor eax, eax
  157.   ret
  158. WndProc endp
  159.  
  160. end start
  161.  
  162. end start