📄 tstdll.asm
字号:
; #########################################################################
;
; Build this DLL from the batch file called BuildDll.bat
; Remote KeyBoard Event Hook Dll
; Send Local KeyBoard Event to remote Mochine
;
; #########################################################################
.386
.model flat, stdcall
option casemap :none ; case sensitive
; #########################################################################
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
; #########################################################################
InstallKeyboardHook PROTO :DWORD,:DWORD
UninstallKeyboardHook PROTO
SendData struct
wParam DWORD ?
lParam DWORD ?
SendData ends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Low level hook flags
;define LLKHF_EXTENDED 00000001H
;define LLKHF_INJECTED 00000010H
;define LLKHF_ALTDOWN 00000020H
;define LLKHF_UP 00000080H
;define LLMHF_INJECTED 00000001H
KBDLLHOOKSTRUCT struct
vkCode DWORD ?
scanCode DWORD ?
flags DWORD ?
time DWORD ?
dwExtraInfo DWORD ?
KBDLLHOOKSTRUCT ends
.const
HOTKEY equ 91
;HOTKEY equ 19 ;hot key is Pause/Break
;HOTKEY equ 123 ;hot key is F12
.DATA
szName db "Remote Keyboard Hook DLL",0
szOkMsg1 db "init ok",0
szErrorMsg1 db "Init winsocket error",0
szErrorMsg2 db "Get ModuleHandle error",0
szErrorMsg3 db "socket error",0
szErrorMsg4 db "inet_addr error",0
szErrorMsg5 db "SetWindowHook error",0
szMsg1 db "process attach",0
szMsg2 db "process dead",0
szMsg3 db "thread attach",0
szMsg4 db "thread dead",0
msgfmt db "nCode=%xH wParam=%xH lParam=%xH lasterr=%d hsocket=%xH,bEnable=%d",0
msgbuf db 128 dup (0)
.data?
hMod dd ?
HKeyboardHook dd ?
HMouseHook dd ?
bEnable dd ? ; check this flag ,this app send the key to remote or not
.code
; ##########################################################################
LibMain proc hInstDLL:DWORD, reason:DWORD, unused:DWORD
.if reason == DLL_PROCESS_ATTACH
mov eax,hInstDLL
mov hMod,eax
;invoke MessageBox,0,addr szMsg1,addr szName,0
mov bEnable, 0FFFFFFFFH ;default is enable send key
.elseif reason == DLL_PROCESS_DETACH
;invoke MessageBox,0,addr szMsg2,addr szName,0
.elseif reason == DLL_THREAD_ATTACH
;invoke MessageBox,0,addr szMsg3,addr szName,0
.elseif reason == DLL_THREAD_DETACH
;invoke MessageBox,0,addr szMsg4,addr szName,0
.endif
mov eax,TRUE
ret
LibMain Endp
; ##########################################################################
MouseHook PROC nCode:DWORD,wParam:WPARAM,lParam:LPARAM
invoke CallNextHookEx,HMouseHook,nCode,wParam,lParam
.IF wParam == WM_MBUTTONDOWN
mov edx,lParam
assume edx:PTR MOUSEHOOKSTRUCT
mov ebx,[edx].hwnd
invoke PostMessage,ebx,WM_KEYDOWN,0,0
assume edx:nothing
.ENDIF
xor eax,eax
ret
MouseHook ENDP
KeyboardHook proc nCode:DWORD, wParam:WPARAM, lParam:LPARAM
local cc:DWORD
mov bEnable,1
mov eax,lParam
assume eax: PTR KBDLLHOOKSTRUCT
mov ebx,[eax].vkCode
mov cc,ebx
; .IF [eax].vkCode == HOTKEY
; mov eax,[eax].flags
; and eax,LLKHF_UP
; .if eax == 0
; mov bEnable,0
; mov eax,0
; ret
; .endif
; .ENDIF
assume eax:nothing
.IF nCode == HC_ACTION
; Check the Key
.if cc==91 || cc==92
mov bEnable,0
.endif
.IF bEnable==0
mov eax,1
ret
.ENDIF
.ENDIF
invoke CallNextHookEx,HKeyboardHook,nCode,wParam,lParam
mov eax,0
ret
KeyboardHook endp
; ##########################################################################
; if func sucessful , return 0; if error return error code
InstallKeyboardHook PROC wParam:WPARAM,lParam:LPARAM
.IF HKeyboardHook != 0
invoke UnhookWindowsHookEx,HKeyboardHook
.ENDIF
invoke SetWindowsHookEx ,WH_KEYBOARD_LL ,addr KeyboardHook,hMod,0
.if eax == NULL
mov eax,5
ret
.else
mov HKeyboardHook,eax
.endif
mov eax,0
ret
InstallKeyboardHook ENDP
; ##########################################################################
UninstallKeyboardHook proc
.if HKeyboardHook != 0
invoke UnhookWindowsHookEx,HKeyboardHook
mov HKeyboardHook,0
.endif
ret
UninstallKeyboardHook endp
End LibMain
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -