如果一个名为SetWindowsHookEx的应用程序(例如我的,或者在外部进程中)可以让我解开钩子?请记住,不是我把钩子放在第一位,所以我没有任何形式的变量或指向原始钩子的指针。可能禁用使用SetWindowsHookEx运行时创建的钩子?
回答
我不认为你可以。您需要句柄与调用SetWindowsHookEx(注册钩)这样你就可以UnhookWindowsHookEx()
HMMS其取下顺便说一句,如果你的任何其他钩在注册前以某种方式可以创建自己的挂钩(即在应用程序启动期间),您可以在该钩子选择不呼叫CallNextHookEx(),从而防止后续挂钩被调用。可能值得一试。我怀疑这可能不适用于所有类型的钩子。
不,没有。
回到当天(NT时代之前),您可能已经拿到了一部与您获得的HHOOK一起玩的游戏,作为返回的HHOOK was a link in the chain of hooks被调用。即使那样我也不确定这是可能的。
今天,Windows并没有委托链中下一个钩子的调用给你(因此不推荐使用的参数为CallNextHookEx),HHOOK也不允许你伸手去掉你没有注册的钩子。
更恰当,没有好,支持的方式来做到这一点。
你可以安装一个rootkit,深入Windows内部并找到这个钩子链;但这显然会变得荒谬而且危险。
挂钩(通过无数的API钩子解决方案在那里之一,Detours似乎流行)SetWindowsHookEx和CallNextHookEx可以让你最有方式对符合预NT约定的应用程序。要点是在调用SetWindowsHookEx之后立即解除新挂钩,将任何传递的钩子(不属于你自己的钩子)解除挂钩到CallNextHookEx。为了保证一个“干净”的应用程序,你还必须模拟一些事件来强制任何已经调用的钩子被调用,以便它们可以被解除钩住。此外,只要遇到在过去8年中写入的将CallNextHookEx传递给NULL的任何应用程序,此政权就会失败。
所以,即使它是技术上可能的(也许)脱钩HHOOKs您的应用程序没有登记,你可能会更好过试图完成什么是你一个不同的,少可怕脆方式后是。
其实我觉得我发现是的,这是可能的。挂钩CallNextHook会给你挂钩的挂钩标识,你可以用它来挂钩。
- 1. SetWindowsHookEx(),挂钩不维护? (可能)
- 2. 能用PHP创建Apache钩子吗?
- 3. Joomla用户创建钩子
- 4. 在Subversion中创建标签时是否有可用的钩子?
- 5. ActiveRecord的钩子在数据库创建时创建的行
- 6. 创建Git标签时自动运行Git钩子
- 7. 创建命令行可运行罐子
- 8. 使用运行时库和可执行文件创建RPM包
- 9. 在运行时使用UIGestureRecognizer创建UIImage
- 10. 创建应用程序钩子?
- 11. 什么用户运行git钩子?
- 12. 暂时禁用挂钩?
- 13. 如何使用GCC创建运行时可见变量
- 14. 是否可以使用ExpandoObject创建运行时属性?
- 15. 创建MSBuild目标钩子
- 16. 运行db时不会创建数据库:使用RAILS_ENV创建
- 17. Python msn钩子 - 可能吗?
- 18. 运行时禁用datagridviewcombobox
- 19. 如何运行使用maven创建的可执行jar文件?
- 20. 使用PyInstaller创建的Python可执行文件不会运行
- 21. 保护iOS应用程序免于运行时钩子
- 22. 创建运行时
- 23. 是否可以创建“class”运行时?
- 24. 使用挂钩和SQLAlchemy创建表格
- 25. 在运行时更改变量而不使用C/C++中的钩子?
- 26. 如何使用代理在c#中创建钩子
- 27. 在运行时创建用户控件
- 28. 使用预提交钩子运行Django测试
- 29. 应该使用哪个钩子在prestashop中运行cron作业?
- 30. 创建用户时禁用邀请电子邮件
尽管目前我没有解决问题的方法,但我认为这应该是可能的。基本上每个AntiSpyware/Virusscanner都必须使用此功能或等效功能来查找和解除键盘记录程序。好问题! – merkuro 2009-06-16 10:15:43
刚刚找到一个名为“Rootkit Unhooker 3.8”的程序。尽管我认为这个页面是合法的,但你可能想要从一个更老的版本下载一个旧版本的代码:http://www.rootkit.com/newsread.php?newsid=902更值得信赖的网站。 – merkuro 2009-06-16 10:29:58