+ -
当前位置:首页 → 问答吧 → 一个进程中句柄在另一个进程中能用吗?

一个进程中句柄在另一个进程中能用吗?

时间:2011-03-23

来源:互联网

.data
Dll_BenJvBing HWND ?
GouZiJvBing DWORD ?
.data?
ChuangKouJvBing HWND ?
XiaoXiBiaoShi DWORD ?


.code
GouZiGuoCheng proc XiaoXiChuLiMoShi:DWORD,wParam:DWORD,lParam:DWORD
invoke PostMessage,ChuangKouJvBing[u][/u],XiaoXiBiaoShi,wParam,lParam
  这里用了句柄ChuangKouJvBing,但这个钩子回调函数是在其他进程中使用的,但这个句柄是由安钩子函数的进程给出的,使用者进程能用吗?

invoke CallNextHookEx,edx,XiaoXiChuLiMoShi,wParam,lParam

xor eax,eax
ret
GouZiGuoCheng endp


AnZhuangGouZi proc _ChuangKouJvBing:DWORD,_XiaoXiBiaoShi:DWORD
push _ChuangKouJvBing
pop ChuangKouJvBing
push _XiaoXiBiaoShi
pop XiaoXiBiaoShi
invoke SetWindowsHookEx,WH_MOUSE,OFFSET GouZiGuoCheng,Dll_BenJvBing,NULL
mov GouZiJvBing,eax
ret
AnZhuangGouZi endp

ShanChuGouZi proc 
invoke UnhookWindowsHookEx,GouZiJvBing
ret
ShanChuGouZi endp

作者: hsh188d88452d2   发布时间: 2011-03-23

补充一点:
一个进程中句柄在另一个进程中能用吗? 
我是个新手,很菜的,就是有个问题,在钩子函数的使用中,钩子的回调函数是打包在DLL中映射进目标进程(远程的,不包括本地的)中运行,但安装钩子的函数却运行在本地进程中,而传入DLL共享数据区供目标进程使用的窗口句柄却由本地进程产生的,在远程进程中使用过程中这句柄能用吗?

作者: hsh188d88452d2   发布时间: 2011-03-23

handle是一种管理的资源。之所以管理,一个原因就是保护。随便把句柄内存拷到另外一个进程里就能用,那就糟糕了。

作者: iambic   发布时间: 2011-03-23

在保护模式下,进程与进程之间是不可见的,除非特权情况。

作者: masmaster   发布时间: 2011-03-23