从任务管理器隐藏C#程序?

有没有办法从Windows任务管理器隐藏C#程序?

编辑:感谢压倒性的回应! 好吧,我不打算做一些怪异的事情。 只是想和我的朋友一起赢得赌注,我可以在没有他注意的情况下做到这一点。 我自己也不是一个能够编写rootkit的极客,正如有人建议的那样,虽然我很想知道如何去做。

不是我知道 – 而且不应该。 任务管理器的要点是允许用户检查进程等。

如果用户应该能够这样做,他们应该能够找到您的程序。 如果他们不应该在任务管理器中闲逛,组策略应该阻止 – 而不是你的程序。

不要指僵尸,但我想我可以提供一些有用的信息

如果你想隐藏一个应用程序有两种方法(我可以想到atm)。

他们都有起伏

[1] SSDT表挂钩 – 基本上你必须将表的MDL设置为可写,用函数的地址覆盖NtQuerySystemInformation (iirc)的地址,并在过滤结果后调用原始函数。

这种方法不能很好地满足您的需求,因为挂钩函数总是需要在内存中,并且需要编写内核模式驱动程序。 这是一个有趣的事情,但调试很痛苦,因为exception意味着BSOD。

[2] 直接内核对象操作(DKOM) – 进程列表是一个双向链表,使用内核模式驱动程序,您可以更改进程上方和下方的记录指针,以指向您的进程。 这仍然需要使用内核模式驱动程序,但是可以轻松下载包含exe和服务的FU等rootkit。 exe可以从你的应用程序内部作为子进程调用(在FU的发布版本中,至少我找到的那个,有一个我必须修复的错误,如果隐藏的应用程序退出计算机将BSOD,它是一个微不足道的修复)。

幸运的是,这几乎可以被任何体面的杀毒软件捕获,所以如果你想偷偷摸摸地做一些事情,你将不得不学会解决这个问题(提示:他们使用二进制签名)

我没有使用方法1,但方法2从VB.Net应用程序为我工作。

第三种可能的选择是将应用程序创建为Windows服务,这将默认显示在任务管理器中,但我愿意打赌有一种方法可以告诉它不显示在那里,因为还有很多其他的没有出现在任务管理器中的服务。

希望我能帮助一点,我的建议是,如果你对这类东西感兴趣,可以学习C ++。

您可以使您的程序成为一项服务,然后它将显示为“svchost”。 除此之外还有一点点,但这应该会给你一个正确方向的暗示。

我不知道有任何方法可以将它隐藏在任务管理器中,但你可以通过将其显示为“svchost.exe”来伪装它。 它会与所有其他人(通常有几个)混在一起,并且会变得无法区分。

您不应该隐藏它,但可以阻止用户终止该进程。

请参阅Chris Smith对此问题的回答 。