能力值:
( LV2,RANK:10 )
|
-
-
2 楼
http://hi.baidu.com/webxeyes/blog/item/d0d1773e33e79b3171cf6ca4.html
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
回楼上的,那贴子我收藏过了,我是新手看不懂 好像他是把进程所有钩子都卸载的了,我想单独去掉WH_debug应该怎么改,或者其他的一个钩子也行,有没有这种例子呢
,全部钩子的对于没接触过的我这样的新手有点难哈,先谢了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
那篇文章里 在void showInfo(PVOID pWin32Thread) 函数里面那个pClientBuf->PID就是钩子所在的进程的PID ,用来判断是否是你关心的进程。main函数的循环中用
pHookInfo->iHookType==WH_DEBUG来判断是否是你要卸载的钩子类型
如果两个条件都符合 就用UnhookWindowsHookEx((HHOOK)pHookInfo->hHandle);卸载钩子
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
那篇文章实在没看懂 ZwSystemDebugControl这个函数作用是什么都不知道?
不过要是只卸载 WH_DEBUG 的话可能还是可行的 加个判断吧
PHOOK_INFO::iHookType 这个注释是钩子类型做个判断就OK了
代码如下:
if(pHookInfo->iHookType==WH_DEBUG) //添加这个判断就OK乐 希望能解决
printf("%d",UnhookWindowsHookEx((HHOOK)pHookInfo->hHandle));//卸载消息钩子
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
那个方法好像是先找到user32中UserRegisterWowHandlers函数地址 这个函数的返回值是gSharedInfo的地址
它是一个全局变量,是一个结构体。这个结构体代码中有定义。该结构体中有一个指向内核中的句柄表的指针struct _HANDLEENTRY *aheList ,而句柄表中有所有消息钩子的句柄 。用ZwSystemDebugControl读内核空间取得其内容 取出其中的消息钩子句柄 用UnhookWIndowsHookEx卸载消息钩子
代码中是用特征码方式找到gSharedInfo的地址的值的 因为UserRegisterWowHandlers最后几条指令是
mov eax, 77D710A0//&gSharedInfo
pop ebp
retn 8
定位到该处,可以直接取得gSharedInfo的地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
这个不懂·······帮顶···········
|
|
|