give me a global hook example

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:40:07
如题,给我一个hook其他进程的实例,dll.我只有这么点分了...拜托类...
下面那个写的那么长长的....是复制的话给个原地址,分给你...谢谢喽...
不是复制的话多点注释,感激涕零啊... 百度突然多了30分,剩也没用补上再说...

不好意思啊,刚看到你的回复
http://hi.baidu.com/sjk2046/blog/item/c157503458809348251f14bd.html
我是在这个人的博客上看到的.
另外这个博客也有很多实用的电脑知识的
http://blog.zol.com.cn/log_list.php?userid=cjg1823
希望这些能帮到楼主...谢谢了

消息钩子是由Win32子系统提供,其核心部分通过NtUserSetWindowsHookEx为用户提供了设置消息钩子的系统服务,用户通过它注册全局钩子。当系统获取某些事件,比如用户按键,键盘driver将扫描码等传入win32k的KeyEvent处理函数,处理函数判断有无相应hook,有则callhook。此时,系统取得Hook对象信息,若目标进程没有装载对应的Dll,则装载之(利用KeUserModeCallback“调用”用户例程,它与Apc调用不同,它是仿制中断返回环境,其调用是“立即”性质的)。
进入用户态的KiUserCallbackDispatcher后,KiUserCallbackDispatcher根据传递的数据获取所需调用的函数、参数等,随后调用。针对上面的例子,为装载hook dll,得到调用的是LoadLibraryExW,随后进入LdrLoadDll,装载完毕后返回,后面的步骤就不叙述了。
从上面的讨论我们可以得出一个最简单的防侵入方案:在加载hook dll之前hook相应api使得加载失败,不过有一个缺陷:系统并不会因为一次的失败而放弃,每次有消息产生欲call hook时系统都会试图在你的进程加载dll,这对于性能有些微影响,不过应