反编译用
.data? 设置成共享段, 否则触发写时复制
在vs 链接器的命令行中加入 /section:.bss,S .
dll 模块
hookdll.asm
.386
.model flat, stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
hModule dd ?
.data?
hWnd dd ?
hHook dd ?
dwMsg dd ?
szMsg db 256 dup (?) ; 设置成共享段,否则write on copy
.code
DLLMain proc instance,dwReason,dwReserved
.if dwReason == DLL_PROCESS_ATTACH
push instance
pop hModule
.endif
mov eax,TRUE
ret
DLLMain endp
hook_proc proc uses edx, code,wp,lp
mov edx,lp
and edx,40000000h
.if code < 0 || code == HC_NOREMOVE || edx
invoke CallNextHookEx, hHook, code, wp, lp
ret
.endif
invoke GetKeyNameTextA,lp,addr szMsg, sizeof szMsg
invoke SendMessage,hWnd,dwMsg,addr szMsg,NULL
invoke CallNextHookEx, hHook, code, wp, lp
ret
hook_proc endp
install_hook proc sendToThisHWND,