Win32 Hooks DLL注入针对“任何CPU”构建的应用程序
我正在开发一个捕获所有用户交互的项目. MSDN告诉(
this)
我的问题是,如果应用程序是针对任何CPU构建的,会发生什么.我是否需要从针对Any CPU构建的DLL调用SetWindowsHookEx. 我写了HookLogger_32.exe加载HookFunctions_32.dll(包括x86)和HookLogger_64.exe加载HookFunctions_64.dll(都是x64)设置WH_CBT和WH_MOUSE全局(不是特定的线程). HookLogger_32.exe,HookLogger_64.exe,HookFunctions_32.dll和HookFunctions_64.dll都是用C语言编写的. 当我单击针对Any CPU构建的.NET应用程序时,会注入这些DLL(通过SetWindowHookEx). Windows操作系统挂起&我必须强行重启我的机器. 当针对x86或x64构建相同的.NET应用程序时,当我在HookLoggers(32位和64位)启动后单击应用程序时,一切正常. 这种未定义行为的任??何原因. 我工作的平台是64位机器.
您需要从具有相应bitnse的DLL注入 – 即“任何CPU”在运行时变为32位或64位…并且您的DLL必须与运行时位相匹配!
在你的情况下有用的东西被称为“并排组装”(同一组件的两个版本,一个32和另一个64位)……我想你会发现这些有用: > Using Side-by-Side assemblies to load the x64 or x32 version of a DLL 在这里,您可以找到一个很好的演练,其中包含许多有用的信息 – 它描述了.NET DLL wrapping C++/CLI DLL referencing a native DLL 更新: 要使挂钩变得非常简单和稳健,请参阅this well-tested and free library – 其中包括与AnyCPU配合使用! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows上的LLVM-Assembly语言中的Hello World
- windows – ProCurve 1800交换机问题
- Windows – DNS服务器配置问题,PTR记录
- windows – 如何将浏览器指向计算机上的特定NIC
- windows – Segoe UI替代方案:Segoe UI不支持亚洲语言
- 哪些编程语言可以生成自包含的窗口.exes?
- typescript – Element隐式具有’any’类型,因为类型’Wind
- 如何为类似WORM的行为设置文件夹的NTFS权限
- windows-server-2008-r2 – Windows Server 2008 R2 – 删除
- 在Windows上正常终止命令行应用程序