有关SetWindowsHookEx()和挂钩的问题
这是一些背景信息.我正在通过AppInit_DLLs注册表项替换已在dll注入技术中使用的dll.它的目的是出现在每个进程中并设置挂钩到GDI32.dll以收集有关打印的信息.这是一种时髦的方式来获得我们想要的东西. .dll本身已经超过10年了(用Visual Studio 97编写),我们想用比注入的dll更少侵入性的东西替换它.
似乎SetWindowsHookEx()可能正是我们正在寻找的.我一直遇到一些麻烦,但我也和同事讨论过这棵树是否值得咆哮.以下是我们无法确定的一些问题: >当我们从一个dll中挂起一个例程,例如来自GDI32.dll的StartDoc()时,每次任何其他进程使用该dll时,我们是否真的收到通知?这是我们使用注入的.dll获得的功能,我们需要相同的功能. 解决方法
>是的.
>一般来说,它是前者:它在进程的上下文中执行,其事件正在挂钩. 成功调用SetWindowsHookEx后,操作系统会自动将钩子DLL(包含回调函数的DLL)注入到满足指定钩子类型要求的所有目标进程的地址空间中. (当然,挂钩代码不一定立即注入.) 此一般规则的例外是低级键盘和鼠标挂钩(WH_LL_KEYBOARD和WH_LL_MOUSE).由于这些钩子类型没有注入到客户端进程中,因此在最初调用SetWindowsHookEx的同一线程中调用回调. 对于其他钩子类型,您在问题中表达的关注是完全正确的.您需要在C或C中编写这些钩子DLL.当然,应用程序的其余部分仍然可以用托管语言编写.唯一重要的是钩子DLL. 您可以考虑查看Microsoft Detours或EasyHook. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – 我可以删除并重新添加一
- .net – 很少或很多小dll
- wcf – 使用Microsoft.Data.Services.Client.dll
- 是否有任何图像比较服务器软件,由OpenCV(Windows
- windows-server-2008 – 用于托管的EC2与VPS [已
- Windows – Internet Explorer – SID S-1-5-5-0
- 配置 – 从WIX设置更新app.config?
- 允许Windows客户端使用NTLMv1的含义?
- windows-server-2008 – NAT上的域控制器
- 应用内购买 – 购买Windows Phone应用内商品的截