请帮个忙,谢谢

雷欧海特 2002-05-31 09:56:31
昨天写了一钩子,但在比较传递参数时有问题代码如下:
.data
hhWnd dd ? ;在后面赋值
... ;push hWnd(此为传递视窗句炳)
;pop hhWnd

MyWndCall Proc nCode:DWORD, wParam:DWORD, lParam:DWORD
.if nCode > 0
push edx
mov edx lParam
assume edx:PTR CWPSTRUCT
.if [edx].hwnd == hhWnd ;此句出错

我试过使用
.if [edx].hwnd == OFFSET hhWnd
但不知正确与否,初学32汇编,只是找着改,不好意思:)
...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
雷欧海特 2002-05-31
  • 打赏
  • 举报
回复
主要想钩住传递过来视窗句柄所属窗口的相关消息,代码如下
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc

includelib kernel32.lib
includelib user32.lib

.const
WM_HOOKMSG equ WM_USER+6

.data
hInstance dd 0

.data?
hWndHook dd ?
hMsgHook dd ?
hhWnd dd ?
rhWnd dd ?
hMsg dd ?
sMsg dd ?

.code
DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
.if reason==DLL_PROCESS_ATTACH
push hInst
pop hInstance
.endif
mov eax,TRUE
ret
DllEntry Endp

MyWndProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
.if nCode >0
mov edx,lParam
assume edx:PTR MSG
.if [edx].hwnd == offset hhWnd
.if [edx].message == offset hMsg
invoke PostMessage,rhWnd,WM_HOOKMSG,0,0
.endif
.endif
.endif
invoke CallNextHookEx,hWndHook,nCode,wParam,lParam
assume edx:nothing
xor eax,eax
ret
MyWndProc endp

MyMsgProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
.if nCode >0
mov edx,lParam
assume edx:PTR CWPSTRUCT
.if [edx].hwnd == offset hhWnd
.if [edx].message == offset hMsg
invoke PostMessage,rhWnd,WM_HOOKMSG,0,0
.endif
.endif
.endif
invoke CallNextHookEx,hMsgHook,nCode,wParam,lParam
assume edx:nothing
xor eax,eax
ret
MyMsgProc endp

;hhwnd欲挂钩的视窗句柄,rhwnd主调用视窗的句柄,hmsg用于传递的消息
InstallHook proc hhwnd:DWORD,rhwnd:DWORD,hmsg:DWORD
push hhwnd
pop hhWnd
push rhwnd
pop rhWnd
push hmsg
pop hMsg
invoke SetWindowsHookEx,WH_CALLWNDPROC,addr MyWndProc,hInstance,NULL
mov hWndHook,eax
invoke SetWindowsHookEx,WH_GETMESSAGE,addr MyMsgProc,hInstance,NULL
mov hMsgHook,eax
ret
InstallHook endp

UninstallHook proc
invoke UnhookWindowsHookEx,hWndHook
invoke UnhookWindowsHookEx,hMsgHook
ret
UninstallHook endp

End DllEntry
vBin 2002-05-31
  • 打赏
  • 举报
回复
有关钩键盘的例子可以到我的网站找到,32位汇编代码
Http://vbin.51.net/

vBin 2002-05-31
  • 打赏
  • 举报
回复
能将代码全部贴出吗?

你这个钩子是钩什么的,能详细说一下吗?

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧