winapi – 为商业应用程序挂钩Win32 API的推荐方法是什么?
对于商业应用程序中使用的API挂钩库或代码,您有何建议?
我看过微软Detours,看起来非常好,但绝对超出预算,我期待从我的应用程序中获利. 是否有任何库可以提供WinXP和Vista之间的兼容性(如果没有太多要求,可以使用Windows 7)?是否有人在商业产品中使用这样的图书馆?
在整个系统范围内,Win32中的API挂钩实际上是不可能的.您可以通过将DLL注入每个进程然后从内部修补每个进程来近似它.您可以使用IAT修补(修补调用二进制文件的地方)或Detours风格的修补程序(修补被调用者).
修补调用程序(IAT修补)意味着您需要枚举在进程中加载??的每个DLL并分别修补每个DLL.您还需要挂钩LoadLibrary以修补任何即时加载的新DLL. 修补被调用者(Detours)的优点是您只需要修补一个位置以使钩子适用于整个过程. 即使您从共享系统DLL挂钩API,也必须执行每进程修补;操作系统将调用copy-on-write,当您修补系统DLL时,将为该进程提供要修补的私有副本. DLL注入变得有点令人讨厌,并且有几种技术: 另一种技术是在内核模式下挂钩系统服务.这需要编写设备驱动程序,但它基本上是Sysinternals Process Monitor使用的技术(或者至少是一次).由于PatchGuard和驱动程序签名要求,这是64位Vista和Win7的问题.您可以使用file system filter驱动程序监视某些文件系统活动. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 通过cmd打开文件并在特定编辑器中显示
- 有没有办法循环使用Windows 8应用程序并将其全部
- windows-server-2012 – Get-NetAdapter Powersh
- 使用免费工具开发轻量级(无运行时)基于Windows的
- windows-server-2008-r2 – 域控制器DCdiag错误
- Windows 下的rabbitmq安装与命令
- windows-phone-7 – 市场应用程序图标用法
- MSBuild由于错误APPX0002失败:任务’GenerateAp
- windows – 执行批处理脚本在Jenkins管道作业中不
- windows – SVN:将本地更改合并到其他工作副本中