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

Posted

技术标签:

【中文标题】从任务管理器中隐藏 C# 程序?【英文标题】:Hide a C# program from the task manager? 【发布时间】:2009-07-31 12:38:32 【问题描述】:

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

编辑: 感谢您的热烈响应!好吧,我并不打算做一些令人毛骨悚然的事情。只是想和我的朋友打赌,我可以在他不注意的情况下做到这一点。而且我自己也不是一个能够编写 rootkit 的极客,正如有人建议的那样,尽管我很想知道如何去做。

【问题讨论】:

你为什么要做这样的事情? 我不知道答案,但如果我知道,我会先询问您这样做的原因,然后再解释如何去做。 是的,有:不要启动它 我想我们都知道需要什么样的程序来做这个 X-) 我认为这是一个有效且有趣的问题。 【参考方案1】:

据我所知,不应该有。任务管理器的重点是允许用户检查进程等。

如果用户应该能够做到这一点,他们应该能够找到您的程序。如果他们不应该在任务管理器中闲逛,则组策略应该阻止这种情况 - 而不是您的程序。

【讨论】:

完全同意。我看不出一个程序应该实现的任何理由。 是的,超额完成的程序实在是太烦人了。 如果他们“实现”的是垃圾邮件、擦除您的硬盘等,那么他们当然是……限制程序可以做什么是完全合理的。 原因:例如某些防病毒或远程应用程序隐藏了他们的任务。【参考方案2】:

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

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

他们都有起起伏伏

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

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

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

谢天谢地,几乎所有体面的防病毒软件都会发现这一点,所以如果你想偷偷摸摸地做一些事情,你必须学会​​绕过它(提示:他们使用二进制签名)

我从未使用过方法 1,但方法 2 在 VB.Net 应用程序中对我有用。

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

希望对我有所帮助,我的建议是,如果你对这类东西感兴趣,就学 C++。

【讨论】:

【参考方案3】:

您可以将您的程序设为服务,然后它会显示为“svchost”。不仅如此,还有更多内容,但这应该会给您一个提示,让您朝着正确的方向前进。

【讨论】:

【参考方案4】:

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

【讨论】:

并非如此 - 您仍然可以在任务管理器中看到可执行文件的路径。 @frou:是的,但如果你只是将它命名为 svchost.exe 并将其放在 c:/Windows 下的某个位置,大多数人会认为它是一个普通的 Windows 应用程序。 废话 - 简单地称它为 svchost.exe 是 samoz 建议的更混乱/效率更低的版本 :) +1 - 我认为这是混淆恶意软件的更常见技术之一。【参考方案5】:

你不应该隐藏它,但你可以阻止用户杀死进程。

见Chris Smith's answer to this question。

【讨论】:

以上是关于从任务管理器中隐藏 C# 程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在winXP中的任务管理器中隐藏程序?

从任务管理器中隐藏 Android 应用程序 [重复]

从任务管理器中隐藏自定义应用程序

VB.Net从任务管理器中隐藏进程[重复]

从任务管理器中隐藏进程

从任务管理器中隐藏进程