cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:3398回复:20

WINDOWS api 全局钩子的实现过程是什么?

楼主#
更多 发布于:2005-04-05 15:19
如果想做一个WINDOWS api 全局钩子,那么实现步骤是什么?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-05 16:02
是你自己做一个,还是利用系统提供的全局钩子
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-05 19:57
这个???很简单呀?是不是没问清楚?再详细些!
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-05 21:50
就是挂钩windows的API函数,在应用层做的。比如挂钩CreateProcess,实现的步骤是什么呢?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-06 09:24
就是挂钩windows的API函数,在应用层做的。比如挂钩CreateProcess,实现的步骤是什么呢?

其实就是远程注入DLL,或者直接改DLL文件
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-06 09:28
顺便看一下
http://www.luocong.com/articles/show_article.asp?Article_ID=25
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-07 16:49
谢谢。不过老罗的只能修改自己程序的API,如果我想劫持系统全局的MessageBoxIndirectA如何实现呢?我只想知道步骤。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-07 17:53
谢谢。不过老罗的只能修改自己程序的API,如果我想劫持系统全局的MessageBoxIndirectA如何实现呢?我只想知道步骤。

那直接修改user32.dll文件,或者在核心修改user32.dll页面的属性,否则会遭遇copy on write
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-07 19:54
能详细一点么?比如我的劫持代码是一个dll还是一个exe,劫持代码如何插入到MessageBoxIndirectA前执行呢?这个文件好像是系统保护的啊
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-08 10:00
能详细一点么?比如我的劫持代码是一个dll还是一个exe,劫持代码如何插入到MessageBoxIndirectA前执行呢?这个文件好像是系统保护的啊

看看这个帖子,对你会有启发
http://www.driverdevelop.com/forum/viewthread.php?tid=88342
由于有重定位的问题,你要通用的话,建议你直接修改磁盘上的DLL文件
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-04-10 16:39
我看了一下,是不是要想劫持系统全局的函数就只有修改系统dll一种办法了呢?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-04-11 09:32
我看了一下,是不是要想劫持系统全局的函数就只有修改系统dll一种办法了呢?

或者是HOOK Loadlibrary, LoadlibraryEx
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-04-12 09:13
[quote]我看了一下,是不是要想劫持系统全局的函数就只有修改系统dll一种办法了呢?

或者是HOOK Loadlibrary, LoadlibraryEx [/quote]
这是API函数,那又回到老问题了,如何Hook呢?只有修改user32.ddl了吧。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-04-12 10:09
一般Hook其实都有个默认,即Kernel32.dll,user32.dll都会家载到默认地址,在不同进程中的虚拟地址是相同的。而且这个默认也确实在起作用。所以在这样的前提下,实现全局hook,可以在核心中找到Kernel32.dll,user32.dll模块占用的页面,将其属性改为可写,这样可以避免COW,通过更改要Hook函数入口,这样便实现了Hook
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-04-12 19:54
谢谢!
...所以在这样的前提下,实现全局hook,可以在核心中找到Kernel32.dll,user32.dll模块占用的页面,...

从应用层能不能找到其占用的页面?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-04-13 10:57
谢谢!
[quote]...所以在这样的前提下,实现全局hook,可以在核心中找到Kernel32.dll,user32.dll模块占用的页面,...

从应用层能不能找到其占用的页面? [/quote]
可以找到,其实在Windows调用我们应用程序时都事先压入堆栈中一个Kernel32.dll的函数的地址,我们其实可以不用ExitProcess返回Windows的,可以用ret.这个你可以看一下Windows的SEH例外处理。然后找到这个地址后,由于Kernel32.dll肯定以整页面开头,于是在内存中按整页面在这个地址前面搜,找到有名的在DOS中就声名显赫的MZ,嘿嘿。。。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-04-13 18:46
最后一个问题:应用层API的全局挂钩和驱动层的NativeAPI的Hook在功能上有什么区别?各自的优缺点是什么?
总结一下吧!谢谢。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-04-14 10:10
最后一个问题:应用层API的全局挂钩和驱动层的NativeAPI的Hook在功能上有什么区别?各自的优缺点是什么?
总结一下吧!谢谢。

其实我上面是个歪门邪道,正经的方法是用GetProcAddress,但有时我觉得歪门邪道有时必不可少,DOS下我就用这个来搜索PSP,对付各版本差异

这个
最后一个问题:应用层API的全局挂钩和驱动层的NativeAPI的Hook在功能上有什么区别?各自的优缺点是什么?
问题太大,非我一个能回答,我觉得应用层Hook和驱动层的NativeAPI的Hook在功能上是看个人需求,如果能在应用层做,尽量不要在核心去做,这样不用带驱动,因为hook的重入是非常要注意的问题
这个问题请tiamo进来总结一下
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-04-14 10:43
谈谈自己的看法也可以啊!
我没有做过应用层API的挂钩,只是实验了Native API的hook,现在在想为何要在驱动做,如果能在应用层完成的功能,在应用层不是更好么?驱动时不时的蓝屏。而应用层则比较稳定。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-04-14 15:15
谈谈自己的看法也可以啊!
我没有做过应用层API的挂钩,只是实验了Native API的hook,现在在想为何要在驱动做,如果能在应用层完成的功能,在应用层不是更好么?驱动时不时的蓝屏。而应用层则比较稳定。

我也觉得能在应用层做,最好不要到核心里去做,但核心去作可以控制得更底层,我做的Native API Hook,跟系统倒不冲突,但更防毒软件老冲突,因为防毒软件必须这样做,才能更有特权,更低级.我们大可不必凡是都要到核心实现.
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
上一页
游客

返回顶部