最近没事,研究一下hook api,想做一个进程保护功能。
已经实现对OpenProcess的Hook,可以防止进程被一般进程结束,当然也可以防止进程被任务管理器通过结束进程来结束。
但问题是我还想实现另外两个功能:
1.如何防止通过窗体结束我的进程? 任务管理器里的“应用程序”标签下的“结束任务”(注意不是结束进程哦)就可以轻松的结束任务,然后进程也就挂了。我想知道它是通过哪个主要的API最终结束我的进程的。
我想要让任务管理器找不到我的窗体,试过Hook EnumChildWindows,FindWindowW,但好像不行啊。Hook了SendMessage WM_Close等几个也不行啊。
2.我想要隐藏进程,我要Hook哪个API呀?
发出了这么长时间,看来这个问题无法彻底解决了。
我自己发现了一种方法,只是权宜之计。
那就是Hook住IsWindowVisible,然后在调用时判断这个hwnd是否属于自己的进程,实现隐藏自己的窗体。如果是返回false,否则返回调用原函数。
隐藏进程国外的介绍文档还算比较多,我自己再研究一下吧。
看下如下博客:http://www.cnblogs.com/andy1987/p/3311111.html ,也许对你有帮助,
这个帖子我看了,对于我的问题好像并没有帮助,还是无法阻止任务管理器通过“结束任务”将有窗体的进程结束。
easyhook,最近再用,很适合用.NET的人们
我的Hook需要稳定,我选用了微软的detours
64位呢?
@秦时明月-Moon.Net塑造Orm经典: 64位花点钱呗,貌似这个64位要收费的。暂时还没这个需求。
@沧海一杰: 告诉你easyhook真的很稳定,很好用
@秦时明月-Moon.Net塑造Orm经典: 好吧,你这么说,我可以看看,但微软的操作系统,论稳定性,我觉得微软应该是首选吧。以前写一个杀毒软件,win32层的hook api,电脑运行一天以上,一般都会蓝屏一次,但用微软的就没有这种情况。