当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中的任务管理器中隐藏进程?

如何解决《如何在C#中的任务管理器中隐藏进程?》经验,为你挑选了6个好方法。

我需要在任务管理器中隐藏进程.它适用于Intranet场景.所以,一切都是合法的.:)

请随意分享您拥有的任何代码(最好使用C#)或任何其他技术或与此路线相关的任何问题.

Update1:大多数用户具有管理员权限,以便运行一些旧版应用程序.因此,其中一个建议是将其隐藏在任务管理器中.如果还有其他方法可以阻止用户杀死进程,那就太棒了.

Update2:删除对rootkit的引用.不知何故,这篇文章看起来很消极.



1> Jon Skeet..:

不要试图阻止它被杀 - 你不会去管理它.相反,让它定期呼叫家庭网络服务.当webservice注意到客户端"静默"时,它可以ping机器以查看它是否只是一个重启问题,并向管理员(或任何人)发送一封电子邮件来管理任何已经杀死该进程的人.



2> Chris Smith..:

没有支持的方法来实现这一目标.可以在任何权限级别读取进程列表.如果您希望隐藏进程甚至是管理员,那么这是双重支持的.

要使其工作,您需要编写内核模式rootkit来拦截对NtQuerySystemInformation的调用,以便SystemProcessInformation信息类无法列出您的隐藏进程.

拦截系统调用是很难做安全,以及64位Windows内核走自己的方式来防止这种是可能的:试图修改瞬间蓝色屏幕上调用表的结果.在这些平台上,这将非常困难

这是一个试图做类似事情的rootkit的例子(并且有几个严重的问题).



3> Chris Smith..:

如果要阻止用户从任务管理器中删除该进程,您只需在进程上使用安全描述符即可拒绝终止对每个人的访问.管理员在技术上仍然可以通过获取进程的所有权并重置DACL来终止进程,但是没有任何接口可以从任务管理器执行上述任一操作.Process Explorer可能有一个接口.

进程启动时,使用SetKernelObjectSecurity并DACL_SECURITY_INFORMATION使用当前进程句柄.设置ACL为零的DACL.这将拒绝所有人的访问权限,包括那些试图通过任务管理器结束您的流程的人.

以下是一个更改进程所有者的示例:

SECURITY_DESCRIPTOR sd;
ACL dacl;
SID_IDENTIFIER_AUTHORITY ntauth = SECURITY_NT_AUTHORITY;
PSID owner;

assert(InitializeAcl(&dacl, sizeof dacl, ACL_REVISION));

assert(AllocateAndInitializeSid(&ntauth, 1, SECURITY_LOCAL_SYSTEM_RID, 0,0,0,0,0,0,0, &owner));

assert(InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION));

assert(SetSecurityDescriptorDacl(&sd, TRUE, &dacl, FALSE));

assert(SetSecurityDescriptorOwner(&sd, owner, FALSE));

assert(SetKernelObjectSecurity(GetCurrentProcess(), DACL_SECURITY_INFORMATION | OWNER_SECURITY_INFORMATION, &sd));

assert(FreeSid(owner) == NULL);

不幸的是,它似乎没有效果.我仍然可以关闭该过程(尽管不是有限的用户).也许任务管理器正在取得所有权或调用其他一些权限来杀死进程?我似乎记得在以前版本的Windows中工作(我正在测试2003),但我可能会弄错.



4> Marcin..:

我希望你不能.

更新:鉴于该方案,我认为您可能最好在不同的管理员帐户下运行它.这可能有助于提醒人们他们不应该杀死这个过程.



5> Chris Pietsc..:

或者,您可以编写一个小的"检查器"实用程序来检查应用程序是否正在运行,如果不是,它会自动启动它.然后将代码添加到应用程序以检查执行相同操作的"检查程序"实用程序.这样,如果一个终止,则另一个启动它.我似乎病毒就是这样做的,它似乎非常有效.



6> 小智..:

编写驱动程序-您可以使用ObRegisterCallbacks注册过程对象访问通知。当DesiredAccess包含您不喜欢的访问权限(例如进程终止或写入进程内存)时,返回STATUS_ACCESS_DENIED。

http://msdn.microsoft.com/zh-CN/library/windows/hardware/ff558692(v=vs.85).aspx

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有