为何HOOK会失败?

ahzhuo 2001-05-30 12:50:00
我使用《WINDOWS核心编程》中介绍的HOOK API的方法来HOOK API,HOOK "kernel32.dll","user32.dll", "gdi32.dll" 中的API都成功了,但是我HOOK "wsock32.dll" 中的API, 例如:"connect"函数,就不能产生效果,虽然跟踪的调试记录现实HOOK已经成功,不知道这是何道理?是不是某些API是不能够使用《WINDOWS核心编程》中的方法来HOOK的?
...全文
1622 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
admireO 2001-06-03
  • 打赏
  • 举报
回复
很想见见你的源码,呵呵
runbuff 2001-06-03
  • 打赏
  • 举报
回复
关注
verybigbug 2001-06-02
  • 打赏
  • 举报
回复
现在正在完善我的ApiFunSpy的功能,可以轻松Hook任何Api了。
(包括自己的API了---即支持PlugIn的功能)
heyongzhou 2001-06-01
  • 打赏
  • 举报
回复
关注
heyongzhou 2001-06-01
  • 打赏
  • 举报
回复
关注
lanchat 2001-06-01
  • 打赏
  • 举报
回复
我想,只要在动态库里hook一个自定义的函数,然后必须在调用原有的hook指向函数,遵循这个
原则,不会有问题的吧,释放后还要hook或操作系统的那个hook函数
lanchat 2001-06-01
  • 打赏
  • 举报
回复
应该且必须作成动态连接库,这是微软规定的,然后就简单了。
欢迎去http://lanchatx123.yeah.net看看:)那里有很多hook,有键盘和鼠标的啊,呵呵
lanchat 2001-06-01
  • 打赏
  • 举报
回复
去http://lanchatx123.yeah.net看看就知道了
ahzhuo 2001-05-30
  • 打赏
  • 举报
回复
有道理,获益匪浅.
verybigbug 2001-05-30
  • 打赏
  • 举报
回复
它可以是类Service的程序呀。
不是什么程序都得用CreateWindow的。有些程序连USER32.DLL都可以不要。
幸好反病毒软件用了USER32.DLL,否则,PostThreadMessage都可能没用。
----我还幸好没遇上。
不过,NT下Service程序就不能用这种方式进行监视啦。

没有界面的话,一般也用不着调用WndProc()了。你认为??
Kevin_qing 2001-05-30
  • 打赏
  • 举报
回复
茫然了~~~~~~
说老实话,这个东西我还没有用过:P
ahzhuo 2001-05-30
  • 打赏
  • 举报
回复
难道反病毒软件是不基于消息机制的吗?
verybigbug 2001-05-30
  • 打赏
  • 举报
回复
是的,这样只能介入有界面的程序,并且该程序还得动一下。
让它运行WndProc。然后你的DLL才能介入。
或者用PostThreadMessage强行让它运行。---要ThreadID的哦。
不过,对Service程序无效。---在98下基本上没问题。
对DOS程序和Console程序也无效。

你想监视反病毒软件软件的话,找到它的一个ThreadId,再
PostThreadMessage强行介入就可以了。

ahzhuo 2001-05-30
  • 打赏
  • 举报
回复
是使用的SetWindowsHookEx(...,NULL)插入的,这样插入难道不是HOOK到了所有进程?
verybigbug 2001-05-30
  • 打赏
  • 举报
回复
你是不是用SetWindowsHook介入的?
如果是的话,你就没有介入到反病毒软件中。
你可以用软件看一下你的DLL有没有在反病毒软件中。
如果没有的话,就说明你没有监视反病毒软件。。。。
ahzhuo 2001-05-30
  • 打赏
  • 举报
回复
Kevin_qing(Kevin)兄,verybigbug老兄还在关注吗?
ahzhuo 2001-05-30
  • 打赏
  • 举报
回复
Kevin_qing(Kevin)兄,两个版本就是这样做到二进制兼容的,我HOOK WSOCK32.DLL时得到了入口地址的,可能WSOCK32.DLL的CONNECT函数仅仅是条用WS2_32.DLL的CONNECT函数而已,但这样的话HOOK WSOCK32.DLL可以产生同样的效果.
ahzhuo 2001-05-30
  • 打赏
  • 举报
回复
不对,我是hook所有进程对connect的条用,这样即使反病毒软件hook了connect,我同样可以hook反病毒软件的connect,但是我这样作没有成功,现象是这样的:我的hook过程如果成功了,我将再自建的调试纪录中标记出来,而实际上通过标记看出,我已经hook成功了,但是我打开IE或者NetAnts进行网络活动,却没有经过我的拦截函数.还要说明一点,从前我使用dll替换技术来hook的时候,证实他们都条用了wsock32.dll的connect函数,这里的问题再哪里呢?
Kevin_qing 2001-05-30
  • 打赏
  • 举报
回复
dumpbin wsock32.dll ...

1103 41 rexec (forwarded to MSWSOCK.rexec)
1104 42 rresvport (forwarded to MSWSOCK.rresvport)
1108 43 s_perror (forwarded to MSWSOCK.s_perror)
18 44 select (forwarded to ws2_32.select)
19 45 send (forwarded to ws2_32.send)
20 46 sendto (forwarded to ws2_32.sendto)
1105 47 sethostname (forwarded to MSWSOCK.sethostname)
21 48 0000101C setsockopt
22 49 shutdown (forwarded to ws2_32.shutdown)
23 4A socket (forwarded to ws2_32.socket)

所以~它是没有真正的入口的~

你hook ws2_32.dll试试啊
verybigbug 2001-05-30
  • 打赏
  • 举报
回复
我是可以Hook反病毒软件的connect, recv, send等函数的。
不过,你的理解有点不对。
它不是阻止你。而是它先Hook connect,这样,IE调用connect时就调用
了反病毒软件的Hook函数。因为该地址写在反病毒软件的地址里,这样,
你就不能Hook了。(没有调用你的Hook函数)
加载更多回复(7)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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