El codigo es parte de una DLL que inyecto en otro proceso.
(Sirve para llamar a la funcion PostMessage de la libreria user32.dll en ejecutables protegidos con GameGuard)
Codigo en MASM:
Código
Pulsacion proc LOCAL wParam1:DWORD LOCAL lParam1:WORD mov wParam1,VK_SPACE ;Tecla a Pulsar invoke MapVirtualKey, wParam1,0 mov lParam1, ax ; Mapeo virtual de la tecla y movemos los dos ultimos bytes a lParam1 invoke PostMessageX, hWnd, WM_KEYDOWN, wParam1, lParam1 ; Pulsacion virtual, Tecla en estado presionado. invoke PostMessageX, hWnd, WM_KEYUP, wParam1, lParam1 ; Pulsacion virtual , tecla en estado de reposo. ret Pulsacion endp PostMessageX proc W:DWORD, X:DWORD, Y:DWORD, Z:DWORD option prologue:none option epilogue:none push ebp ; Trampolin mov ebp, esp jmp Salto; El resultado va hacia salto donde tenemos ya guardada nuestro handle del "PostMessage" PostMessageX endp
Mi traducción del código a FASM:
Código
proc Pulsar locals wParam1 dd ? lParam1 dw ? endl mov [wParam1],VK_SPACE invoke MapVirtualKey,[wParam1],0 mov [lParam1],ax stdcall PostMessageX,[hwnd],WM_KEYDOWN,[wParam1],[lParam1] ; EL PROBLEMA ESTA AQUÍ stdcall PostMessageX,[hwnd],WM_KEYUP,[wParam1],[lParam1] ; EL PROBLEMA ESTA AQUÍ ret endp proc PostMessageX W,X,Y,Z push ebp mov ebp,esp jmp [Func] endp
Gracias.